Merged 7c3b2a89f173 and 80a1a085a982 (branch performance-optimizations) development
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 18 Dec 2013 12:03:32 +0100
branchdevelopment
changeset 2965 bac7022ca26a
parent 2964 7c3b2a89f173 (current diff)
parent 2628 80a1a085a982 (diff)
child 2966 afd174546057
Merged 7c3b2a89f173 and 80a1a085a982 (branch performance-optimizations)
JavaArray.st
JavaClass.st
JavaClassReader.st
JavaClassRegistry.st
JavaExceptionTests.st
JavaFinalizationRegistry.st
JavaMirror.st
JavaNativeMethodImpl_OpenJDK6.st
JavaObject.st
JavaShort.st
JavaVM.st
JavaVMData.st
Make.proto
Make.spec
Makefile.init
abbrev.stc
bc.mak
benchmarks/Rakefile
benchmarks/benchmark-runner.sh
benchmarks/result.ods
benchmarks/result.txt
benchmarks/results-log.txt
bmake.bat
extensions.st
lccmake.bat
libInit.cc
libjava.rc
libs/java/pom.xml
mingwmake.bat
stx_libjava.st
vcmake.bat
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/JavaAlienMirror.st	Wed Dec 18 12:03:32 2013 +0100
@@ -0,0 +1,277 @@
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+"
+"{ Package: 'stx:libjava' }"
+
+JavaMirror subclass:#JavaAlienMirror
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:'JavaVMData'
+	category:'Languages-Java-Classes'
+!
+
+!JavaAlienMirror class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+
+"
+!
+
+documentation
+"
+    Specialized mirror for Smalltalk (and all other 
+    non-Java classes)
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!JavaAlienMirror methodsFor:'accessing'!
+
+getClassLoader
+    "Returns a class loader that loaded this class"
+
+    ^ (JavaVM classForName:'stx.libjava.ClassLoader' definedBy: nil) instVarNamed: #scl.
+
+    "Modified: / 18-05-2013 / 10:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredConstructors:publicOnly
+    "Returns an java.lang.reflect.Constructor[] with all constructors 
+     declared by this class"
+
+    "Here, return onlu default constructor. Later, all methods annotated
+     with <jsignature: #'<init>(...)V'> wil be returned as well"
+
+    | ctors |
+
+    ctors := OrderedCollection new.
+    klass selectorsAndMethodsDo:[:sel :mthd|
+        (self isJavaConstructor: mthd selector: sel) ifTrue:[
+            ctors add: (self getDeclaredConstructorFor: mthd).
+        ].
+    ].
+
+    ctors isEmpty ifTrue:[
+        "/If no constructor is found, fake default one...    
+        ctors add: (self getDeclaredConstructorFor: (klass lookupMethodFor: #initialize)).
+    ].
+
+    ^java_lang_reflect_Constructor javaArrayClass withAll: ctors
+
+    "Modified: / 18-05-2013 / 10:57:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredFields:publicOnly
+    "Returns an java.lang.reflect.Field[] with all constructors 
+     declared by this class."
+
+    | fields |    
+
+    fields := OrderedCollection new.
+
+    klass instVarNames withIndexDo:[:nm :index|
+        | field |
+
+        field := JavaField new.
+        field 
+            setAccessFlags: JavaConstants ACC_PROTECTED;
+            setClass: klass;
+            setIndex: klass superclass instSize + index;
+            setDescriptor: #'Ljava/lang/Object;';
+            setName: nm.
+
+        fields add: (self createFieldFor: field)
+    ].
+
+    ^ java_lang_reflect_Field javaArrayClass 
+        withAll:fields
+
+    "Modified: / 18-05-2013 / 10:57:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethods:publicOnly 
+    "Returns an java.lang.reflect.Method[] with all methods 
+     declared by this class"
+
+    | methods |
+
+    methods := OrderedCollection new.
+    klass selectorsAndMethodsDo:[:sel :mthd|
+        (self isJavaMethod: mthd selector: sel) ifTrue:[
+            methods add: (self getDeclaredMethodFor: mthd).
+        ].
+    ].
+    ^java_lang_reflect_Method javaArrayClass withAll: methods
+
+    "Modified: / 18-05-2013 / 10:57:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getInterfaces
+    "Return a list if interfaces"
+
+    ^ Array with: (JavaVM classForName: 'java.lang.Cloneable'  definedBy: nil)
+
+    "Modified: / 18-05-2013 / 10:57:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getModifiers
+    "Return class modifiers (public/abstract/final...)"
+
+    ^ JavaConstants ACC_PUBLIC
+
+    "Modified: / 22-08-2012 / 11:01:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getName
+    "Returns name of the class"
+    ^'SMALLTALK.' , klass name
+
+    "Created: / 22-08-2012 / 10:47:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaAlienMirror methodsFor:'accessing-private'!
+
+getDeclaredConstructorFor: method
+    ^ self 
+        createConstructorFor: klass 
+                      method: method 
+                   signature: (self getSignatureForConstructor: method)
+                   modifiers: JavaConstants ACC_PUBLIC 
+              parameterTyoes: #() 
+              exceptionTypes: #() 
+                 annotations: JavaMethodAnnotationContainer new
+
+    "Created: / 22-08-2012 / 11:36:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethodFor:method
+    | signature name |
+
+    signature := self getSignatureForMethod: method short: false.
+    name := signature upTo: $(.    
+    ^ self 
+        createMethodFor: klass 
+                      method: method 
+                        name: name
+                   signature: signature
+                   modifiers: JavaConstants ACC_PUBLIC 
+              parameterTyoes: ((1 to: method selector numArgs)collect:[:i|java_lang_Object])
+                  returnType: java_lang_Object
+              exceptionTypes: #() 
+                 annotations: JavaMethodAnnotationContainer new
+
+    "Created: / 22-08-2012 / 11:36:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getSignatureForConstructor: method
+    | signature |
+
+    signature :=
+        (String streamContents:[:s|
+            s nextPutAll: '<init>('.
+            method selector numArgs timesRepeat:[
+                s nextPutAll:'Ljava/lang/Object;'.
+            ].
+            s nextPutAll: ')V'.
+        ]) asSymbol.
+    ^signature
+
+    "Created: / 22-08-2012 / 11:40:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getSignatureForMethod: method short: short
+    | selector signature |
+
+    selector := method selector.
+    signature :=
+        (String streamContents:[:s|
+            short ifTrue:[
+                s nextPutAll: (selector upTo: $:)
+            ] ifFalse:[
+                selector numArgs == 1 ifTrue:[
+                    s nextPutAll: (selector copyTo: selector size - 1)
+                ] ifFalse:[
+                    s nextPutAll: (selector copyReplaceAll: $: with: $_)
+                ]
+            ].
+            s nextPut: $(.
+            method selector numArgs timesRepeat:[
+                s nextPutAll:'Ljava/lang/Object;'.
+            ].
+            s nextPutAll: ')'.
+            s nextPutAll:'Ljava/lang/Object;'.
+        ]) asSymbol.
+    ^signature
+
+    "Created: / 22-08-2012 / 11:46:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaAlienMirror methodsFor:'testing-private'!
+
+isJavaConstructor: mthd selector: sel
+
+    ^sel startsWith: #initialize
+
+    "Created: / 22-08-2012 / 11:47:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isJavaMethod: mthd selector: sel
+
+    ^sel isBinarySelector not 
+        and:[(self isJavaConstructor: mthd selector: sel) not]
+
+    "Created: / 22-08-2012 / 11:47:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaAlienMirror class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/JavaArray.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/JavaArray.st	Wed Dec 18 12:03:32 2013 +0100
@@ -20,7 +20,7 @@
 "
 "{ Package: 'stx:libjava' }"
 
-Array variableSubclass:#JavaArray
+Array subclass:#JavaArray
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -325,10 +325,44 @@
     "Created: / 21-12-2010 / 12:51:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!JavaArray methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^self basicSize
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_CHECKCAST: cls
+    JavaVM _CHECKCAST: self _: cls.
+%{
+    void ___checkcast_bind();
+    ___checkcast_bind(__pilc, __Class(self));
+
+%}.    
+    ^self  
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_INSTANCEOF: cls
+    | r |
+    
+    r := JavaVM _INSTANCEOF: self _: cls.
+%{
+    void ___instanceof_bind();
+    ___instanceof_bind(__pilc, __Class(self), r);
+
+%}. 
+    ^r
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !JavaArray class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libjava/JavaArray.st,v 1.6 2013-09-06 00:41:12 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaArray.st,v 1.5 2013-02-25 11:15:31 vrany Exp $'
 !
 
 version_HG
@@ -337,6 +371,6 @@
 !
 
 version_SVN
-    ^ 'Id'
+    ^ '§Id§'
 ! !
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/JavaArrayMirror.st	Wed Dec 18 12:03:32 2013 +0100
@@ -0,0 +1,117 @@
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+"
+"{ Package: 'stx:libjava' }"
+
+JavaMirror subclass:#JavaArrayMirror
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:'JavaVMData'
+	category:'Languages-Java-Classes'
+!
+
+!JavaArrayMirror class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+
+"
+! !
+
+!JavaArrayMirror methodsFor:'accessing'!
+
+getClassLoader
+    "Returns a class loader that loaded this class"
+
+    ^ klass javaComponentClass javaMirror getClassLoader
+
+    "Modified: / 31-07-2012 / 18:35:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredConstructors:publicOnly
+    "Returns an java.lang.reflect.Constructor[] with all constructors 
+     declared by this class"
+
+    ^ java_lang_reflect_Constructor javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:57:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredFields:publicOnly
+    "Returns an java.lang.reflect.Field[] with all constructors 
+     declared by this class."
+
+    ^java_lang_reflect_Field javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:57:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethods:publicOnly 
+    "Returns an java.lang.reflect.Method[] with all methods 
+     declared by this class"
+    
+    ^ java_lang_reflect_Method javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:57:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getInterfaces
+    "Return a list if interfaces"
+
+    ^ Array 
+        with: (JavaVM classForName: 'java.lang.Cloneable' definedBy: nil)
+        with: (JavaVM classForName: 'java.io.Serializable' definedBy: nil)
+
+    "Modified: / 18-05-2013 / 10:57:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getModifiers
+    "Return class modifiers (public/abstract/final...)"
+
+    ^ JavaConstants ACC_ABSTRACT | JavaConstants ACC_FINAL | JavaConstants ACC_PUBLIC
+
+    "Modified: / 22-08-2012 / 11:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaArrayMirror class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/JavaClass.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/JavaClass.st	Wed Dec 18 12:03:32 2013 +0100
@@ -29,7 +29,7 @@
 	category:'Languages-Java-Classes'
 !
 
-Array variableSubclass:#Attributes
+Array subclass:#Attributes
 	instanceVariableNames:''
 	classVariableNames:'Empty'
 	poolDictionaries:''
@@ -127,6 +127,10 @@
     "Modified: / 06-12-2013 / 22:59:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+
+
+
+
 name:aString
     self shouldNotImplement
 
@@ -555,6 +559,23 @@
     "Modified: / 12.11.1998 / 15:29:10 / cg"
 ! !
 
+!JavaClass methodsFor:'* uncategorized *'!
+
+includesInterface: interface
+    | cls |
+
+    self == interface ifTrue: [ ^ true ].
+
+    cls := self.
+    [ cls isJavaClass ] whileTrue:[
+        cls interfaces do:[:i|(i includesInterface: interface) ifTrue:[ ^ true ]].
+        cls := cls superclass.
+    ].
+    ^ false.
+
+    "Created: / 21-05-2013 / 00:06:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !JavaClass methodsFor:'accessing'!
 
 allFields
@@ -725,6 +746,8 @@
     ^ fields
 !
 
+
+
 javaClass
 
     ^ self
@@ -811,6 +834,10 @@
     "Created: / 5.11.1998 / 19:16:00 / cg"
 !
 
+
+
+
+
 nameWithoutNameSpacePrefix
     ^ binaryName
 
@@ -1299,6 +1326,8 @@
     "Modified: / 08-10-2013 / 22:36:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+
+
 parent
 
     ^nil
@@ -2298,6 +2327,8 @@
     "Modified: / 02-11-2012 / 21:49:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+
+
 setInterfaces: i
 
     super setInterfaces: i.
@@ -2523,6 +2554,12 @@
     "Created: / 07-08-2011 / 15:50:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+isBuiltInClass
+    ^JavaVM builtInClassNames includes: name
+
+    "Created: / 22-05-2013 / 20:38:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 isCloneable
     "Return true, if the receiver implements java.lang.Cloneable,
      i.e., if it can be cloned using Object#clone()"
@@ -2726,6 +2763,8 @@
     "Modified: / 10-10-2013 / 01:00:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+
+
 selectMethodsAnnotatedWith:aJavaTypeName 
     ^ self methodDictionary values select:
             [:method | 
@@ -2914,7 +2953,9 @@
     "Created: / 10-11-1998 / 02:07:32 / cg"
     "Modified: / 08-01-1999 / 14:11:34 / cg"
     "Modified: / 05-07-2012 / 23:24:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
+!
+
+ !
 
 !JavaClass methodsFor:'support - refactorings'!
 
@@ -3034,7 +3075,6 @@
     "Modified: / 13-02-2013 / 09:36:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-
 !JavaClass methodsFor:'unwind'!
 
 unwindHandlerInContext: aContext 
@@ -3168,11 +3208,11 @@
 !JavaClass class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libjava/JavaClass.st,v 1.136 2013-09-06 00:41:18 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaClass.st,v 1.135 2013-04-27 12:31:15 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libjava/JavaClass.st,v 1.136 2013-09-06 00:41:18 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaClass.st,v 1.135 2013-04-27 12:31:15 cg Exp $'
 !
 
 version_SVN
@@ -3180,5 +3220,5 @@
 ! !
 
 
+JavaClass::Attributes initialize!
 JavaClass initialize!
-JavaClass::Attributes initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/JavaClassMirror.st	Wed Dec 18 12:03:32 2013 +0100
@@ -0,0 +1,212 @@
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+"
+"{ Package: 'stx:libjava' }"
+
+JavaMirror subclass:#JavaClassMirror
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:'JavaVMData'
+	category:'Languages-Java-Classes'
+!
+
+!JavaClassMirror class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+
+"
+!
+
+documentation
+"
+    A specialized mirror for all Java classes
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!JavaClassMirror methodsFor:'accessing'!
+
+getClassLoader
+    "Returns a class loader that loaded this class"
+
+    ^ klass classLoader
+
+    "Modified: / 31-07-2012 / 18:26:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredConstructors:publicOnly
+    "Returns an java.lang.reflect.Constructor[] with all constructors 
+     declared by this class"
+
+    | ctors |
+
+    ctors := OrderedCollection new.
+    klass selectorsAndMethodsDo:[:sel :mthd|
+        (mthd isJavaConstructor and:[publicOnly not or:[mthd isPublic]]) ifTrue:[
+            ctors add: (self getDeclaredConstructorFor: mthd).
+        ].
+    ].
+    ^java_lang_reflect_Constructor javaArrayClass withAll: ctors
+
+    "Modified: / 18-05-2013 / 10:56:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredFields:publicOnly
+    "Returns an java.lang.reflect.Field[] with all constructors 
+     declared by this class."
+
+    | fields |    
+
+    fields := klass fields , klass staticFields.
+    publicOnly ifTrue:[ fields := fields select:[:f | f isPublic ] ].
+    JavaClassReader classLoaderQuerySignal answer: klass classLoader do:[
+        fields := fields collect:[:f | self createFieldFor:f ].
+    ].
+    ^ java_lang_reflect_Field javaArrayClass 
+        withAll:fields
+
+    "Modified: / 18-05-2013 / 10:57:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethods:publicOnly
+    "Returns an java.lang.reflect.Constructor[] with all constructors 
+     declared by this class"
+
+    | methods |
+
+    methods := OrderedCollection new.
+    klass selectorsAndMethodsDo:[:sel :mthd|
+        mthd isJavaMethod and:[
+            (mthd isJavaConstructor not 
+                and:[mthd isJavaStaticInitializer not
+                and:[publicOnly not or:[mthd isPublic]]]) ifTrue:[
+                methods add: (self getDeclaredMethodFor: mthd).
+            ]
+        ].
+    ].
+    ^java_lang_reflect_Method javaArrayClass withAll: methods
+
+    "Modified: / 18-05-2013 / 10:57:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getGenericSignature
+    "Returns Java generic signature (if a generic class) or nil"
+
+    ^klass signatureJ
+
+    "Created: / 22-08-2012 / 11:58:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getInterfaces
+    "Return a list if interfaces"
+
+    ^ klass interfaces
+
+    "Modified: / 22-08-2012 / 11:08:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getModifiers
+    "Return class modifiers (public/abstract/final...)"
+
+    | modifiers |    
+
+    "According to OpenJDK JVM, strip ACC_SUPER"
+    modifiers := (klass accessFlags & JavaConstants ACC_SUPER bitInvert) & 16r7FFF.
+    "JV@2011-10-30: It seems that private inner classes has no
+     private bit set, sigh"
+    (modifiers & 16r0007) == 0 ifTrue:[
+        modifiers := modifiers | JavaConstants ACC_PRIVATE.
+    ].
+    ^modifiers
+
+    "Modified: / 22-08-2012 / 11:03:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getProtectionDomain
+    ^klass protectionDomain
+
+    "Created: / 22-08-2012 / 12:56:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaClassMirror methodsFor:'accessing-private'!
+
+getDeclaredConstructorFor: method
+
+    ^self createConstructorFor: method javaClass
+                        method: method
+                     signature: method signature
+                     modifiers: method accessFlags
+                parameterTyoes: (method descriptor parameterClassesUsingClassLoader: method javaClass classLoader)
+                exceptionTypes: method exceptionClasses
+                   annotations: method method annotations.
+
+    "Created: / 01-08-2012 / 00:46:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethodFor: method
+
+    ^self      createMethodFor: method javaClass
+                        method: method
+                          name: (method selector upTo: $()
+                     signature: method signature
+                     modifiers: method accessFlags
+                parameterTyoes: (method descriptor parameterClassesUsingClassLoader: method javaClass classLoader)
+                    returnType: (method descriptor returnClassUsingClassLoader: method javaClass classLoader)
+                exceptionTypes: method exceptionClasses
+                   annotations: method method annotations.
+
+    "Created: / 01-08-2012 / 11:11:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaClassMirror class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/JavaClassReader.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/JavaClassReader.st	Wed Dec 18 12:03:32 2013 +0100
@@ -22,11 +22,11 @@
 
 Object subclass:#JavaClassReader
 	instanceVariableNames:'inStream msb constants majorVsn minorVsn constNeeds2Slots
-		constSlot classBeingLoaded classLoader attributes'
+                constSlot classBeingLoaded classLoader attributes'
 	classVariableNames:'Verbose AnnotationsVerbose Silent AbsolutelySilent
-		LazyClassLoading InvalidClassFormatSignal ClassLoaderQuerySignal
-		JavaArchiveCache JavaArchiveCacheLock LastJavaArchive
-		LastJavaArchiveLock MaxContextSize MaxContextSizeLimit'
+                LazyClassLoading InvalidClassFormatSignal ClassLoaderQuerySignal
+                JavaArchiveCache JavaArchiveCacheLock LastJavaArchive
+                LastJavaArchiveLock MaxContextSize MaxContextSizeLimit'
 	poolDictionaries:'JavaConstants'
 	category:'Languages-Java-Support'
 !
@@ -478,7 +478,7 @@
                     read := [
                             nm := clsName , '.class'.
 
-                            (zar isValidPath: nm) ifTrue: [
+                            (zar isValidFile: nm) ifTrue: [
                                 (Java isExcludedFromClassPath: nm) ifFalse: [
                                     JavaVM commonOpenStreamUsing:[ zar := zar reopenForReading ].
                                     entry := zar extract: nm.
@@ -511,7 +511,7 @@
     ^nil
 
     "Created: / 03-12-2012 / 22:47:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 21-11-2013 / 12:11:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+<conflict>
 !
 
 readClass: className ignoring: classesBeingLoadedOrNil classPath: classPath 
@@ -2580,15 +2580,15 @@
 !JavaClassReader class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libjava/JavaClassReader.st,v 1.98 2013-09-06 00:41:21 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaClassReader.st,v 1.97 2013-03-18 16:59:01 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libjava/JavaClassReader.st,v 1.98 2013-09-06 00:41:21 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaClassReader.st,v 1.97 2013-03-18 16:59:01 cg Exp $'
 !
 
 version_SVN
-    ^ 'Id'
+    ^ '§Id§'
 ! !
 
 
--- a/JavaClassRegistry.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/JavaClassRegistry.st	Wed Dec 18 12:03:32 2013 +0100
@@ -320,6 +320,42 @@
 
 !JavaClassRegistry methodsFor:'registering'!
 
+registerBuiltIn: class
+    | nm |
+
+    nm := class name.
+    nm == #'java/lang/Object' ifTrue:[
+        java_lang_Object := class.
+        ^self.
+    ].
+    nm == #'java/lang/System' ifTrue:[
+        java_lang_System := class.
+        ^self.
+    ].
+    nm == #'java/lang/Class' ifTrue:[
+        java_lang_Class := class.
+        "/ Force load of other reflective classes. This saves us a nil check in
+        "/ JavaMirror>>createMethod... 
+        #(#'java/lang/reflect/Constructor'  #'java/lang/reflect/Method' #'java/lang/reflect/Field') do:[:e|
+            vm classForName: e definedBy: nil.
+        ]. 
+        ^self.
+    ].
+    nm == #'java/lang/reflect/Constructor' ifTrue:[
+        java_lang_reflect_Constructor := class.
+    ].
+    nm == #'java/lang/reflect/Method' ifTrue:[
+        java_lang_reflect_Method := class.
+    ].    
+    nm == #'java/lang/reflect/Field' ifTrue:[
+        java_lang_reflect_Field := class.
+    ].
+
+
+
+    "Created: / 22-05-2013 / 20:40:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 registerClass: newClass
     | classes oldClass |
 
@@ -518,10 +554,10 @@
 !JavaClassRegistry class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libjava/JavaClassRegistry.st,v 1.5 2013-09-06 00:41:22 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaClassRegistry.st,v 1.4 2013-04-25 13:10:25 stefan Exp $'
 !
 
 version_SVN
-    ^ 'Id'
+    ^ '§Id§'
 ! !
 
--- a/JavaFinalizationRegistry.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/JavaFinalizationRegistry.st	Wed Dec 18 12:03:32 2013 +0100
@@ -388,14 +388,14 @@
     | finalizedClass |
 
     accessLock critical:[
-        finalizedClass := JavaVM classForName:'java.lang.ref.Finalizer'.
+        finalizedClass := JavaVM classForName:'java.lang.ref.Finalizer' definedBy: nil.
         finalizedClass classInit.
         (finalizedClass methodDictionary at: #'register(Ljava/lang/Object;)V')
             valueWithReceiver: finalizedClass arguments: (Array with: object).
     ].
 
     "Created: / 24-07-2012 / 01:14:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 07-05-2013 / 11:19:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-05-2013 / 10:45:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 registerChange: anObject
--- a/JavaMirror.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/JavaMirror.st	Wed Dec 18 12:03:32 2013 +0100
@@ -23,38 +23,10 @@
 Object subclass:#JavaMirror
 	instanceVariableNames:'klass reflection'
 	classVariableNames:''
-	poolDictionaries:''
+	poolDictionaries:'JavaVMData'
 	category:'Languages-Java-Classes'
 !
 
-JavaMirror subclass:#AlienClassMirror
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:JavaMirror
-!
-
-JavaMirror subclass:#JavaArrayMirror
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:JavaMirror
-!
-
-JavaMirror subclass:#JavaClassMirror
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:JavaMirror
-!
-
-JavaMirror subclass:#JavaPrimitiveMirror
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:JavaMirror
-!
-
 !JavaMirror class methodsFor:'documentation'!
 
 copyright
@@ -117,9 +89,10 @@
 !JavaMirror class methodsFor:'accessing'!
 
 mirrorClassForAlienClass
-    ^ AlienClassMirror
+    ^ JavaAlienMirror
 
     "Created: / 31-07-2012 / 17:36:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 24-05-2013 / 10:54:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 mirrorClassForJavaArray
@@ -273,7 +246,7 @@
     "
 
     | ctor |
-    ctor := self create: (JavaVM classForName:'java.lang.reflect.Constructor')
+    ctor := self create: java_lang_reflect_Constructor
                     for: class
                  method: method
               signature: signature 
@@ -284,6 +257,7 @@
     ^ctor
 
     "Created: / 01-08-2012 / 10:20:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-05-2013 / 10:55:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 createFieldFor: javaField 
@@ -300,9 +274,15 @@
     name := JavaVM reflection javaStringObjectForString: javaField name
                 interned: true.
     slot := javaField index.
-    type := JavaVM javaClassObjectForClass: javaField typeClass.
+    "/ Following could be coded like (and actually it was):
+    "/
+    "/type := JavaVM javaClassObjectForClass: javaField typeClass.
+    "/
+    "/ however, for performance reasons its better to avoid ClassLoader query, so:
+    type := JavaVM javaClassObjectForClass:
+                ((JavaDescriptor fromString: javaField descriptor)  javaClassUsingClassLoader: javaField javaClass classLoader).
     modifiers := javaField accessFlags.
-    field := (JavaVM classForName: 'java.lang.reflect.Field') new.
+    field := java_lang_reflect_Field new.
     field
         instVarNamed: #clazz put: clazz;
         instVarNamed: #name put: name;
@@ -318,6 +298,7 @@
     ^ field.
 
     "Created: / 22-08-2012 / 12:09:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-05-2013 / 11:51:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 createMethodFor: class method: method name: name signature: signature modifiers: modifiers parameterTyoes: parameterClasses returnType: returnClass exceptionTypes: exceptionClasses annotations: annotations
@@ -335,7 +316,7 @@
     "
 
     | mthd |
-    mthd := self create: (JavaVM classForName:'java.lang.reflect.Method')
+    mthd := self create: java_lang_reflect_Method
                     for: class
                  method: method
               signature: signature 
@@ -352,484 +333,7 @@
     ^mthd
 
     "Created: / 01-08-2012 / 10:46:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::AlienClassMirror class methodsFor:'documentation'!
-
-documentation
-"
-    Specialized mirror for Smalltalk (and all other 
-    non-Java classes)
-
-    [author:]
-        Jan Vrany <jan.vrany@fit.cvut.cz>
-
-    [instance variables:]
-
-    [class variables:]
-
-    [see also:]
-
-"
-! !
-
-!JavaMirror::AlienClassMirror methodsFor:'accessing'!
-
-getClassLoader
-    "Returns a class loader that loaded this class"
-
-    ^ (JavaVM classForName:'stx.libjava.ClassLoader') instVarNamed: #scl.
-
-    "Modified: / 07-05-2013 / 11:19:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredConstructors:publicOnly
-    "Returns an java.lang.reflect.Constructor[] with all constructors 
-     declared by this class"
-
-    "Here, return onlu default constructor. Later, all methods annotated
-     with <jsignature: #'<init>(...)V'> wil be returned as well"
-
-    | ctors |
-
-    ctors := OrderedCollection new.
-    klass selectorsAndMethodsDo:[:sel :mthd|
-        (self isJavaConstructor: mthd selector: sel) ifTrue:[
-            ctors add: (self getDeclaredConstructorFor: mthd).
-        ].
-    ].
-
-    ctors isEmpty ifTrue:[
-        "/If no constructor is found, fake default one...    
-        ctors add: (self getDeclaredConstructorFor: (klass lookupMethodFor: #initialize)).
-    ].
-
-    ^(JavaVM classForName:'java.lang.reflect.Constructor') javaArrayClass withAll: ctors
-
-    "Modified: / 22-08-2012 / 11:37:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredFields:publicOnly
-    "Returns an java.lang.reflect.Field[] with all constructors 
-     declared by this class."
-
-    | fields |    
-
-    fields := OrderedCollection new.
-
-    klass instVarNames withIndexDo:[:nm :index|
-        | field |
-
-        field := JavaField new.
-        field 
-            setAccessFlags: JavaConstants ACC_PROTECTED;
-            setClass: klass;
-            setIndex: klass superclass instSize + index;
-            setDescriptor: #'Ljava/lang/Object;';
-            setName: nm.
-
-        fields add: (self createFieldFor: field)
-    ].
-
-    ^ (JavaVM classForName:'java.lang.reflect.Field') javaArrayClass 
-        withAll:fields
-
-    "Modified: / 22-08-2012 / 12:19:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethods:publicOnly 
-    "Returns an java.lang.reflect.Method[] with all methods 
-     declared by this class"
-
-    | methods |
-
-    methods := OrderedCollection new.
-    klass selectorsAndMethodsDo:[:sel :mthd|
-        (self isJavaMethod: mthd selector: sel) ifTrue:[
-            methods add: (self getDeclaredMethodFor: mthd).
-        ].
-    ].
-    ^(JavaVM classForName:'java.lang.reflect.Method') javaArrayClass withAll: methods
-
-    "Modified: / 22-08-2012 / 11:36:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getInterfaces
-    "Return a list if interfaces"
-
-    ^ Array with: (JavaVM classForName: 'java.lang.Cloneable')
-
-    "Modified: / 22-08-2012 / 11:06:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getModifiers
-    "Return class modifiers (public/abstract/final...)"
-
-    ^ JavaConstants ACC_PUBLIC
-
-    "Modified: / 22-08-2012 / 11:01:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getName
-    "Returns name of the class"
-    ^'SMALLTALK.' , klass name
-
-    "Created: / 22-08-2012 / 10:47:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::AlienClassMirror methodsFor:'accessing-private'!
-
-getDeclaredConstructorFor: method
-    ^ self 
-        createConstructorFor: klass 
-                      method: method 
-                   signature: (self getSignatureForConstructor: method)
-                   modifiers: JavaConstants ACC_PUBLIC 
-              parameterTyoes: #() 
-              exceptionTypes: #() 
-                 annotations: JavaMethodAnnotationContainer new
-
-    "Created: / 22-08-2012 / 11:36:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethodFor:method
-    | signature name java_lang_Object |
-
-    signature := self getSignatureForMethod: method short: false.
-    name := signature upTo: $(.
-    java_lang_Object := JavaVM classNamed: 'java.lang.Object'.
-    ^ self 
-        createMethodFor: klass 
-                      method: method 
-                        name: name
-                   signature: signature
-                   modifiers: JavaConstants ACC_PUBLIC 
-              parameterTyoes: ((1 to: method selector numArgs) collect:[:i|java_lang_Object])
-                  returnType: java_lang_Object
-              exceptionTypes: #() 
-                 annotations: JavaMethodAnnotationContainer new
-
-    "Created: / 22-08-2012 / 11:36:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getSignatureForConstructor: method
-    | signature |
-
-    signature :=
-        (String streamContents:[:s|
-            s nextPutAll: '<init>('.
-            method selector numArgs timesRepeat:[
-                s nextPutAll:'Ljava/lang/Object;'.
-            ].
-            s nextPutAll: ')V'.
-        ]) asSymbol.
-    ^signature
-
-    "Created: / 22-08-2012 / 11:40:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getSignatureForMethod: method short: short
-    | selector signature |
-
-    selector := method selector.
-    signature :=
-        (String streamContents:[:s|
-            short ifTrue:[
-                s nextPutAll: (selector upTo: $:)
-            ] ifFalse:[
-                selector numArgs == 1 ifTrue:[
-                    s nextPutAll: (selector copyTo: selector size - 1)
-                ] ifFalse:[
-                    s nextPutAll: (selector copyReplaceAll: $: with: $_)
-                ]
-            ].
-            s nextPut: $(.
-            method selector numArgs timesRepeat:[
-                s nextPutAll:'Ljava/lang/Object;'.
-            ].
-            s nextPutAll: ')'.
-            s nextPutAll:'Ljava/lang/Object;'.
-        ]) asSymbol.
-    ^signature
-
-    "Created: / 22-08-2012 / 11:46:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::AlienClassMirror methodsFor:'testing-private'!
-
-isJavaConstructor: mthd selector: sel
-
-    ^sel startsWith: #initialize
-
-    "Created: / 22-08-2012 / 11:47:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-isJavaMethod: mthd selector: sel
-
-    ^sel isBinarySelector not 
-        and:[(self isJavaConstructor: mthd selector: sel) not]
-
-    "Created: / 22-08-2012 / 11:47:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::JavaArrayMirror methodsFor:'accessing'!
-
-getClassLoader
-    "Returns a class loader that loaded this class"
-
-    ^ klass javaComponentClass javaMirror getClassLoader
-
-    "Modified: / 31-07-2012 / 18:35:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredConstructors:publicOnly
-    "Returns an java.lang.reflect.Constructor[] with all constructors 
-     declared by this class"
-
-    ^ (JavaVM classForName:'java.lang.reflect.Constructor') javaArrayClass new:0.
-
-    "Modified: / 31-07-2012 / 18:41:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredFields:publicOnly
-    "Returns an java.lang.reflect.Field[] with all constructors 
-     declared by this class."
-
-    ^(JavaVM classForName:'java.lang.reflect.Field') javaArrayClass new:0.
-
-    "Modified: / 22-08-2012 / 12:03:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethods:publicOnly 
-    "Returns an java.lang.reflect.Method[] with all methods 
-     declared by this class"
-    
-    ^ (JavaVM classForName:'java.lang.reflect.Method') javaArrayClass new:0.
-
-    "Modified: / 01-08-2012 / 11:08:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getInterfaces
-    "Return a list if interfaces"
-
-    ^ Array 
-        with: (JavaVM classForName: 'java.lang.Cloneable')
-        with: (JavaVM classForName: 'java.io.Serializable')
-
-    "Modified: / 22-08-2012 / 11:06:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getModifiers
-    "Return class modifiers (public/abstract/final...)"
-
-    ^ JavaConstants ACC_ABSTRACT | JavaConstants ACC_FINAL | JavaConstants ACC_PUBLIC
-
-    "Modified: / 22-08-2012 / 11:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::JavaClassMirror class methodsFor:'documentation'!
-
-documentation
-"
-    A specialized mirror for all Java classes
-
-    [author:]
-        Jan Vrany <jan.vrany@fit.cvut.cz>
-
-    [instance variables:]
-
-    [class variables:]
-
-    [see also:]
-
-"
-! !
-
-!JavaMirror::JavaClassMirror methodsFor:'accessing'!
-
-getClassLoader
-    "Returns a class loader that loaded this class"
-
-    ^ klass classLoader
-
-    "Modified: / 31-07-2012 / 18:26:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredConstructors:publicOnly
-    "Returns an java.lang.reflect.Constructor[] with all constructors 
-     declared by this class"
-
-    | ctors |
-
-    ctors := OrderedCollection new.
-    klass selectorsAndMethodsDo:[:sel :mthd|
-        (mthd isJavaConstructor and:[publicOnly not or:[mthd isPublic]]) ifTrue:[
-            ctors add: (self getDeclaredConstructorFor: mthd).
-        ].
-    ].
-    ^(JavaVM classForName:'java.lang.reflect.Constructor') javaArrayClass withAll: ctors
-
-    "Modified: / 01-08-2012 / 11:04:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredFields:publicOnly
-    "Returns an java.lang.reflect.Field[] with all constructors 
-     declared by this class."
-
-    | fields |    
-
-    fields := klass fields , klass staticFields.
-    publicOnly ifTrue:[ fields := fields select:[:f | f isPublic ] ].
-    JavaClassReader classLoaderQuerySignal answer: klass classLoader do:[
-        fields := fields collect:[:f | self createFieldFor:f ].
-    ].
-    ^ (JavaVM classForName:'java.lang.reflect.Field') javaArrayClass 
-        withAll:fields
-
-    "Modified: / 22-08-2012 / 12:10:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethods:publicOnly
-    "Returns an java.lang.reflect.Constructor[] with all constructors 
-     declared by this class"
-
-    | methods |
-
-    methods := OrderedCollection new.
-    klass selectorsAndMethodsDo:[:sel :mthd|
-        mthd isJavaMethod and:[
-            (mthd isJavaConstructor not 
-                and:[mthd isJavaStaticInitializer not
-                and:[publicOnly not or:[mthd isPublic]]]) ifTrue:[
-                methods add: (self getDeclaredMethodFor: mthd).
-            ]
-        ].
-    ].
-    ^(JavaVM classForName:'java.lang.reflect.Method') javaArrayClass withAll: methods
-
-    "Modified: / 19-09-2012 / 16:26:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getGenericSignature
-    "Returns Java generic signature (if a generic class) or nil"
-
-    ^klass signatureJ
-
-    "Created: / 22-08-2012 / 11:58:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getInterfaces
-    "Return a list if interfaces"
-
-    ^ klass interfaces
-
-    "Modified: / 22-08-2012 / 11:08:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getModifiers
-    "Return class modifiers (public/abstract/final...)"
-
-    | modifiers |    
-
-    "According to OpenJDK JVM, strip ACC_SUPER"
-    modifiers := (klass accessFlags & JavaConstants ACC_SUPER bitInvert) & 16r7FFF.
-    "JV@2011-10-30: It seems that private inner classes has no
-     private bit set, sigh"
-    (modifiers & 16r0007) == 0 ifTrue:[
-        modifiers := modifiers | JavaConstants ACC_PRIVATE.
-    ].
-    ^modifiers
-
-    "Modified: / 22-08-2012 / 11:03:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getProtectionDomain
-    ^klass protectionDomain
-
-    "Created: / 22-08-2012 / 12:56:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::JavaClassMirror methodsFor:'accessing-private'!
-
-getDeclaredConstructorFor: method
-
-    ^self createConstructorFor: method javaClass
-                        method: method
-                     signature: method signature
-                     modifiers: method accessFlags
-                parameterTyoes: (method descriptor parameterClassesUsingClassLoader: method javaClass classLoader)
-                exceptionTypes: method exceptionClasses
-                   annotations: method method annotations.
-
-    "Created: / 01-08-2012 / 00:46:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethodFor: method
-
-    ^self      createMethodFor: method javaClass
-                        method: method
-                          name: (method selector upTo: $()
-                     signature: method signature
-                     modifiers: method accessFlags
-                parameterTyoes: (method descriptor parameterClassesUsingClassLoader: method javaClass classLoader)
-                    returnType: (method descriptor returnClassUsingClassLoader: method javaClass classLoader)
-                exceptionTypes: method exceptionClasses
-                   annotations: method method annotations.
-
-    "Created: / 01-08-2012 / 11:11:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaMirror::JavaPrimitiveMirror methodsFor:'accessing'!
-
-getClassLoader
-    "Returns a class loader that loaded this class"
-
-    ^ nil
-
-    "Modified: / 31-07-2012 / 18:35:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredConstructors:publicOnly
-    "Returns an java.lang.reflect.Constructor[] with all constructors 
-     declared by this class"
-
-    ^ (JavaVM classForName:'java.lang.reflect.Constructor') javaArrayClass new:0.
-
-    "Modified: / 31-07-2012 / 18:41:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredFields:publicOnly
-    "Returns an java.lang.reflect.Field[] with all constructors 
-     declared by this class."
-
-    ^(JavaVM classForName:'java.lang.reflect.Field') javaArrayClass new:0.
-
-    "Modified: / 22-08-2012 / 12:03:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getDeclaredMethods:publicOnly 
-    "Returns an java.lang.reflect.Method[] with all methods 
-     declared by this class"
-    
-    ^ (JavaVM classForName:'java.lang.reflect.Method') javaArrayClass new:0.
-
-    "Modified: / 01-08-2012 / 11:08:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getInterfaces
-    "Return a list if interfaces"
-
-    ^ #()
-
-    "Modified: / 22-08-2012 / 11:07:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-getModifiers
-    "Return class modifiers (public/abstract/final...)"
-
-    ^ JavaConstants ACC_ABSTRACT | JavaConstants ACC_FINAL | JavaConstants ACC_PUBLIC
-
-    "Modified: / 22-08-2012 / 11:02:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-05-2013 / 10:55:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaMirror class methodsFor:'documentation'!
--- a/JavaNativeMethodImpl_OpenJDK6.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/JavaNativeMethodImpl_OpenJDK6.st	Wed Dec 18 12:03:32 2013 +0100
@@ -8333,12 +8333,12 @@
         ^ (JavaVM classForName:'java.io.UnixFileSystem' definedBy:nil) new
     ].
     OperatingSystem isMSWINDOWSlike ifTrue: [
-        ^ (Java classForName: 'java.io.WinNTFileSystem') new
+        ^ (JavaVM classForName: 'java.io.WinNTFileSystem' definedBy: nil) new
     ].
     self error: 'Unknown/Unsupported platform'
 
     "Created: / 09-12-2010 / 17:58:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 01-04-2011 / 18:09:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-05-2013 / 10:58:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_io_ObjectInputStream_bytesToDoubles: this _: a1 _: a2 _: a3 _: a4
@@ -9736,13 +9736,13 @@
     jClass := this.
     cls := Reflection classForJavaClassObject:jClass.
     interfaces := cls javaMirror getInterfaces.
-    jInterfaces := (JavaVM classForName:'java.lang.Class' definedBy:nil) javaArrayClass new:interfaces size.
+    jInterfaces := java_lang_Class javaArrayClass new:interfaces size.
     interfaces
         withIndexDo:[:iface :idx | jInterfaces at:idx put:(Reflection javaClassObjectForClass:iface) ].
     ^ jInterfaces
 
     "Modified: / 28-01-2011 / 15:19:11 / Marcel Hlopko <hlopik@gmail.com>"
-    "Modified: / 22-08-2012 / 11:08:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-05-2013 / 16:25:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_getModifiers: this
@@ -10018,10 +10018,10 @@
 
     <javanative: 'java/lang/Class' name: 'registerNatives()V'>
 
-
      "Nothing to do, native method are bound lazily"
 
     "Created: / 20-10-2010 / 11:13:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-05-2013 / 20:44:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Class_setProtectionDomain0: this _: a1
@@ -10360,12 +10360,10 @@
 _java_lang_Object_registerNatives: this
 
     <javanative: 'java/lang/Object' name: 'registerNatives()V'>
-
-
     "Nothing to do, native method are bound lazily"
 
     "Created: / 19-10-2010 / 12:42:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 20-10-2010 / 10:57:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-05-2013 / 20:44:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Object_wait: this _:a1 _: a2
@@ -10589,14 +10587,14 @@
         ctx := ctx sender.
     ].
 
-    jclasses := (JavaVM classForName:'java.lang.Class' definedBy:nil) javaArrayClass new: classes size.
+    jclasses := java_lang_Class javaArrayClass new: classes size.
     1 to: classes size do:[:i|
         jclasses at: i put: (Reflection javaClassObjectForClass: (classes at: i)).
     ].
     ^jclasses
 
     "Created: / 12-11-1998 / 18:56:06 / cg"
-    "Modified: / 15-11-2011 / 00:27:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-05-2013 / 16:25:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_Shutdown_halt0: this _:a1
@@ -10626,6 +10624,8 @@
 
 !
 
+
+
 _java_lang_StrictMath_acos: this _: a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'acos(D)D'>
@@ -10637,6 +10637,8 @@
 
 !
 
+
+
 _java_lang_StrictMath_asin: this _: a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'asin(D)D'>
@@ -10648,6 +10650,8 @@
 
 !
 
+
+
 _java_lang_StrictMath_atan2: this _: a1 _: a2 _: a3 _: a4
 
     <javanative: 'java/lang/StrictMath' name: 'atan2(DD)D'>
@@ -10659,6 +10663,8 @@
 
 !
 
+
+
 _java_lang_StrictMath_atan: this _: a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'atan(D)D'>
@@ -10783,6 +10789,8 @@
 
 !
 
+
+
 _java_lang_StrictMath_log: this _: a1 _: a2
 
     <javanative: 'java/lang/StrictMath' name: 'log(D)D'>
@@ -11058,11 +11066,10 @@
 _java_lang_System_registerNatives: this
 
     <javanative: 'java/lang/System' name: 'registerNatives()V'>
-
-
     "Nothing to do, native method are bound lazily"
 
     "Created: / 20-10-2010 / 10:56:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-05-2013 / 20:44:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_System_setErr0: this _:a1
@@ -11126,14 +11133,14 @@
     | t  p nctx |
     p := Processor activeProcess.
     t := JavaVM javaThreadForSTProcess: p.
-    (nctx := self nativeContext) sender receiver class name
-        = 'java/util/concurrent/locks/ReentrantLock$NonfairSync'
-            ifTrue: [
-                | owner |
-                owner := (nctx sender receiver
-                            perform: #'getExclusiveOwnerThread()Ljava/lang/Thread;').
-                (owner notNil and: [ owner ~= t ]) ifTrue: [ self breakPoint: #mh. ]
-            ].
+"/    (nctx := self nativeContext) sender receiver class name
+"/        = 'java/util/concurrent/locks/ReentrantLock$NonfairSync'
+"/            ifTrue: [
+"/                | owner |
+"/                owner := (nctx sender receiver
+"/                            perform: #'getExclusiveOwnerThread()Ljava/lang/Thread;').
+"/                (owner notNil and: [ owner ~= t ]) ifTrue: [ self breakPoint: #mh. ]
+"/            ].
     t notNil ifTrue: [ ^ t ].
     t := JavaVM newThread: p name.
     t instVarNamed: 'tid' put: p id.
@@ -11434,7 +11441,7 @@
             "/ cleanup ...
             list add: con shallowCopy
         ].
-        con := con sender
+        con := nil"/con sender
     ].
     exceptionObject instVarNamed: 'backtrace' put: (list asArray).
     ^ nil.
@@ -13346,12 +13353,12 @@
         ].
         con := con sender.
     ].
-    ^(JavaVM classForName:'java.lang.Class' definedBy:nil) javaArrayClass withAll: chain
+    ^java_lang_Class javaArrayClass withAll: chain
 
     "Created: / 05-01-1998 / 02:47:00 / cg"
     "Modified: / 24-12-1998 / 00:34:57 / cg"
     "Modified: / 28-01-2011 / 15:31:28 / Marcel Hlopko <hlopik@gmail.com>"
-    "Modified: / 09-03-2013 / 17:37:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-05-2013 / 16:25:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_util_TimeZone_getSystemGMTOffsetID: this
@@ -14608,6 +14615,10 @@
     "Modified: / 04-11-2011 / 21:50:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - stx.libjava.tools.compiler.ecj'!
+
+ !
+
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - stx.libjava.tools.environment'!
 
 _stx_libjava_tools_environment_Environment_findClassBytesForClass0: this _: jclass
@@ -22010,11 +22021,11 @@
 !JavaNativeMethodImpl_OpenJDK6 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libjava/JavaNativeMethodImpl_OpenJDK6.st,v 1.6 2013-09-06 00:41:24 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaNativeMethodImpl_OpenJDK6.st,v 1.4 2013-04-27 12:29:56 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libjava/JavaNativeMethodImpl_OpenJDK6.st,v 1.6 2013-09-06 00:41:24 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaNativeMethodImpl_OpenJDK6.st,v 1.4 2013-04-27 12:29:56 cg Exp $'
 !
 
 version_HG
--- a/JavaObject.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/JavaObject.st	Wed Dec 18 12:03:32 2013 +0100
@@ -555,6 +555,39 @@
     "Created: / 08-11-2011 / 12:25:15 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
+!JavaObject methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^JavaVM _ARRAYLENGTH: self
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_CHECKCAST: cls
+    JavaVM _CHECKCAST: self _: cls.
+%{
+    void ___checkcast_bind();
+    ___checkcast_bind(__pilc, __Class(self));
+
+%}.  
+    ^self  
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+_INSTANCEOF: cls
+    | r |
+    
+    r := JavaVM _INSTANCEOF: self _: cls.
+%{
+    void ___instanceof_bind();    
+    ___instanceof_bind(__pilc, __Class(self), r);
+%}. 
+    ^r
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !JavaObject class methodsFor:'documentation'!
 
 version
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/JavaPrimitiveMirror.st	Wed Dec 18 12:03:32 2013 +0100
@@ -0,0 +1,115 @@
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+"
+"{ Package: 'stx:libjava' }"
+
+JavaMirror subclass:#JavaPrimitiveMirror
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:'JavaVMData'
+	category:'Languages-Java-Classes'
+!
+
+!JavaPrimitiveMirror class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 1996-2011 by Claus Gittinger
+
+ New code and modifications done at SWING Research Group [1]:
+
+ COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
+                            SWING Research Group, Czech Technical University in Prague
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+
+ [1] Code written at SWING Research Group contains a signature
+     of one of the above copright owners. For exact set of such code,
+     see the differences between this version and version stx:libjava
+     as of 1.9.2010
+
+"
+! !
+
+!JavaPrimitiveMirror methodsFor:'accessing'!
+
+getClassLoader
+    "Returns a class loader that loaded this class"
+
+    ^ nil
+
+    "Modified: / 31-07-2012 / 18:35:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredConstructors:publicOnly
+    "Returns an java.lang.reflect.Constructor[] with all constructors 
+     declared by this class"
+
+    ^ java_lang_reflect_Constructor javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:57:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredFields:publicOnly
+    "Returns an java.lang.reflect.Field[] with all constructors 
+     declared by this class."
+
+    ^java_lang_reflect_Field javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:58:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getDeclaredMethods:publicOnly 
+    "Returns an java.lang.reflect.Method[] with all methods 
+     declared by this class"
+    
+    ^ java_lang_reflect_Method javaArrayClass new:0.
+
+    "Modified: / 18-05-2013 / 10:58:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getInterfaces
+    "Return a list if interfaces"
+
+    ^ #()
+
+    "Modified: / 22-08-2012 / 11:07:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+getModifiers
+    "Return class modifiers (public/abstract/final...)"
+
+    ^ JavaConstants ACC_ABSTRACT | JavaConstants ACC_FINAL | JavaConstants ACC_PUBLIC
+
+    "Modified: / 22-08-2012 / 11:02:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!JavaPrimitiveMirror class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/JavaShort.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/JavaShort.st	Wed Dec 18 12:03:32 2013 +0100
@@ -69,9 +69,10 @@
 !
 
 javaWrapperClass
-    ^(Java classForName: 'java.lang.Short')
+    ^(JavaVM classForName: 'java.lang.Short' definedBy: nil)
 
     "Created: / 24-02-2012 / 19:42:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-05-2013 / 10:58:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaShort class methodsFor:'autoboxing support'!
@@ -79,11 +80,12 @@
 javaBox: anObject 
     | wrapper |
 
-    wrapper := (JavaVM classForName: 'java.lang.Short') new.
+    wrapper := (JavaVM classForName: 'java.lang.Short' definedBy: nil) new.
     wrapper perform: #'<init>(S)V' with: anObject.
     ^ wrapper
 
     "Created: / 16-08-2011 / 09:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-05-2013 / 10:58:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 javaUnbox:anObject 
--- a/JavaVM.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/JavaVM.st	Wed Dec 18 12:03:32 2013 +0100
@@ -52,7 +52,7 @@
 	instanceVariableNames:'vm constantPoolMapping javaClasses javaArrayClasses
 		javaMethodsPerMethod returnNilIfMissing realMethods'
 	classVariableNames:''
-	poolDictionaries:''
+	poolDictionaries:'JavaVMData'
 	privateIn:JavaVM
 !
 
@@ -1536,8 +1536,10 @@
 initializeBaseClasses
     "load req'd base classes"
 
+    java_lang_Object := java_lang_System := java_lang_Class := nil.
+
     #( 'java.lang.Object' 'java.lang.Class' 'java.lang.String' 'java.lang.System' ) do: [:cName |
-        (self classForName: cName) isNil ifTrue: [
+        (self classForName: cName definedBy: nil) isNil ifTrue: [
             AbortSignal raise.
             ^ self
         ]
@@ -1547,7 +1549,7 @@
 
     "Created: / 03-01-1998 / 21:13:28 / cg"
     "Modified: / 23-12-1999 / 19:27:42 / cg"
-    "Modified: / 08-02-2013 / 00:54:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-05-2013 / 16:37:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initializeClassReader
@@ -2516,6 +2518,31 @@
     "Created: / 23-02-2011 / 12:59:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!JavaVM class methodsFor:'accessing-builtin classes'!
+
+builtInClassNames
+    "Returns an array with (binary) names of classes known by the runtime system.
+     When a builtin class is loaded and registered in class registry,
+     JavaClassRegistry is sent #registerBuiltIn:
+
+     NOTE: If you add class here, you may want to update
+     JavaClassRegistry>>registerBuiltIn:.
+    "
+    ^#(
+        #'java/lang/Object'
+        #'java/lang/String'
+        #'java/lang/System'        
+        #'java/lang/Class'  
+
+        #'java/lang/reflect/Constructor'      
+        #'java/lang/reflect/Method'
+        #'java/lang/reflect/Field'
+
+    )
+
+    "Created: / 22-05-2013 / 20:38:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !JavaVM class methodsFor:'cache management'!
 
 flushCachesFor: aClass
@@ -2576,6 +2603,11 @@
     "load class from registry - load using given classLoader if not nil"
 
     | result binaryName |
+
+"/    classLoader isNil ifTrue:[
+"/        Logger log: 'JavaVM>>classForName: ''', className , ''' definedBy: nil' severity: #trace.
+"/    ].
+
     binaryName := className asSlashedJavaClassName.
     result := self
                 classForName: binaryName
@@ -2714,6 +2746,14 @@
     "Modified (comment): / 19-10-2013 / 17:32:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!JavaVM class methodsFor:'class loading'!
+
+
+
+
+
+ !
+
 !JavaVM class methodsFor:'class loading/unloading'!
 
 loadClassNamed: className usingClassLoader: classLoader
@@ -2816,6 +2856,11 @@
     "Modified (comment): / 15-11-2013 / 22:52:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+exceptionTrace:aBoolean
+    ExceptionTrace := aBoolean
+
+!
+
 monitorTrace
     ^ MonitorTrace
 
@@ -3159,7 +3204,7 @@
      "
      - If T is a class type, then T must be Object.
     "
-    t isJavaClassType ifTrue: [ ^ t == (self classForName: 'java.lang.Object') ].
+    t isJavaClassType ifTrue: [ ^ t == (self classForName: 'java.lang.Object' definedBy: nil) ].
      "
      - If T is an array type TC[], that is, an array of components of type TC ,
      then one of the following must be true:
@@ -3177,14 +3222,14 @@
      - If T is an interface type, T must be one of the interfaces implemented
      by arrays (JLS3 4.10.3).
     "
-    ((t binaryName == #'java/lang/Cloneable')
-        or: [ t binaryName == #'java/lang/Serializable' ]) ifTrue: [ ^ true ].
+    ((t name == #'java/lang/Cloneable')
+        or: [ t name == #'java/lang/Serializable' ]) ifTrue: [ ^ true ].
     ^ false
 
     "Modified: / 09-01-1999 / 00:45:21 / cg"
     "Created: / 11-02-2011 / 08:21:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 21-10-2011 / 13:50:36 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 08-10-2013 / 22:48:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-05-2013 / 12:57:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 javaStringObjectForString:string
@@ -3438,7 +3483,7 @@
         Logger
             log: 'JAVA: exception: ' , aJavaException class binaryName , ' ('
                     , tmpMessage , ')'
-            severity: #debug
+            severity: #trace
             facility: 'JVM'
     ].
     ExceptionDebug ifTrue: [
@@ -4972,42 +5017,31 @@
     "Modified: / 16-10-2013 / 12:53:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-_CHECKCAST: object _: class
-    "Called from the JIT-compiled code for unhandled cases.
-     Unlike in _CHECKCAST2:_: the second parameter is a class,,
-     not a class class reference!!
-
-     This method *MUST* return the object for this may lead
-     into GC. See ___checkcast() VM function
-     "
-
-    object isNil ifTrue: [ ^ object ].
-    (self canCast: object class to: class) ifFalse: [
+_CHECKCAST: obj _: cls
+    "A principal implementation of CHECKCAST instruction. Called by the bytecode
+     interpreter for unhandled cases."     
+    
+    obj isNil ifTrue:[ ^ obj ].
+    (self canCast: obj class to: cls) ifFalse: [
         self throwClassCastException.
-        ^ nil "Not reached"
-    ].
-    ^ object
-
-    "Created: / 08-01-1999 / 14:53:51 / cg"
-    "Modified: / 09-01-1999 / 00:45:21 / cg"
-    "Modified: / 09-10-2012 / 11:53:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+        ^ nil
+    ].
+    ^ obj
+
 !
 
 _CHECKCAST_R: object _: classRef
-    "Called by the VM (java bytecode interpreter) for unhandled cases.
-     Unlike in _CHECKCAST:_: the second parameter is a class reference,
-     not the class itself!! Called by JIT-compiled code."
-
+    "An implementation of CHECKCAST instruction. Called by the jitted code
+     when if the classRef hasn't been resolved at the time of jitting."
     | class |
 
     object isNil ifTrue: [ ^ object ].
     class := classRef resolve.
-    (self canCast: object class to: class) ifFalse: [
+    (self canCast: object class to: class) ifFalse:[
         self throwClassCastException.
-        ^ nil
-    ].
-
-    ^ object.
+        ^nil.
+    ].
+    ^object.
 
     "Created: / 19-05-2011 / 10:12:23 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
     "Modified (comment): / 09-10-2012 / 11:56:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -5132,15 +5166,16 @@
     "Created: / 8.1.1999 / 15:08:17 / cg"
 !
 
-_INSTANCEOF:object _:class
-    "Called from the jitted code for unhandled cases.
-     Unlike in _INSTANCEOF_R:_: the second parameter is a class,,
-     not a class class reference!!"
-
-    object isNil ifTrue:[^0].
-    ^(self canCast: object class to: class)
-        ifTrue:[1]
-        ifFalse:[0]
+_INSTANCEOF:obj _:cls
+    "A principal implementation of INSTANCEOF instruction. Called by the bytecode
+     interpreter for unhandled cases."     
+
+    obj isNil ifTrue: [ ^ 0 ].
+    (self canCast: obj class to: cls) ifFalse: [
+        ^ 0
+    ].
+    ^ 1
+
 
     "Created: / 08-01-1999 / 14:52:54 / cg"
     "Modified: / 27-01-1999 / 20:56:25 / cg"
@@ -5149,15 +5184,16 @@
 !
 
 _INSTANCEOF_R: object _: classRef
-    "Called by the VM (java bytecode interpreter) for unhandled cases.
-     Unlike _INSTANCEOF:_: the second parameter is a class reference,
-     not the class itself!! Called by JIT-compiled code."
+    "An implementation of INSTANCEOF instruction. Called by the jitted code
+     when if the classRef hasn't been resolved at the time of jitting."
    
     | class |
 
     object isNil ifTrue: [ ^ 0 ].
     class := classRef resolve.    
-    ^ (self canCast: object class to: class) ifTrue: [ 1 ] ifFalse: [ 0 ].
+     ^(self canCast: object class to: class) 
+        ifTrue:  [ 1 ]
+        ifFalse: [ 0 ].
 
     "Created: / 15-10-2012 / 21:51:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -6489,7 +6525,7 @@
 
     | array |
 
-    array := (vm classForName: 'java.lang.Class') javaArrayClass
+    array := java_lang_Class javaArrayClass
                 new: classes size.
     classes isNilOrEmptyCollection ifTrue: [ ^ array ].
     classes
@@ -6498,7 +6534,7 @@
 
     "Modified: / 28-01-2011 / 15:15:44 / Marcel Hlopko <hlopik@gmail.com>"
     "Created: / 04-02-2011 / 22:08:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 11-02-2011 / 10:21:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-05-2013 / 16:29:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 javaClassObjectForClass:aClass
@@ -6531,12 +6567,13 @@
         aClass == Object ifTrue:[ self halt. ].
         aClass lookupObject: JavaLookup instance.
     ].
-    javaClassObj := (vm classForName: 'java.lang.Class') new.
+    javaClassObj := java_lang_Class new.
     self rememberJavaClassObject: javaClassObj for: aClass.
     ^ javaClassObj
 
     "Modified: / 28-01-2011 / 15:15:44 / Marcel Hlopko <hlopik@gmail.com>"
     "Created: / 12-08-2011 / 19:07:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-05-2013 / 16:28:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 javaClassObjectForClassNamed: className
@@ -6750,11 +6787,11 @@
 !JavaVM class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libjava/JavaVM.st,v 1.192 2013-09-06 00:41:27 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaVM.st,v 1.189 2013-02-25 11:15:31 vrany Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libjava/JavaVM.st,v 1.192 2013-09-06 00:41:27 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaVM.st,v 1.189 2013-02-25 11:15:31 vrany Exp $'
 !
 
 version_SVN
--- a/JavaVMData.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/JavaVMData.st	Wed Dec 18 12:03:32 2013 +0100
@@ -23,29 +23,30 @@
 SharedPool subclass:#JavaVMData
 	instanceVariableNames:''
 	classVariableNames:'FileIOTrace JavaWindowGroup ThreadTrace JavaMethods
-		SystemClassLoader DrawOPTrace JavaEventThread AssertionsEnabled
-		SocketConnectConfirmation NoAudio SimulatedLibs OpenFileTable
-		ZipCache ZipCacheLastAccessed EventTrace FileOpenConfirmation
-		ZipEntryCache ZipEntryCacheLock ZipEntryCacheFirstFree LibPath
-		WindowOPTrace FileAccessTrace ClassRegistry WindowCreationTrace
-		SimulatedNativeMemory KnownWindows PermittedHostConnects
-		FullExceptionTrace SimulatedNativeLibs StartupTime FileOpenTrace
-		ImageStretchCache LoadedNativeLibs JavaConsoleStream
-		JavaEventQueueThread PermittedDirectories
-		StdinReplacementFileQuerySignal JavaScreenUpdaterThread
-		ZipInflaters LoadedLibs EnteredMonitorsPerProcess
-		_java_net_DatagramPacket_CLASS _java_net_DatagramPacket_buf_ID
-		_java_net_DatagramPacket_offset_ID
-		_java_net_DatagramPacket_length_ID
-		_java_net_DatagramPacket_bufLength_ID
-		_java_net_DatagramPacket_address_ID
-		_java_net_DatagramPacket_port_ID _java_net_InetAddress_CLASS
-		_java_net_InetAddress_holder_ID
-		_java_net_InetAddress_canonicalHostName_ID
-		_java_net_InetAddress_family_ID _java_net_InetAddress_address_ID
-		_java_net_InetAddress_hostName_ID _java_net_Inet4Address_CLASS
-		_java_net_PlainDatagramSocketImpl_CLASS
-		_java_net_PlainDatagramSocketImpl_timeout_ID'
+                SystemClassLoader DrawOPTrace JavaEventThread AssertionsEnabled
+                SocketConnectConfirmation NoAudio SimulatedLibs OpenFileTable
+                ZipCache ZipCacheLastAccessed EventTrace FileOpenConfirmation
+                ZipEntryCache ZipEntryCacheLock ZipEntryCacheFirstFree LibPath
+                WindowOPTrace FileAccessTrace ClassRegistry WindowCreationTrace
+                SimulatedNativeMemory KnownWindows PermittedHostConnects
+                FullExceptionTrace SimulatedNativeLibs StartupTime FileOpenTrace
+                ImageStretchCache LoadedNativeLibs JavaConsoleStream
+                JavaEventQueueThread PermittedDirectories
+                StdinReplacementFileQuerySignal JavaScreenUpdaterThread
+                ZipInflaters LoadedLibs EnteredMonitorsPerProcess
+                _java_net_DatagramPacket_CLASS _java_net_DatagramPacket_buf_ID
+                java_lang_Object java_lang_System java_lang_Class java_lang_reflect_Constructor java_lang_reflect_Method java_lang_reflect_Field
+                _java_net_DatagramPacket_offset_ID
+                _java_net_DatagramPacket_length_ID
+                _java_net_DatagramPacket_bufLength_ID
+                _java_net_DatagramPacket_address_ID
+                _java_net_DatagramPacket_port_ID _java_net_InetAddress_CLASS
+                _java_net_InetAddress_holder_ID
+                _java_net_InetAddress_canonicalHostName_ID
+                _java_net_InetAddress_family_ID _java_net_InetAddress_address_ID
+                _java_net_InetAddress_hostName_ID _java_net_Inet4Address_CLASS
+                _java_net_PlainDatagramSocketImpl_CLASS
+                _java_net_PlainDatagramSocketImpl_timeout_ID'
 	poolDictionaries:''
 	category:'Languages-Java-Support'
 !
@@ -122,7 +123,7 @@
 !JavaVMData class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libjava/JavaVMData.st,v 1.3 2013-09-06 00:41:28 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/JavaVMData.st,v 1.2 2013-02-25 11:15:31 vrany Exp $'
 !
 
 version_HG
--- a/Make.proto	Wed Dec 18 00:02:10 2013 +0100
+++ b/Make.proto	Wed Dec 18 12:03:32 2013 +0100
@@ -144,8 +144,6 @@
 	cd ../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 
 
 
@@ -199,7 +197,6 @@
 $(OUTDIR)JavaLocalVariableTableEntry.$(O) JavaLocalVariableTableEntry.$(H): JavaLocalVariableTableEntry.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLookup.$(O) JavaLookup.$(H): JavaLookup.st $(INCLUDE_TOP)/stx/libbasic/Lookup.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMetaclass.$(O) JavaMetaclass.$(H): JavaMetaclass.st $(INCLUDE_TOP)/stx/libbasic/Metaclass.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)JavaMirror.$(O) JavaMirror.$(H): JavaMirror.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMonitor.$(O) JavaMonitor.$(H): JavaMonitor.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNameAndType2.$(O) JavaNameAndType2.$(H): JavaNameAndType2.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNativeMemory.$(O) JavaNativeMemory.$(H): JavaNativeMemory.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(STCHDR)
@@ -256,6 +253,7 @@
 $(OUTDIR)JavaMethod.$(O) JavaMethod.$(H): JavaMethod.st $(INCLUDE_TOP)/stx/libjava/JavaConstants.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodAnnotationContainer.$(O) JavaMethodAnnotationContainer.$(H): JavaMethodAnnotationContainer.st $(INCLUDE_TOP)/stx/libjava/JavaAnnotationContainer.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodDescriptor.$(O) JavaMethodDescriptor.$(H): JavaMethodDescriptor.st $(INCLUDE_TOP)/stx/libjava/JavaDescriptor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)JavaMirror.$(O) JavaMirror.$(H): JavaMirror.st $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNativeMethodImpl_OpenJDK6.$(O) JavaNativeMethodImpl_OpenJDK6.$(H): JavaNativeMethodImpl_OpenJDK6.st $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaRelease.$(O) JavaRelease.$(H): JavaRelease.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaStringRef2.$(O) JavaStringRef2.$(H): JavaStringRef2.st $(INCLUDE_TOP)/stx/libjava/JavaRef2.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -267,8 +265,11 @@
 $(OUTDIR)ProxyMethodGuardNode.$(O) ProxyMethodGuardNode.$(H): ProxyMethodGuardNode.st $(INCLUDE_TOP)/stx/libjava/ProxyMethodNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodInvocationNode.$(O) ProxyMethodInvocationNode.$(H): ProxyMethodInvocationNode.st $(INCLUDE_TOP)/stx/libjava/ProxyMethodNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodJavaFieldAccessor.$(O) ProxyMethodJavaFieldAccessor.$(H): ProxyMethodJavaFieldAccessor.st $(INCLUDE_TOP)/stx/libjava/ProxyMethodNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)JavaAlienMirror.$(O) JavaAlienMirror.$(H): JavaAlienMirror.st $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(INCLUDE_TOP)/stx/libjava/JavaMirror.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)JavaArrayMirror.$(O) JavaArrayMirror.$(H): JavaArrayMirror.st $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(INCLUDE_TOP)/stx/libjava/JavaMirror.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodePreresolver.$(O) JavaByteCodePreresolver.$(H): JavaByteCodePreresolver.st $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessorAdapter.$(H) $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClass.$(O) JavaClass.$(H): JavaClass.st $(INCLUDE_TOP)/stx/libjava/JavaConstants.$(H) $(INCLUDE_TOP)/stx/libjava/JavaBehavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Array.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(STCHDR)
+$(OUTDIR)JavaClassMirror.$(O) JavaClassMirror.$(H): JavaClassMirror.st $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(INCLUDE_TOP)/stx/libjava/JavaMirror.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassPathBundle.$(O) JavaClassPathBundle.$(H): JavaClassPathBundle.st $(INCLUDE_TOP)/stx/libjava/JavaCodeBundle.$(H) $(INCLUDE_TOP)/stx/libjava/JavaCodeLibraryOrBundle.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaFieldRef2.$(O) JavaFieldRef2.$(H): JavaFieldRef2.st $(INCLUDE_TOP)/stx/libjava/JavaClassContentRef2.$(H) $(INCLUDE_TOP)/stx/libjava/JavaRef2.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodAnalyzer.$(O) JavaMethodAnalyzer.$(H): JavaMethodAnalyzer.st $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessorAdapter.$(H) $(INCLUDE_TOP)/stx/libjava/JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -276,6 +277,7 @@
 $(OUTDIR)JavaMethodWithException.$(O) JavaMethodWithException.$(H): JavaMethodWithException.st $(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)JavaNativeMethodImpl_OpenJDK7.$(O) JavaNativeMethodImpl_OpenJDK7.$(H): JavaNativeMethodImpl_OpenJDK7.st $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(INCLUDE_TOP)/stx/libjava/JavaNativeMethodImpl_OpenJDK6.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNativeMethodImpl_SunJDK6.$(O) JavaNativeMethodImpl_SunJDK6.$(H): JavaNativeMethodImpl_SunJDK6.st $(INCLUDE_TOP)/stx/libjava/JavaNativeMethodImpl_OpenJDK6.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)JavaPrimitiveMirror.$(O) JavaPrimitiveMirror.$(H): JavaPrimitiveMirror.st $(INCLUDE_TOP)/stx/libjava/JavaVMData.$(H) $(INCLUDE_TOP)/stx/libjava/JavaMirror.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodAndNode.$(O) ProxyMethodAndNode.$(H): ProxyMethodAndNode.st $(INCLUDE_TOP)/stx/libjava/ProxyMethodConditionNode.$(H) $(INCLUDE_TOP)/stx/libjava/ProxyMethodNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodBlockInvocationNode.$(O) ProxyMethodBlockInvocationNode.$(H): ProxyMethodBlockInvocationNode.st $(INCLUDE_TOP)/stx/libjava/ProxyMethodInvocationNode.$(H) $(INCLUDE_TOP)/stx/libjava/ProxyMethodNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodJavaFieldGetter.$(O) ProxyMethodJavaFieldGetter.$(H): ProxyMethodJavaFieldGetter.st $(INCLUDE_TOP)/stx/libjava/ProxyMethodJavaFieldAccessor.$(H) $(INCLUDE_TOP)/stx/libjava/ProxyMethodNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec	Wed Dec 18 00:02:10 2013 +0100
+++ b/Make.spec	Wed Dec 18 12:03:32 2013 +0100
@@ -84,7 +84,6 @@
 	JavaLocalVariableTableEntry \
 	JavaLookup \
 	JavaMetaclass \
-	JavaMirror \
 	JavaMonitor \
 	JavaNameAndType2 \
 	JavaNativeMemory \
@@ -141,6 +140,7 @@
 	JavaMethod \
 	JavaMethodAnnotationContainer \
 	JavaMethodDescriptor \
+	JavaMirror \
 	JavaNativeMethodImpl_OpenJDK6 \
 	JavaRelease \
 	JavaStringRef2 \
@@ -152,8 +152,11 @@
 	ProxyMethodGuardNode \
 	ProxyMethodInvocationNode \
 	ProxyMethodJavaFieldAccessor \
+	JavaAlienMirror \
+	JavaArrayMirror \
 	JavaByteCodePreresolver \
 	JavaClass \
+	JavaClassMirror \
 	JavaClassPathBundle \
 	JavaFieldRef2 \
 	JavaMethodAnalyzer \
@@ -161,6 +164,7 @@
 	JavaMethodWithException \
 	JavaNativeMethodImpl_OpenJDK7 \
 	JavaNativeMethodImpl_SunJDK6 \
+	JavaPrimitiveMirror \
 	ProxyMethodAndNode \
 	ProxyMethodBlockInvocationNode \
 	ProxyMethodJavaFieldGetter \
@@ -213,7 +217,6 @@
     $(OUTDIR_SLASH)JavaLocalVariableTableEntry.$(O) \
     $(OUTDIR_SLASH)JavaLookup.$(O) \
     $(OUTDIR_SLASH)JavaMetaclass.$(O) \
-    $(OUTDIR_SLASH)JavaMirror.$(O) \
     $(OUTDIR_SLASH)JavaMonitor.$(O) \
     $(OUTDIR_SLASH)JavaNameAndType2.$(O) \
     $(OUTDIR_SLASH)JavaNativeMemory.$(O) \
@@ -270,6 +273,7 @@
     $(OUTDIR_SLASH)JavaMethod.$(O) \
     $(OUTDIR_SLASH)JavaMethodAnnotationContainer.$(O) \
     $(OUTDIR_SLASH)JavaMethodDescriptor.$(O) \
+    $(OUTDIR_SLASH)JavaMirror.$(O) \
     $(OUTDIR_SLASH)JavaNativeMethodImpl_OpenJDK6.$(O) \
     $(OUTDIR_SLASH)JavaRelease.$(O) \
     $(OUTDIR_SLASH)JavaStringRef2.$(O) \
@@ -281,8 +285,11 @@
     $(OUTDIR_SLASH)ProxyMethodGuardNode.$(O) \
     $(OUTDIR_SLASH)ProxyMethodInvocationNode.$(O) \
     $(OUTDIR_SLASH)ProxyMethodJavaFieldAccessor.$(O) \
+    $(OUTDIR_SLASH)JavaAlienMirror.$(O) \
+    $(OUTDIR_SLASH)JavaArrayMirror.$(O) \
     $(OUTDIR_SLASH)JavaByteCodePreresolver.$(O) \
     $(OUTDIR_SLASH)JavaClass.$(O) \
+    $(OUTDIR_SLASH)JavaClassMirror.$(O) \
     $(OUTDIR_SLASH)JavaClassPathBundle.$(O) \
     $(OUTDIR_SLASH)JavaFieldRef2.$(O) \
     $(OUTDIR_SLASH)JavaMethodAnalyzer.$(O) \
@@ -290,6 +297,7 @@
     $(OUTDIR_SLASH)JavaMethodWithException.$(O) \
     $(OUTDIR_SLASH)JavaNativeMethodImpl_OpenJDK7.$(O) \
     $(OUTDIR_SLASH)JavaNativeMethodImpl_SunJDK6.$(O) \
+    $(OUTDIR_SLASH)JavaPrimitiveMirror.$(O) \
     $(OUTDIR_SLASH)ProxyMethodAndNode.$(O) \
     $(OUTDIR_SLASH)ProxyMethodBlockInvocationNode.$(O) \
     $(OUTDIR_SLASH)ProxyMethodJavaFieldGetter.$(O) \
--- a/abbrev.stc	Wed Dec 18 00:02:10 2013 +0100
+++ b/abbrev.stc	Wed Dec 18 12:03:32 2013 +0100
@@ -1,154 +1,3 @@
-# automagically generated by the project definition
-# this file is needed for stc to be able to compile modules independently.
-# it provides information about a classes filename, category and especially namespace.
-GroovyCompiler GroovyCompiler stx:libjava 'Languages-Groovy-Compiler' 0
-GroovyEvaluator GroovyEvaluator stx:libjava 'Languages-Groovy-Compiler' 0
-GroovyLanguage GroovyLanguage stx:libjava 'Languages-Groovy-Support' 1
-GroovySourceFileWriter GroovySourceFileWriter stx:libjava 'Languages-Groovy-Support' 0
-JavaAnnotation JavaAnnotation stx:libjava 'Languages-Java-Reader-Support' 0
-JavaAnnotationContainer JavaAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
-JavaAnnotationDefault JavaAnnotationDefault stx:libjava 'Languages-Java-Annotations' 1
-JavaAnnotationDictionary JavaAnnotationDictionary stx:libjava 'Languages-Java-Annotations' 1
-JavaAnnotationValue JavaAnnotationValue stx:libjava 'Languages-Java-Reader-Support' 0
-JavaAntProjectResource JavaAntProjectResource stx:libjava 'Languages-Java-Tests' 2
-JavaArray JavaArray stx:libjava 'Languages-Java-Classes' 1
-JavaByte JavaByte stx:libjava 'Languages-Java-Support' 0
-JavaByteCodeProcessor JavaByteCodeProcessor stx:libjava 'Languages-Java-Bytecode' 0
-JavaByteCodeProcessorTests JavaByteCodeProcessorTests stx:libjava 'Languages-Java-Tests' 1
-JavaClassAccessor JavaClassAccessor stx:libjava 'Languages-Java-Classes' 0
-JavaClassLoadingTests JavaClassLoadingTests stx:libjava 'Languages-Java-Tests-ClassLoading' 1
-JavaClassQuery JavaClassQuery stx:libjava 'Languages-Java-Classes' 1
-JavaClassReloader JavaClassReloader stx:libjava 'Languages-Java-Support' 0
-JavaCodeLibraryOrBundle JavaCodeLibraryOrBundle stx:libjava 'Languages-Java-Support-Libraries' 0
 JavaCompilerForSmalltalkExtensionsOnly JavaCompilerForSmalltalkExtensionsOnly stx:libjava 'Languages-Java-Support-Compiling' 0
-JavaCompiler_Eclipse JavaCompiler_Eclipse stx:libjava 'Languages-Java-Tools-Eclipse' 0
-JavaConstantPool JavaConstantPool stx:libjava 'Languages-Java-Reader-Support' 0
-JavaConstants JavaConstants stx:libjava 'Languages-Java-Support' 0
-JavaContext JavaContext stx:libjava 'Languages-Java-Support' 0
-JavaDecompiler JavaDecompiler stx:libjava 'Languages-Java-Support-Decompiling' 0
-JavaDescriptor JavaDescriptor stx:libjava 'Languages-Java-Support' 0
-JavaError JavaError stx:libjava 'Languages-Java-Support' 1
-JavaExceptionTable JavaExceptionTable stx:libjava 'Languages-Java-Support' 0
-JavaExceptionTests JavaExceptionTests stx:libjava 'Languages-Java-Tests' 1
-JavaField JavaField stx:libjava 'Languages-Java-Reader-Support' 0
-JavaFinalizationRegistry JavaFinalizationRegistry stx:libjava 'Languages-Java-Support' 0
-JavaFreshlyInitializedResource JavaFreshlyInitializedResource stx:libjava 'Languages-Java-Tests' 1
 JavaInnerClasses JavaInnerClasses stx:libjava 'Languages-Java-Support' 0
-JavaJUnitTests JavaJUnitTests stx:libjava 'Languages-Java-Tests-Libraries' 1
-JavaLanguage JavaLanguage stx:libjava 'Languages-Java-Support' 1
-JavaLibraries JavaLibraries stx:libjava 'Languages-Java-Support' 0
-JavaLibrariesResource JavaLibrariesResource stx:libjava 'Languages-Java-Tests' 1
-JavaLocalVariableTable JavaLocalVariableTable stx:libjava 'Languages-Java-Support' 0
-JavaLocalVariableTableEntry JavaLocalVariableTableEntry stx:libjava 'Languages-Java-Support' 0
-JavaLookup JavaLookup stx:libjava 'Languages-Java-Interop' 0
-JavaLookupResolutionAlgorithmTests JavaLookupResolutionAlgorithmTests stx:libjava 'Languages-Java-Tests-Interop' 1
-JavaLookupTests JavaLookupTests stx:libjava 'Languages-Java-Tests-Interop' 1
-JavaLookupTestsResource JavaLookupTestsResource stx:libjava 'Languages-Java-Tests-Interop' 3
-JavaMetaclass JavaMetaclass stx:libjava 'Languages-Java-Classes' 0
-JavaMirror JavaMirror stx:libjava 'Languages-Java-Classes' 0
-JavaMonitor JavaMonitor stx:libjava 'Languages-Java-Support' 0
-JavaMonitorsTests JavaMonitorsTests stx:libjava 'Languages-Java-Tests' 1
-JavaNameAndType2 JavaNameAndType2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaNativeMemory JavaNativeMemory stx:libjava 'Languages-Java-Support' 0
-JavaNativeMemoryTests JavaNativeMemoryTests stx:libjava 'Languages-Java-Tests' 1
-JavaNioSupport JavaNioSupport stx:libjava 'Languages-Java-Support-Native' 0
-JavaObject JavaObject stx:libjava 'Languages-Java-Classes' 0
-JavaObjectDictionary JavaObjectDictionary stx:libjava 'Languages-Java-Support' 0
-JavaPackage JavaPackage stx:libjava 'Languages-Java-Support' 0
-JavaPopUpView JavaPopUpView stx:libjava 'Languages-Java-Views-Support' 2
-JavaProcess JavaProcess stx:libjava 'Languages-Java-Classes' 0
-JavaRef2 JavaRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaRefsAndConstantPoolTestCase JavaRefsAndConstantPoolTestCase stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaResolver JavaResolver stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaShort JavaShort stx:libjava 'Languages-Java-Support' 0
-JavaSlotIndexCache JavaSlotIndexCache stx:libjava 'Languages-Java-Support' 0
-JavaSocket JavaSocket stx:libjava 'Languages-Java-Support' 0
-JavaSourceCodeCache JavaSourceCodeCache stx:libjava 'Languages-Java-Support' 1
-JavaSourceFileWriter JavaSourceFileWriter stx:libjava 'Languages-Java-Support' 0
-JavaTestCaseProxy JavaTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
-JavaTestsLoader JavaTestsLoader stx:libjava 'Languages-Java-Tests' 0
-JavaTopView JavaTopView stx:libjava 'Languages-Java-Views-Support' 2
-JavaUTF8Tests JavaUTF8Tests stx:libjava 'Languages-Java-Tests' 1
-JavaUnresolvedCompilationError JavaUnresolvedCompilationError stx:libjava 'Languages-Java-Support' 1
-JavaUnresolvedConstant JavaUnresolvedConstant stx:libjava 'Languages-Java-Reader-Support' 0
-JavaUtilities JavaUtilities stx:libjava 'Languages-Java-Utilities' 0
-JavaVMData JavaVMData stx:libjava 'Languages-Java-Support' 0
-JavaView JavaView stx:libjava 'Languages-Java-Views-Support' 2
-JavaZipSupport JavaZipSupport stx:libjava 'Languages-Java-Support-Native' 0
-ProxyMethod ProxyMethod stx:libjava 'System-Compiler-Interop' 0
-ProxyMethodCompiler ProxyMethodCompiler stx:libjava 'System-Compiler-Interop' 0
-ProxyMethodNode ProxyMethodNode stx:libjava 'System-Compiler-Interop' 0
-SmalltalkAppletContext SmalltalkAppletContext stx:libjava 'Languages-Java-Views-Support' 0
-SmalltalkAppletStub SmalltalkAppletStub stx:libjava 'Languages-Java-Views-Support' 0
-stx_libjava stx_libjava stx:libjava '* Projects & Packages *' 3
-GroovyMetaclass GroovyMetaclass stx:libjava 'Languages-Groovy-Classes' 0
-JUnitTestCaseProxy JUnitTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
-Java Java stx:libjava 'Languages-Java-Support' 0
-JavaAnnotationArrayValue JavaAnnotationArrayValue stx:libjava 'Languages-Java-Reader-Support' 0
-JavaAnnotationClassValue JavaAnnotationClassValue stx:libjava 'Languages-Java-Reader-Support' 0
-JavaAnnotationEnumValue JavaAnnotationEnumValue stx:libjava 'Languages-Java-Reader-Support' 0
-JavaAnnotationNestedAnnotationValue JavaAnnotationNestedAnnotationValue stx:libjava 'Languages-Java-Reader-Support' 0
-JavaAnnotationPrimitiveValue JavaAnnotationPrimitiveValue stx:libjava 'Languages-Java-Reader-Support' 0
-JavaBehavior JavaBehavior stx:libjava 'Languages-Java-Classes' 0
-JavaByteCodeDisassembler JavaByteCodeDisassembler stx:libjava 'Languages-Java-Bytecode' 0
-JavaByteCodeDisassemblerTests JavaByteCodeDisassemblerTests stx:libjava 'Languages-Java-Tests' 1
-JavaByteCodeEnumerator JavaByteCodeEnumerator stx:libjava 'Languages-Java-Support-Decompiling' 0
-JavaByteCodeProcessorAdapter JavaByteCodeProcessorAdapter stx:libjava 'Languages-Java-Bytecode' 0
-JavaClassAnnotationContainer JavaClassAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
-JavaClassContentRef2 JavaClassContentRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaClassReader JavaClassReader stx:libjava 'Languages-Java-Support' 0
-JavaClassReaderTests JavaClassReaderTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaClassRef2 JavaClassRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaClassRefTests JavaClassRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaClassRegistry JavaClassRegistry stx:libjava 'Languages-Java-Support' 0
-JavaCodeBundle JavaCodeBundle stx:libjava 'Languages-Java-Support-Libraries' 0
-JavaCodeLibrary JavaCodeLibrary stx:libjava 'Languages-Java-Support-Libraries' 0
-JavaEmbeddedFrameView JavaEmbeddedFrameView stx:libjava 'Languages-Java-Views-Support' 2
-JavaFieldAnnotationContainer JavaFieldAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
-JavaFieldDescriptor JavaFieldDescriptor stx:libjava 'Languages-Java-Support' 0
-JavaFieldDescriptorWithUnionType JavaFieldDescriptorWithUnionType stx:libjava 'Languages-Java-Support' 0
-JavaFieldRefTests JavaFieldRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaInitializedResource JavaInitializedResource stx:libjava 'Languages-Java-Tests' 2
-JavaInterfaceMethodRefTests JavaInterfaceMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaInvalidRefError JavaInvalidRefError stx:libjava 'Languages-Java-Support' 1
-JavaMethod JavaMethod stx:libjava 'Languages-Java-Classes' 0
-JavaMethodAnnotationContainer JavaMethodAnnotationContainer stx:libjava 'Languages-Java-Annotations' 1
-JavaMethodDescriptor JavaMethodDescriptor stx:libjava 'Languages-Java-Support' 0
-JavaMethodRefTests JavaMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaNativeMethodImpl_OpenJDK6 JavaNativeMethodImpl_OpenJDK6 stx:libjava 'Languages-Java-Support-OpenJDK6' 0
-JavaRefMock JavaRefMock stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 0
-JavaRelease JavaRelease stx:libjava 'Languages-Java-Support' 1
-JavaRuntimeConstantPoolTests JavaRuntimeConstantPoolTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaStringRef2 JavaStringRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaTestsResource JavaTestsResource stx:libjava 'Languages-Java-Tests' 2
-JavaUnhandledExceptionError JavaUnhandledExceptionError stx:libjava 'Languages-Java-Support' 1
-JavaUnresolvedClassConstant JavaUnresolvedClassConstant stx:libjava 'Languages-Java-Reader-Support' 0
-JavaUnresolvedStringConstant JavaUnresolvedStringConstant stx:libjava 'Languages-Java-Reader-Support' 0
-JavaVM JavaVM stx:libjava 'Languages-Java-Support' 0
-ProxyMethodConditionNode ProxyMethodConditionNode stx:libjava 'System-Compiler-Interop' 0
-ProxyMethodGuardNode ProxyMethodGuardNode stx:libjava 'System-Compiler-Interop' 0
-ProxyMethodInvocationNode ProxyMethodInvocationNode stx:libjava 'System-Compiler-Interop' 0
-ProxyMethodJavaFieldAccessor ProxyMethodJavaFieldAccessor stx:libjava 'Languages-Java-Interop' 0
-TestletTestCaseProxy TestletTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
-JavaByteCodePreresolver JavaByteCodePreresolver stx:libjava 'Languages-Java-Bytecode' 0
-JavaClass JavaClass stx:libjava 'Languages-Java-Classes' 0
-JavaClassPathBundle JavaClassPathBundle stx:libjava 'Languages-Java-Support-Libraries' 0
-JavaFieldRef2 JavaFieldRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
 JavaMethodAnalyzer JavaMethodAnalyzer stx:libjava 'Languages-Java-Support-Decompiling' 0
-JavaMethodRef2 JavaMethodRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaMethodWithException JavaMethodWithException stx:libjava 'Languages-Java-Classes' 0
-JavaNativeMethodImpl_OpenJDK7 JavaNativeMethodImpl_OpenJDK7 stx:libjava 'Languages-Java-Support-OpenJDK7' 0
-JavaNativeMethodImpl_SunJDK6 JavaNativeMethodImpl_SunJDK6 stx:libjava 'Languages-Java-Support-OpenJDK6' 0
-ProxyMethodAndNode ProxyMethodAndNode stx:libjava 'System-Compiler-Interop' 0
-ProxyMethodBlockInvocationNode ProxyMethodBlockInvocationNode stx:libjava 'System-Compiler-Interop' 0
-ProxyMethodJavaFieldGetter ProxyMethodJavaFieldGetter stx:libjava 'Languages-Java-Interop' 0
-ProxyMethodJavaFieldSetter ProxyMethodJavaFieldSetter stx:libjava 'Languages-Java-Interop' 0
-ProxyMethodMethodInvocationNode ProxyMethodMethodInvocationNode stx:libjava 'System-Compiler-Interop' 0
-ProxyMethodTypeCheckNode ProxyMethodTypeCheckNode stx:libjava 'System-Compiler-Interop' 0
-GroovyClass GroovyClass stx:libjava 'Languages-Groovy-Classes' 0
-JavaInterfaceMethodRef2 JavaInterfaceMethodRef2 stx:libjava 'Languages-Java-Reader-Support-new' 0
-JavaMethodWithHandler JavaMethodWithHandler stx:libjava 'Languages-Java-Classes' 0
-JavaNativeMethodImpl_SunJDK7 JavaNativeMethodImpl_SunJDK7 stx:libjava 'Languages-Java-Support-OpenJDK7' 0
-ProxyMethodJavaMethodInvocationNode ProxyMethodJavaMethodInvocationNode stx:libjava 'Languages-Java-Interop' 0
-ProxyMethodJavaTypeCheckNode ProxyMethodJavaTypeCheckNode stx:libjava 'Languages-Java-Interop' 0
-JavaNativeMethod JavaNativeMethod stx:libjava 'Languages-Java-Classes' 0
--- a/bc.mak	Wed Dec 18 00:02:10 2013 +0100
+++ b/bc.mak	Wed Dec 18 12:03:32 2013 +0100
@@ -54,8 +54,6 @@
 	pushd ..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libbasic3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
 
 
@@ -132,7 +130,6 @@
 $(OUTDIR)JavaLocalVariableTableEntry.$(O) JavaLocalVariableTableEntry.$(H): JavaLocalVariableTableEntry.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaLookup.$(O) JavaLookup.$(H): JavaLookup.st $(INCLUDE_TOP)\stx\libbasic\Lookup.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMetaclass.$(O) JavaMetaclass.$(H): JavaMetaclass.st $(INCLUDE_TOP)\stx\libbasic\Metaclass.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)JavaMirror.$(O) JavaMirror.$(H): JavaMirror.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMonitor.$(O) JavaMonitor.$(H): JavaMonitor.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNameAndType2.$(O) JavaNameAndType2.$(H): JavaNameAndType2.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNativeMemory.$(O) JavaNativeMemory.$(H): JavaNativeMemory.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Link.$(H) $(STCHDR)
@@ -189,6 +186,7 @@
 $(OUTDIR)JavaMethod.$(O) JavaMethod.$(H): JavaMethod.st $(INCLUDE_TOP)\stx\libjava\JavaConstants.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodAnnotationContainer.$(O) JavaMethodAnnotationContainer.$(H): JavaMethodAnnotationContainer.st $(INCLUDE_TOP)\stx\libjava\JavaAnnotationContainer.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodDescriptor.$(O) JavaMethodDescriptor.$(H): JavaMethodDescriptor.st $(INCLUDE_TOP)\stx\libjava\JavaDescriptor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)JavaMirror.$(O) JavaMirror.$(H): JavaMirror.st $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNativeMethodImpl_OpenJDK6.$(O) JavaNativeMethodImpl_OpenJDK6.$(H): JavaNativeMethodImpl_OpenJDK6.st $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaRelease.$(O) JavaRelease.$(H): JavaRelease.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaStringRef2.$(O) JavaStringRef2.$(H): JavaStringRef2.st $(INCLUDE_TOP)\stx\libjava\JavaRef2.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -200,8 +198,11 @@
 $(OUTDIR)ProxyMethodGuardNode.$(O) ProxyMethodGuardNode.$(H): ProxyMethodGuardNode.st $(INCLUDE_TOP)\stx\libjava\ProxyMethodNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodInvocationNode.$(O) ProxyMethodInvocationNode.$(H): ProxyMethodInvocationNode.st $(INCLUDE_TOP)\stx\libjava\ProxyMethodNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodJavaFieldAccessor.$(O) ProxyMethodJavaFieldAccessor.$(H): ProxyMethodJavaFieldAccessor.st $(INCLUDE_TOP)\stx\libjava\ProxyMethodNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)JavaAlienMirror.$(O) JavaAlienMirror.$(H): JavaAlienMirror.st $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(INCLUDE_TOP)\stx\libjava\JavaMirror.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)JavaArrayMirror.$(O) JavaArrayMirror.$(H): JavaArrayMirror.st $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(INCLUDE_TOP)\stx\libjava\JavaMirror.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaByteCodePreresolver.$(O) JavaByteCodePreresolver.$(H): JavaByteCodePreresolver.st $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessorAdapter.$(H) $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClass.$(O) JavaClass.$(H): JavaClass.st $(INCLUDE_TOP)\stx\libjava\JavaConstants.$(H) $(INCLUDE_TOP)\stx\libjava\JavaBehavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Class.$(H) $(INCLUDE_TOP)\stx\libbasic\ClassDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Array.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(STCHDR)
+$(OUTDIR)JavaClassMirror.$(O) JavaClassMirror.$(H): JavaClassMirror.st $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(INCLUDE_TOP)\stx\libjava\JavaMirror.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaClassPathBundle.$(O) JavaClassPathBundle.$(H): JavaClassPathBundle.st $(INCLUDE_TOP)\stx\libjava\JavaCodeBundle.$(H) $(INCLUDE_TOP)\stx\libjava\JavaCodeLibraryOrBundle.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaFieldRef2.$(O) JavaFieldRef2.$(H): JavaFieldRef2.st $(INCLUDE_TOP)\stx\libjava\JavaClassContentRef2.$(H) $(INCLUDE_TOP)\stx\libjava\JavaRef2.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaMethodAnalyzer.$(O) JavaMethodAnalyzer.$(H): JavaMethodAnalyzer.st $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessorAdapter.$(H) $(INCLUDE_TOP)\stx\libjava\JavaByteCodeProcessor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -209,6 +210,7 @@
 $(OUTDIR)JavaMethodWithException.$(O) JavaMethodWithException.$(H): JavaMethodWithException.st $(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)JavaNativeMethodImpl_OpenJDK7.$(O) JavaNativeMethodImpl_OpenJDK7.$(H): JavaNativeMethodImpl_OpenJDK7.st $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(INCLUDE_TOP)\stx\libjava\JavaNativeMethodImpl_OpenJDK6.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)JavaNativeMethodImpl_SunJDK6.$(O) JavaNativeMethodImpl_SunJDK6.$(H): JavaNativeMethodImpl_SunJDK6.st $(INCLUDE_TOP)\stx\libjava\JavaNativeMethodImpl_OpenJDK6.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)JavaPrimitiveMirror.$(O) JavaPrimitiveMirror.$(H): JavaPrimitiveMirror.st $(INCLUDE_TOP)\stx\libjava\JavaVMData.$(H) $(INCLUDE_TOP)\stx\libjava\JavaMirror.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodAndNode.$(O) ProxyMethodAndNode.$(H): ProxyMethodAndNode.st $(INCLUDE_TOP)\stx\libjava\ProxyMethodConditionNode.$(H) $(INCLUDE_TOP)\stx\libjava\ProxyMethodNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodBlockInvocationNode.$(O) ProxyMethodBlockInvocationNode.$(H): ProxyMethodBlockInvocationNode.st $(INCLUDE_TOP)\stx\libjava\ProxyMethodInvocationNode.$(H) $(INCLUDE_TOP)\stx\libjava\ProxyMethodNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ProxyMethodJavaFieldGetter.$(O) ProxyMethodJavaFieldGetter.$(H): ProxyMethodJavaFieldGetter.st $(INCLUDE_TOP)\stx\libjava\ProxyMethodJavaFieldAccessor.$(H) $(INCLUDE_TOP)\stx\libjava\ProxyMethodNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/benchmarks/Rakefile	Wed Dec 18 00:02:10 2013 +0100
