Finished uncached trampoline. refactoring-vmdata
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 31 Jan 2013 13:45:17 +0000
branchrefactoring-vmdata
changeset 2019 e1291a81f215
parent 2018 9bc559a01353
child 2020 985ca70cdcad
Finished uncached trampoline. Now JavaNativeMethod is not a Java method but Smalltalk methods. When created, a trampoline code is installed so when invoked, it dispatches back to JavaMethod>>nativeMethodInvokation: like before. The next step is to install optimized trampoline after first invocation.
JavaClassReader.st
JavaNativeMethod.st
Make.proto
bc.mak
extensions.st
libjava.rc
stx_libjava.st
--- a/JavaClassReader.st	Thu Jan 31 13:10:37 2013 +0000
+++ b/JavaClassReader.st	Thu Jan 31 13:45:17 2013 +0000
@@ -2255,7 +2255,7 @@
     "Created: / 15-04-1996 / 16:48:49 / cg"
     "Modified: / 25-09-1999 / 23:16:25 / cg"
     "Modified: / 28-10-2011 / 16:56:48 / m"
-    "Modified: / 02-11-2012 / 22:06:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 31-01-2013 / 13:27:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 readMethodsFor:aJavaClass
@@ -2426,4 +2426,5 @@
     ^ '§Id§'
 ! !
 
+
 JavaClassReader initialize!
--- a/JavaNativeMethod.st	Thu Jan 31 13:10:37 2013 +0000
+++ b/JavaNativeMethod.st	Thu Jan 31 13:45:17 2013 +0000
@@ -78,9 +78,12 @@
 !
 
 initialize
-    self flags: ((self flags bitClear: Behavior flagMethod) bitOr: Behavior flagJavaMethod).
+    "/self flags: ((self flags bitClear: Behavior flagMethod) bitOr: Behavior flagJavaMethod).
+    self flags: ((self flags bitClear: Behavior flagJavaMethod) bitOr: Behavior flagMethod).
     "
-    self flags: ((self flags bitClear: Behavior flagJavaMethod) bitOr: Behavior flagMethod).
+    self flags bitAnd: Behavior flagJavaMethod
+    self flags bitAnd: Behavior flagMethod
+
     "
     "By default, do not cache native impls while developing"
     CacheNativeImplementation := Smalltalk isStandAloneApp.
@@ -90,7 +93,18 @@
     "
 
     "Modified (comment): / 03-11-2011 / 10:48:12 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 31-01-2013 / 13:06:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 31-01-2013 / 13:41:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaNativeMethod class methodsFor:'instance creation'!
+
+new
+    "Redefined again, since since trampoline methods need
+     literals"
+
+    ^ self basicNew:1.
+
+    "Created: / 31-01-2013 / 13:26:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaNativeMethod class methodsFor:'cleanup'!
@@ -244,6 +258,29 @@
     "Modified: / 20-01-2013 / 20:56:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+installTrampoline: trampoline
+    | l m |
+
+    m := trampoline asByteCodeMethod.
+    m ~~ trampoline ifTrue:[
+        "Cache it"
+        self class methodDictionary at: trampoline selector put: m.
+    ].
+    l := m literals.
+    1 to: l size do:[:i|
+        (l at: i) == #__placeholder__ ifTrue:[
+            l at: i put: self.
+        ].
+    ].
+    m isNil ifTrue:[
+        self error: 'Cannot find trampoline method'.
+    ].
+    self byteCode: m byteCode.
+    self literals: l.
+
+    "Created: / 31-01-2013 / 13:31:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 nativeMethodTemplate
 
     ^'%1 %2
@@ -366,10 +403,7 @@
     ) at: aNumber + 1.
 
     m := self class compiledMethodAt: sel.
-    m isNil ifTrue:[
-        self error: 'Cannot find trampoline method'.
-    ].
-    self byteCode: m byteCode.
+    self installTrampoline: m.
 
     "Created: / 31-01-2013 / 12:44:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
@@ -377,97 +411,97 @@
 !JavaNativeMethod methodsFor:'private-trampolines'!
 
 trampolineUncached
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:55:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:55:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:55:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:55:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:55:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4 _: a5
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:55:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4 _: a5 _: a6
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:55:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:55:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:56:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:56:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:56:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10 _: a11
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:56:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10 _: a11 _: a12
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:56:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10 _: a11 _: a12 _: a13
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:56:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10 _: a11 _: a12 _: a13 _: a14
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:56:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 trampolineUncached: a1 _: a2 _: a3 _: a4 _: a5 _: a6 _: a7 _: a8 _: a9 _: a10 _: a11 _: a12 _: a13 _: a14 _: a15
-    ^self nativeMethodInvokation: thisContext.
+    ^#__placeholder__ nativeMethodInvokation: thisContext.
 
     "Created: / 31-01-2013 / 12:56:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
