--- a/src/JavaMethod.st Tue Oct 25 08:28:37 2011 +0000
+++ b/src/JavaMethod.st Tue Oct 25 08:50:18 2011 +0000
@@ -1128,6 +1128,20 @@
"Created: / 18-10-2010 / 19:10:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+numJArgs
+
+ ^self numberOfJavaArgs
+
+ "Created: / 25-10-2011 / 10:50:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+numJavaArgs
+
+ ^self numberOfJavaArgs
+
+ "Created: / 25-10-2011 / 10:50:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
numLocals
^super numVars.
"/ numLocals isNil ifTrue:[^ 0].
@@ -1146,6 +1160,25 @@
"Modified: / 13.1.1998 / 17:34:37 / cg"
!
+numberOfJavaArgs
+
+ ^(accessFlags bitAnd: 16r00FF0000) rightShift: 16.
+
+ "Created: / 25-10-2011 / 10:45:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+numberOfJavaArgs: nArgs
+
+ ( nArgs > 16rFF ) ifTrue:[
+ ArgumentError raiseRequestWith:self errorString:'too many args method - ', nArgs printString.
+ ].
+
+ accessFlags := accessFlags bitOr:
+ ((nArgs bitAnd: 16rFF) bitShift: 16)
+
+ "Created: / 25-10-2011 / 10:43:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
originalMethodIfWrapped
"return the method the receiver is wrapping - none here"
@@ -1706,17 +1739,20 @@
setName:nameString descriptor:aString
- |numArgs tooManyArgs returnType|
+ |numArgs numJArgs returnType|
selector := (nameString , aString) asSymbol.
self setDescriptor:aString.
- numArgs := self class numArgsFromSignature:aString.
- (tooManyArgs := (numArgs > self class maxNumberOfArguments)) ifTrue:[
- numArgs := 0.
- ].
- self numberOfArgs:numArgs.
- returnType := self class typeFromSignature:aString in:nil.
+ numJArgs := self class numArgsFromSignature:aString.
+ (numJArgs > self class maxNumberOfArguments) ifTrue:[
+ numArgs := 1.
+ ] ifFalse:[
+ numArgs := numJArgs.
+ ].
+ self numberOfArgs:numArgs.
+ self numberOfJavaArgs:numJArgs.
+ returnType := self class typeFromSignature:aString in:nil.
"/ for the convenience of the VM, also mirror the return type in
"/ the flags ...
@@ -1732,11 +1768,6 @@
]
]
].
- tooManyArgs ifTrue:[
- ^ ArgumentError
- raiseRequestWith:self
- errorString:'too many args in method'
- ].
"Created: / 14-08-2011 / 19:41:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!