+++ b/benchmarks/Rakefile	Wed Dec 18 12:03:32 2013 +0100
@@ -1,3 +1,5 @@
+#require 'pry'
+
 require 'yaml'
 
 
@@ -111,6 +113,7 @@
     task spec[0] do        
       results = Hash.new
       benchmark(spec[0], spec[1], results, BENCHMARK_RUNS)
+      puts results.to_yaml
       write_results_txt(STDOUT, results)
     end
   end
@@ -163,6 +166,7 @@
           command = "#{JAVA} stx.libjava.benchmarks.#{test} #{passes}" 
        elsif (platform == :'jvmint') 
           command = "#{JAVA} -Xint stx.libjava.benchmarks.#{test} #{passes}" 
+          command = 'echo "EXECUTION TIME: N/A"'
        elsif (platform == :'stx')
           command = "./benchmark-runner.sh --smalltalk -b #{test} -n #{passes} 2>&1"
        elsif (platform == :'libjava') 
@@ -172,6 +176,7 @@
             command = 'echo "EXECUTION TIME: N/A"'
           else 
             command = "./benchmark-runner.sh --nojit --java -b #{test} -n #{passes} 2>&1"
+            command = 'echo "EXECUTION TIME: N/A"'
           end
        elsif (platform == :'stx2libjava') 
           command = "./benchmark-runner.sh --smalltalk2java -b #{test} -n #{passes} 2>&1"