--- a/Make.proto	Thu Jan 31 13:10:37 2013 +0000
+++ b/Make.proto	Thu Jan 31 13:45:17 2013 +0000
@@ -284,7 +284,7 @@
 $(OUTDIR)ProxyMethodJavaMethodInvocationNode.$(O) ProxyMethodJavaMethodInvocationNode.$(H): ProxyMethodJavaMethodInvocationNode.st $(INCLUDE_TOP)/stx/libjava/ProxyMethodMethodInvocationNode.$(H) $(INCLUDE_TOP)/stx/libjava/ProxyMethodInvocationNode.$(H) $(INCLUDE_TOP)/stx/libjava/ProxyMethodNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodJavaTypeCheckNode.$(O) ProxyMethodJavaTypeCheckNode.$(H): ProxyMethodJavaTypeCheckNode.st $(INCLUDE_TOP)/stx/libjava/ProxyMethodTypeCheckNode.$(H) $(INCLUDE_TOP)/stx/libjava/ProxyMethodConditionNode.$(H) $(INCLUDE_TOP)/stx/libjava/ProxyMethodNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNativeMethod.$(O) JavaNativeMethod.$(H): JavaNativeMethod.st $(INCLUDE_TOP)/stx/libjava/JavaMethodWithHandler.$(H) $(INCLUDE_TOP)/stx/libjava/JavaMethodWithException.$(H) $(INCLUDE_TOP)/stx/libjava/JavaMethod.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic2/BooleanArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/BitArray.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/Delay.$(H) $(INCLUDE_TOP)/stx/libbasic/Process.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/SmallInteger.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic3/WrappedMethod.$(H) $(INCLUDE_TOP)/stx/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic2/ZipArchive.$(H) $(INCLUDE_TOP)/stx/libbasic/Boolean.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Character.$(H) $(INCLUDE_TOP)/stx/libbasic/ConfigurableFeatures.$(H) $(INCLUDE_TOP)/stx/libbasic/DoubleArray.$(H) $(INCLUDE_TOP)/stx/libbasic/AbstractNumberVector.$(H) $(INCLUDE_TOP)/stx/libbasic/Float.$(H) $(INCLUDE_TOP)/stx/libbasic/LimitedPrecisionReal.$(H) $(INCLUDE_TOP)/stx/libbasic/FloatArray.$(H) $(INCLUDE_TOP)/stx/libbasic/LargeInteger.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ShortFloat.$(H) $(INCLUDE_TOP)/stx/libbasic2/SignedIntegerArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/UnboxedIntegerArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/SignedLongIntegerArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/SignedWordArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UndefinedObject.$(H) $(INCLUDE_TOP)/stx/libbasic2/WordArray.$(H) $(INCLUDE_TOP)/stx/libbasic/ProgrammingLanguage.$(H) $(INCLUDE_TOP)/stx/libbasic/UserPreferences.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Semaphore.$(H) $(INCLUDE_TOP)/stx/libbasic2/Socket.$(H) $(INCLUDE_TOP)/stx/libbasic/NonPositionableExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadWriteStream.$(H) $(INCLUDE_TOP)/stx/libbasic/WriteStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/Unicode16String.$(H) $(INCLUDE_TOP)/stx/libbasic/TwoByteString.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic2/BooleanArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/BitArray.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/Delay.$(H) $(INCLUDE_TOP)/stx/libbasic/Process.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/SmallInteger.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic3/WrappedMethod.$(H) $(INCLUDE_TOP)/stx/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic2/ZipArchive.$(H) $(INCLUDE_TOP)/stx/libbasic/Boolean.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/Character.$(H) $(INCLUDE_TOP)/stx/libbasic/ConfigurableFeatures.$(H) $(INCLUDE_TOP)/stx/libbasic/DoubleArray.$(H) $(INCLUDE_TOP)/stx/libbasic/AbstractNumberVector.$(H) $(INCLUDE_TOP)/stx/libbasic/Float.$(H) $(INCLUDE_TOP)/stx/libbasic/LimitedPrecisionReal.$(H) $(INCLUDE_TOP)/stx/libbasic/FloatArray.$(H) $(INCLUDE_TOP)/stx/libbasic/LargeInteger.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ShortFloat.$(H) $(INCLUDE_TOP)/stx/libbasic2/SignedIntegerArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/UnboxedIntegerArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/SignedLongIntegerArray.$(H) $(INCLUDE_TOP)/stx/libbasic2/SignedWordArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UndefinedObject.$(H) $(INCLUDE_TOP)/stx/libbasic2/WordArray.$(H) $(INCLUDE_TOP)/stx/libbasic/ProgrammingLanguage.$(H) $(INCLUDE_TOP)/stx/libbasic/UserPreferences.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Semaphore.$(H) $(INCLUDE_TOP)/stx/libbasic2/Socket.$(H) $(INCLUDE_TOP)/stx/libbasic/NonPositionableExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadWriteStream.$(H) $(INCLUDE_TOP)/stx/libbasic/WriteStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/Unicode16String.$(H) $(INCLUDE_TOP)/stx/libbasic/TwoByteString.$(H) $(INCLUDE_TOP)/stx/libbasic/Context.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/bc.mak	Thu Jan 31 13:10:37 2013 +0000
