Mantis Bugtracker

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0002918 [Squeak] Compiler feature always 02-19-06 15:37 06-28-06 01:17
Reporter MarcusDenker View Status public  
Assigned To
Priority low Resolution open  
Status new   Product Version 3.9
Summary 0002918: number of args for message sends can be extended to 31
Description Dan Ingalls mail to squeak-dev:

|There is no fix for this problem. In Squeak, the number of parameters for a method invocation is
|limited to 15.

I think there may be a relatively simple solution for extending the number of arguments to 31. I realize that it is only a factor of two, and folks may consider it not worth worrying about this unless all limits are to be relieved but, if I'm correct, I'd be remiss if I didn't point this out.

 It looks to me like the method headers can take another bit of argCount as is, and the double-extended-do-anything bytecode can specify up to 31 arguments on a send. I added the DEDA bytecode for other reasons, and may just never have bothered extending argcount at the time, figuring such code is, um, not generally found in Smalltalk programs.

So if I'm not mistaken about the argCount bits in the method header and the DEDA bytecode, all that remains is a bit of compiler work and a few methods in CompiledMethod which shouldn't add up to more than an hour or two for someone who knows the territory.
Additional Information
Attached Files  ByteCodeLimit-workaround-prereq.1.cs [^] (7,867 bytes) 06-28-06 01:13
 ByteCodeLimit-workaround-core.1.cs [^] (9,299 bytes) 06-28-06 01:13
 ByteCodeLimit-workaround-test.1.cs [^] (866 bytes) 06-28-06 01:14

- Relationships

- Notes
(0005398 - 459 - 513 - 513 - 513 - 513 - 513)
nicolas cellier
06-28-06 01:17

Maybe there is room in bytecodes for 31 arguments, but i did not see any in CompiledMethod header... and as far as i understand, it would need vm hacking.

I propose another approach: transparently compile the bytecode passing a single array of arguments.

I have a patch working correctly yet, but load order is important
1) prereq
2) core
3) test

TODO: make debugger and decompiler work also (they are not aware of the single array argument trick)

- Issue History
Date Modified Username Field Change
02-19-06 15:37 MarcusDenker New Issue
06-28-06 01:13 nicolas cellier File Added: ByteCodeLimit-workaround-prereq.1.cs
06-28-06 01:13 nicolas cellier File Added: ByteCodeLimit-workaround-core.1.cs
06-28-06 01:14 nicolas cellier File Added: ByteCodeLimit-workaround-test.1.cs
06-28-06 01:17 nicolas cellier Note Added: 0005398

Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
38 total queries executed.
27 unique queries executed.
Powered by Mantis Bugtracker