@@ -216,7 +221,7 @@
       if (pair.size == 2) 
         key = pair[0]
         if (results.has_key? key)
-          values << [ key, results[key][:jvm], results[key][:jvmint], results[key][:stx], results[key][:libjava], results[key][:libjavaint], results[key][:stx2libjava], results[:key][:ruby] ]
+          values << [ key, results[key][:jvm], results[key][:jvmint], results[key][:stx], results[key][:libjava], results[key][:libjavaint], results[key][:stx2libjava], results[key][:ruby] ]
         end
       end  
     end
--- a/benchmarks/benchmark-runner.sh	Wed Dec 18 00:02:10 2013 +0100
+++ b/benchmarks/benchmark-runner.sh	Wed Dec 18 12:03:32 2013 +0100
@@ -21,7 +21,7 @@
     shift
     #PROFILER="/usr/local/bin/valgrind -v -v -d --tool=callgrind --instr-atstart=no"
     PROFILER="/usr/local/bin/valgrind -v --smc-check=all-non-file --tool=callgrind --instr-atstart=no"
-    PROFILER="valgrind -v --smc-check=all-non-file --tool=callgrind --instr-atstart=no"
+    PROFILER="valgrind -v --smc-check=all-non-file --tool=callgrind --instr-atstart=no --branch-sim=yes --cache-sim=yes --collect-jumps=yes"
     #PROFILER_OPTS=--callgrind
 fi
 