+++ b/bc.mak	Thu Jan 31 13:45:17 2013 +0000
@@ -218,7 +218,7 @@
 $(OUTDIR)ProxyMethodJavaMethodInvocationNode.$(O) ProxyMethodJavaMethodInvocationNode.$(H): ProxyMethodJavaMethodInvocationNode.st $(INCLUDE_TOP)\stx\libjava\ProxyMethodMethodInvocationNode.$(H) $(INCLUDE_TOP)\stx\libjava\ProxyMethodInvocationNode.$(H) $(INCLUDE_TOP)\stx\libjava\ProxyMethodNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodJavaTypeCheckNode.$(O) ProxyMethodJavaTypeCheckNode.$(H): ProxyMethodJavaTypeCheckNode.st $(INCLUDE_TOP)\stx\libjava\ProxyMethodTypeCheckNode.$(H) $(INCLUDE_TOP)\stx\libjava\ProxyMethodConditionNode.$(H) $(INCLUDE_TOP)\stx\libjava\ProxyMethodNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNativeMethod.$(O) JavaNativeMethod.$(H): JavaNativeMethod.st $(INCLUDE_TOP)\stx\libjava\JavaMethodWithHandler.$(H) $(INCLUDE_TOP)\stx\libjava\JavaMethodWithException.$(H) $(INCLUDE_TOP)\stx\libjava\JavaMethod.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic2\BooleanArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\BitArray.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\Delay.$(H) $(INCLUDE_TOP)\stx\libbasic\Process.$(H) $(INCLUDE_TOP)\stx\libbasic\Link.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\SmallInteger.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic3\WrappedMethod.$(H) $(INCLUDE_TOP)\stx\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic2\ZipArchive.$(H) $(INCLUDE_TOP)\stx\libbasic\Boolean.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Character.$(H) $(INCLUDE_TOP)\stx\libbasic\ConfigurableFeatures.$(H) $(INCLUDE_TOP)\stx\libbasic\DoubleArray.$(H) $(INCLUDE_TOP)\stx\libbasic\AbstractNumberVector.$(H) $(INCLUDE_TOP)\stx\libbasic\Float.$(H) $(INCLUDE_TOP)\stx\libbasic\LimitedPrecisionReal.$(H) $(INCLUDE_TOP)\stx\libbasic\FloatArray.$(H) $(INCLUDE_TOP)\stx\libbasic\LargeInteger.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ShortFloat.$(H) $(INCLUDE_TOP)\stx\libbasic2\SignedIntegerArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\UnboxedIntegerArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\SignedLongIntegerArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\SignedWordArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UndefinedObject.$(H) $(INCLUDE_TOP)\stx\libbasic2\WordArray.$(H) $(INCLUDE_TOP)\stx\libbasic\ProgrammingLanguage.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Semaphore.$(H) $(INCLUDE_TOP)\stx\libbasic2\Socket.$(H) $(INCLUDE_TOP)\stx\libbasic\NonPositionableExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadWriteStream.$(H) $(INCLUDE_TOP)\stx\libbasic\WriteStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\Unicode16String.$(H) $(INCLUDE_TOP)\stx\libbasic\TwoByteString.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic2\BooleanArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\BitArray.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\Delay.$(H) $(INCLUDE_TOP)\stx\libbasic\Process.$(H) $(INCLUDE_TOP)\stx\libbasic\Link.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\SmallInteger.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic3\WrappedMethod.$(H) $(INCLUDE_TOP)\stx\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic2\ZipArchive.$(H) $(INCLUDE_TOP)\stx\libbasic\Boolean.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\Character.$(H) $(INCLUDE_TOP)\stx\libbasic\ConfigurableFeatures.$(H) $(INCLUDE_TOP)\stx\libbasic\DoubleArray.$(H) $(INCLUDE_TOP)\stx\libbasic\AbstractNumberVector.$(H) $(INCLUDE_TOP)\stx\libbasic\Float.$(H) $(INCLUDE_TOP)\stx\libbasic\LimitedPrecisionReal.$(H) $(INCLUDE_TOP)\stx\libbasic\FloatArray.$(H) $(INCLUDE_TOP)\stx\libbasic\LargeInteger.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ShortFloat.$(H) $(INCLUDE_TOP)\stx\libbasic2\SignedIntegerArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\UnboxedIntegerArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\SignedLongIntegerArray.$(H) $(INCLUDE_TOP)\stx\libbasic2\SignedWordArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UndefinedObject.$(H) $(INCLUDE_TOP)\stx\libbasic2\WordArray.$(H) $(INCLUDE_TOP)\stx\libbasic\ProgrammingLanguage.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Semaphore.$(H) $(INCLUDE_TOP)\stx\libbasic2\Socket.$(H) $(INCLUDE_TOP)\stx\libbasic\NonPositionableExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadWriteStream.$(H) $(INCLUDE_TOP)\stx\libbasic\WriteStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\Unicode16String.$(H) $(INCLUDE_TOP)\stx\libbasic\TwoByteString.$(H) $(INCLUDE_TOP)\stx\libbasic\Context.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/extensions.st	Thu Jan 31 13:10:37 2013 +0000