--- a/benchmarks/result.txt	Wed Dec 18 00:02:10 2013 +0100
+++ b/benchmarks/result.txt	Wed Dec 18 12:03:32 2013 +0100
@@ -1,17 +1,17 @@
 
-2013-05-01 18:16:24 +0100
-              Test        JVM   JVM (int)      STX-S      STX-J   STX-J (int)    STX-J2S
-          Ackerman          5          62         50         38           N/A        N/A
-               Ary         49        1290       1438       2320         21114        N/A
-              Hash          6          32          3        548           225        N/A
-            Strcat        171         895        964       4601         15631        N/A
-           Native1          2          25        N/A         25           196        N/A
-            Groovy         55          60        N/A        666           873        N/A
-             Saxon        112         125        N/A        929          1359        N/A
-  MethodInvocation          0       12021       2075       1520         65543       4071
-PrimitiveArguments          0        2233        528        336         16533        882
-   ObjectArguments          0        2394        490        304         16009        883
-  WrappedArguments        308       12089        526       4239         97960       5583
-OverloadedMethods2         31       29994       2340       5655        150319      52764
- OverloadedMethods          0        9400       1132        758         39878       3128
+2013-05-23 11:54:47 +0100
+              Test        JVM   JVM (int)      STX-S      STX-J   STX-J (int)    STX-J2S       Ruby
+          Ackerman          5         N/A        264         38           N/A        N/A       1757
+               Ary         69         N/A       7549       2097           N/A        N/A      13404
+              Hash          8         N/A          4        471           N/A        N/A          8
+            Strcat        180         N/A        559        552           N/A        N/A        500
+           Native1          2         N/A        N/A         23           N/A        N/A        N/A
+            Groovy         56         N/A        N/A        201           N/A        N/A        N/A
+             Saxon        109         N/A        N/A        224           N/A        N/A        N/A
+  MethodInvocation          0         N/A      10472       1862           N/A      12333      36849
+PrimitiveArguments          0         N/A       2157        410           N/A       2453        N/A
+   ObjectArguments          0         N/A       2161        407           N/A       2484        N/A
+  WrappedArguments        295         N/A       2164       4226           N/A       7141        N/A
+OverloadedMethods2         30         N/A      13965       5450           N/A      39552        N/A
+ OverloadedMethods          0         N/A       5599        824           N/A       7750        N/A
 --
--- a/benchmarks/results-log.txt	Wed Dec 18 00:02:10 2013 +0100
+++ b/benchmarks/results-log.txt	Wed Dec 18 12:03:32 2013 +0100
@@ -188,3 +188,24 @@
 OverloadedMethods2         31       29994       2340       5655        150319      52764
  OverloadedMethods          0        9400       1132        758         39878       3128
 --
+
+2013-05-23 10:41:30 +0100
+Test   JVM   JVM (int)   STX-S   STX-J   STX-J (int)   STX-J2S   Ruby
+--
+
+2013-05-23 11:54:47 +0100
+              Test        JVM   JVM (int)      STX-S      STX-J   STX-J (int)    STX-J2S       Ruby
+          Ackerman          5         N/A        264         38           N/A        N/A       1757
+               Ary         69         N/A       7549       2097           N/A        N/A      13404
+              Hash          8         N/A          4        471           N/A        N/A          8
+            Strcat        180         N/A        559        552           N/A        N/A        500
+           Native1          2         N/A        N/A         23           N/A        N/A        N/A
+            Groovy         56         N/A        N/A        201           N/A        N/A        N/A
+             Saxon        109         N/A        N/A        224           N/A        N/A        N/A
+  MethodInvocation          0         N/A      10472       1862           N/A      12333      36849
+PrimitiveArguments          0         N/A       2157        410           N/A       2453        N/A
+   ObjectArguments          0         N/A       2161        407           N/A       2484        N/A
+  WrappedArguments        295         N/A       2164       4226           N/A       7141        N/A
+OverloadedMethods2         30         N/A      13965       5450           N/A      39552        N/A
+ OverloadedMethods          0         N/A       5599        824           N/A       7750        N/A
+--
--- a/extensions.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/extensions.st	Wed Dec 18 12:03:32 2013 +0100
@@ -115,6 +115,30 @@
     "Modified: / 07-05-2013 / 11:21:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!BooleanArray methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^self basicSize
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BooleanArray methodsFor:'vm support'!
+
+_CHECKCAST: cls
+    ^cls == BooleanArray ifTrue:[self] ifFalse:[JavaVM throwClassCastException]
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BooleanArray methodsFor:'vm support'!
+
+_INSTANCEOF: cls
+    ^BooleanArray == cls ifTrue:[1] ifFalse:[0]
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !BooleanArray methodsFor:'queries'!
 
 isInterface