+++ b/extensions.st	Thu Jan 31 13:45:17 2013 +0000
@@ -636,6 +636,14 @@
     "Created: / 18-02-2012 / 16:42:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!Context methodsFor:'accessing'!
+
+arg1Index    
+    ^1
+
+    "Created: / 31-01-2013 / 13:29:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !Delay methodsFor:'delaying'!
 
 waitWithState:state
--- a/libjava.rc	Thu Jan 31 13:10:37 2013 +0000
+++ b/libjava.rc	Thu Jan 31 13:45:17 2013 +0000
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\nCopyright Jan Vrany, Jan Kurs and Marcel Hlopko\n          SWING Research Group, Czech Technical University In Prague\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.3.0\0"
-      VALUE "ProductDate", "Thu, 31 Jan 2013 13:07:28 GMT\0"
+      VALUE "ProductDate", "Thu, 31 Jan 2013 13:42:32 GMT\0"
     END
 
   END
--- a/stx_libjava.st	Thu Jan 31 13:10:37 2013 +0000
+++ b/stx_libjava.st	Thu Jan 31 13:45:17 2013 +0000
@@ -160,16 +160,16 @@
 
     ^ #(
         #'stx:goodies/sunit'    "TestSuite - referenced by stx_libjava class>>testSuite "
-        #'stx:libbasic'    "Lookup - superclass of JavaLookup::Smalltalk2Java "
-        #'stx:libbasic2'    "UnboxedIntegerArray - superclass of extended SignedIntegerArray "
+        #'stx:libbasic'    "Exception - superclass of JavaError "
+        #'stx:libbasic2'    "UnboxedIntegerArray - superclass of extended WordArray "
         #'stx:libbasic3'    "MessageTracer - referenced by JavaMethod>>setBreakPoint "
-        #'stx:libcomp'    "SelfNode - referenced by ProxyMethodMethodInvocationNode>>generate: "
+        #'stx:libcomp'    "ConstantNode - referenced by ProxyMethodJavaMethodInvocationNode>>wrappedArgs: "
         #'stx:libhtml'    "URL - referenced by JavaEmbeddedFrameView>>setupAppletFrameIn:initializeJava: "
         #'stx:libtool'    "DebugView - referenced by Java class>>flushClasses "
-        #'stx:libview'    "DeviceGraphicsContext - superclass of JavaTopView "
+        #'stx:libview'    "TopView - superclass of JavaPopUpView "
         #'stx:libview2'    "GIFReader - referenced by JavaNativeMethodImpl_OpenJDK6 class>>_GifImageDecoder_parseImage: "
-        #'stx:libwidg'    "SelectionInListView - referenced by JavaNativeMethodImpl_OpenJDK6 class>>_WListPeer_create: "
-        #'stx:libwidg2'    "ComboListView - referenced by JavaNativeMethodImpl_OpenJDK6 class>>_WChoicePeer_create: "
+        #'stx:libwidg'    "ScrollableView - referenced by JavaNativeMethodImpl_OpenJDK6 class>>_MComponentPeer_pSetForeground: "
+        #'stx:libwidg2'    "ComboBoxView - referenced by JavaVM class>>processEvent: "
     )
 ! !
 
@@ -418,8 +418,6 @@
         JavaCodeLibrary
         #'JavaNativeMethodImpl_OpenJDK6'
     )
-
-    "Modified: / 23-01-2013 / 16:15:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 extensionMethodNames
@@ -585,9 +583,8 @@
         'ProjectDefinition class' javaBundle
         'String class' javaName
         'Unicode16String class' javaName
+        Context arg1Index
     )
-
-    "Modified: / 23-01-2013 / 00:12:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !stx_libjava class methodsFor:'description - java'!