@@ -176,6 +200,30 @@
     "Modified: / 31-08-2011 / 23:57:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!ByteArray methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^self basicSize
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ByteArray methodsFor:'vm support'!
+
+_CHECKCAST: cls
+    ^cls == BooleanArray ifTrue:[self] ifFalse:[JavaVM throwClassCastException]
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ByteArray methodsFor:'vm support'!
+
+_INSTANCEOF: cls
+    ^BooleanArray == cls ifTrue:[1] ifFalse:[0]
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !ByteArray class methodsFor:'testing'!
 
 isInterface
@@ -295,6 +343,37 @@
     "Modified: / 07-05-2013 / 11:21:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!CharacterArray methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^self basicSize
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CharacterArray methodsFor:'vm support'!
+
+_CHECKCAST: cls
+    cls == Unicode16String ifTrue:[^self].
+    cls == String          ifTrue:[^self].
+    ^JavaVM throwClassCastException.
+
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:10:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!CharacterArray methodsFor:'vm support'!
+
+_INSTANCEOF: cls
+    cls == Unicode16String ifTrue:[^1].
+    cls == String          ifTrue:[^1].
+    ^0
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:10:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !CharacterArray methodsFor:'java conversions'!
 
 asDottedJavaClassName
@@ -664,6 +743,32 @@
     "Modified: / 25-07-2013 / 11:34:54 / cg"
 ! !
 
+!DoubleArray methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^self basicSize
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!DoubleArray methodsFor:'vm support'!
+
+_CHECKCAST: cls
+    ^cls == DoubleArray ifTrue:[self] ifFalse:[JavaVM throwClassCastException]
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:11:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!DoubleArray methodsFor:'vm support'!
+
+_INSTANCEOF: cls
+    ^DoubleArray == cls ifTrue:[1] ifFalse:[0]
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:11:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !DoubleArray class methodsFor:'testing'!
 
 isInterface
@@ -798,6 +903,32 @@
     "Modified: / 07-05-2013 / 11:21:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!FloatArray methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^self basicSize
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!FloatArray methodsFor:'vm support'!
+
+_CHECKCAST: cls
+    ^cls == FloatArray ifTrue:[self] ifFalse:[JavaVM throwClassCastException]
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:11:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!FloatArray methodsFor:'vm support'!
+
+_INSTANCEOF: cls
+    ^FloatArray == cls ifTrue:[1] ifFalse:[0]
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:11:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !FloatArray class methodsFor:'testing'!
 
 isInterface
@@ -1027,6 +1158,30 @@
     "Created: / 22-08-2012 / 13:20:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!Object methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^JavaVM _ARRAYLENGTH: self
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Object methodsFor:'vm support'!
+
+_CHECKCAST: cls
+    ^JavaVM _CHECKCAST: self _: cls
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Object methodsFor:'vm support'!
+
+_INSTANCEOF: cls
+    ^JavaVM _INSTANCEOF: self _: cls
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !Object methodsFor:'accessing-Java'!
 
 getJavaLockWord
@@ -1524,6 +1679,32 @@
     "Created: / 24-02-2012 / 19:42:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!SignedIntegerArray methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^self basicSize
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SignedIntegerArray methodsFor:'vm support'!
+
+_CHECKCAST: cls
+    ^cls == SignedIntegerArray ifTrue:[self] ifFalse:[JavaVM throwClassCastException]
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:11:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SignedIntegerArray methodsFor:'vm support'!
+
+_INSTANCEOF: cls
+    ^SignedIntegerArray == cls ifTrue:[1] ifFalse:[0]
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:11:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !SignedIntegerArray class methodsFor:'testing'!
 
 isInterface
@@ -1568,6 +1749,32 @@
     "Modified: / 25-02-2011 / 19:03:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!SignedLongIntegerArray methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^self basicSize
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SignedLongIntegerArray methodsFor:'vm support'!
+
+_CHECKCAST: cls
+    ^cls == SignedLongIntegerArray ifTrue:[self] ifFalse:[JavaVM throwClassCastException]
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:14:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SignedLongIntegerArray methodsFor:'vm support'!
+
+_INSTANCEOF: cls
+    ^SignedLongIntegerArray == cls ifTrue:[1] ifFalse:[0]
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:14:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !SignedLongIntegerArray class methodsFor:'testing'!
 
 isInterface
@@ -1622,6 +1829,32 @@
     "Modified: / 25-02-2011 / 19:03:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!SignedWordArray methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^self basicSize
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SignedWordArray methodsFor:'vm support'!
+
+_CHECKCAST: cls
+    ^cls == SignedWordArray ifTrue:[self] ifFalse:[JavaVM throwClassCastException]
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:14:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SignedWordArray methodsFor:'vm support'!
+
+_INSTANCEOF: cls
+    ^SignedWordArray == cls ifTrue:[1] ifFalse:[0]
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:14:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !SignedWordArray class methodsFor:'queries'!
 
 isJavaArrayClass
@@ -1729,6 +1962,32 @@
     "Created: / 18-01-2013 / 22:27:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!UndefinedObject methodsFor:'vm support'!
+
+_ARRAYLENGTH: cls
+    ^JavaVM throwNullPointerException
+
+    "Created: / 14-05-2013 / 10:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!UndefinedObject methodsFor:'vm support'!
+
+_CHECKCAST: cls
+    ^nil
+
+    "Created: / 14-05-2013 / 10:09:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:10:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!UndefinedObject methodsFor:'vm support'!
+
+_INSTANCEOF: cls
+    ^0
+
+    "Created: / 14-05-2013 / 10:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-05-2013 / 11:10:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !UndefinedObject class methodsFor:'queries'!
 
 isJavaPrimitiveType
@@ -1893,6 +2152,17 @@
     "Created: / 04-12-2011 / 11:24:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!ZipArchive methodsFor:'queries - java support'!
+
+isValidFile: path
+    "Return true, if the recevier contains given file. false otherwise.
+    "
+    ^zipMembersByName includesKey: path
+
+    "Created: / 20-05-2013 / 23:37:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+
+! !
+
 !ZipArchive methodsFor:'reading - java support'!
 
 nextBytes: bytesToRead of: zmember startingAt: pos into: b startingAt: off
--- a/libInit.cc	Wed Dec 18 00:02:10 2013 +0100
+++ b/libInit.cc	Wed Dec 18 12:03:32 2013 +0100
@@ -61,7 +61,6 @@
 _JavaLocalVariableTableEntry_Init(pass,__pRT__,snd);
 _JavaLookup_Init(pass,__pRT__,snd);
 _JavaMetaclass_Init(pass,__pRT__,snd);
-_JavaMirror_Init(pass,__pRT__,snd);
 _JavaMonitor_Init(pass,__pRT__,snd);
 _JavaNameAndType2_Init(pass,__pRT__,snd);
 _JavaNativeMemory_Init(pass,__pRT__,snd);
@@ -118,6 +117,7 @@
 _JavaMethod_Init(pass,__pRT__,snd);
 _JavaMethodAnnotationContainer_Init(pass,__pRT__,snd);
 _JavaMethodDescriptor_Init(pass,__pRT__,snd);
+_JavaMirror_Init(pass,__pRT__,snd);
 _JavaNativeMethodImpl_137OpenJDK6_Init(pass,__pRT__,snd);
 _JavaRelease_Init(pass,__pRT__,snd);
 _JavaStringRef2_Init(pass,__pRT__,snd);
@@ -129,8 +129,11 @@
 _ProxyMethodGuardNode_Init(pass,__pRT__,snd);
 _ProxyMethodInvocationNode_Init(pass,__pRT__,snd);
 _ProxyMethodJavaFieldAccessor_Init(pass,__pRT__,snd);
+_JavaAlienMirror_Init(pass,__pRT__,snd);
+_JavaArrayMirror_Init(pass,__pRT__,snd);
 _JavaByteCodePreresolver_Init(pass,__pRT__,snd);
 _JavaClass_Init(pass,__pRT__,snd);
+_JavaClassMirror_Init(pass,__pRT__,snd);
 _JavaClassPathBundle_Init(pass,__pRT__,snd);
 _JavaFieldRef2_Init(pass,__pRT__,snd);
 _JavaMethodAnalyzer_Init(pass,__pRT__,snd);
@@ -138,6 +141,7 @@
 _JavaMethodWithException_Init(pass,__pRT__,snd);
 _JavaNativeMethodImpl_137OpenJDK7_Init(pass,__pRT__,snd);
 _JavaNativeMethodImpl_137SunJDK6_Init(pass,__pRT__,snd);
+_JavaPrimitiveMirror_Init(pass,__pRT__,snd);
 _ProxyMethodAndNode_Init(pass,__pRT__,snd);
 _ProxyMethodBlockInvocationNode_Init(pass,__pRT__,snd);
 _ProxyMethodJavaFieldGetter_Init(pass,__pRT__,snd);
--- a/libs/java/pom.xml	Wed Dec 18 00:02:10 2013 +0100
+++ b/libs/java/pom.xml	Wed Dec 18 12:03:32 2013 +0100
@@ -32,6 +32,7 @@
         </dependency>
         -->
 	<!--
+        <!-- 
         <dependency>
             <groupId>net.sf.jasperreports</groupId>
             <artifactId>jasperreports</artifactId>
--- a/stx_libjava.st	Wed Dec 18 00:02:10 2013 +0100
+++ b/stx_libjava.st	Wed Dec 18 12:03:32 2013 +0100
@@ -160,7 +160,6 @@
      (the browser has a menu function for that)"
 
     ^ #(
-        #'stx:goodies/sunit'    "TestAsserter - superclass of JUnitTestCaseProxy "
         #'stx:libbasic'    "AbstractNumberVector - extended "
         #'stx:libbasic2'    "BitArray - extended "
         #'stx:libbasic3'    "WrappedMethod - extended "
@@ -177,6 +176,7 @@
      exclude individual packages in the #excludedFromPreRequisites method."
 
     ^ #(
+        #'stx:goodies/sunit'    "TestSuite - referenced by JavaTestsLoader class>>buildSuiteFrom: "
         #'stx:libcomp'    "BlockNode - referenced by JavaNativeMethod>>numberOfArgs: "
         #'stx:libhtml'    "URL - referenced by JavaEmbeddedFrameView>>setupAppletFrameIn:initializeJava: "
         #'stx:libtool'    "DebugView - referenced by Java class>>flushClasses "
@@ -745,14 +745,14 @@
 !stx_libjava class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libjava/stx_libjava.st,v 1.19 2013-09-09 10:59:06 mb Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/stx_libjava.st,v 1.12 2013-02-25 13:43:08 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libjava/stx_libjava.st,v 1.19 2013-09-09 10:59:06 mb Exp $'
+    ^ '$Header: /cvs/stx/stx/libjava/stx_libjava.st,v 1.12 2013-02-25 13:43:08 cg Exp $'
 !
 
 version_SVN
-    ^ '$Id: stx_libjava.st,v 1.19 2013-09-09 10:59:06 mb Exp $'
+    ^ 'Id'
 ! !