Fix in JavaNativeMethod - search natives in 'JavaVM natives'. refactoring-vmdata
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 16 Jan 2013 21:57:50 +0000
branchrefactoring-vmdata
changeset 1975 038d40cadeb3
parent 1972 130185d6e2ae
child 1976 b9f2eb317d56
Fix in JavaNativeMethod - search natives in 'JavaVM natives'.
JavaNativeMethod.st
JavaNativeMethodImpl_OpenJDK6.st
JavaVM.st
abbrev.stc
libjava.rc
--- a/JavaNativeMethod.st	Wed Jan 16 21:30:59 2013 +0000
+++ b/JavaNativeMethod.st	Wed Jan 16 21:57:50 2013 +0000
@@ -201,12 +201,13 @@
 
     (JavaVM class 
         compile:
-            (self nativeMethodTemplate bindWith:sel with: 'nativeContext' with:('^ UnimplementedNativeMethodSignal raise'))
+            (self nativeMethodTemplate bindWith:sel with: 'nativeContext' with:('^ JavaVM unimplementedNativeMethodSignal raise'))
         classified:         
             'native - ', ((javaClass javaPackage upTo:$$) replaceAll:$/ with:$.))
         package: JavaVM package
 
     "Created: / 01-05-2011 / 00:08:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-01-2013 / 21:26:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 nativeMethodTemplate
@@ -231,13 +232,13 @@
     | nm newStyleSel oldStyleSel |
     nm := selector upTo: $(.
     newStyleSel := ('_' , ((javaClass name copyReplaceAll:$/ with:$_) replaceAll:$$ with:$_), '_' , nm , ':') asSymbol.    
-    (JavaVM class canUnderstand: newStyleSel) ifTrue:
-        ["Good, a JavaVM understands new style native selectors"
-        ^newStyleSel].
+    (JavaVM natives class canUnderstand: newStyleSel) ifTrue:[
+        "Good, a JavaVM understands new style native selectors"
+        ^newStyleSel
+    ].
 
     oldStyleSel := ('_' , (javaClass lastName copyReplaceAll:$$ with:$_) , '_' , nm , ':') asSymbol.
-    (JavaVM class canUnderstand: oldStyleSel) ifTrue:
-        [
+    (JavaVM natives canUnderstand: oldStyleSel) ifTrue:[
         "Convert method on the fly only if Im Jan Vrany
          (to avoid confusion of other developers :-)"
         OperatingSystem getLoginName = 'jv' ifTrue:[
@@ -247,12 +248,13 @@
             ^newStyleSel
         ] ifFalse:[
             ^oldStyleSel
-        ]].
+        ]
+    ].
     self compileNativeImplementationStub: newStyleSel.
     ^newStyleSel
 
     "Created: / 30-04-2011 / 23:50:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 13-08-2011 / 01:08:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-01-2013 / 21:25:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaNativeMethod methodsFor:'vm support'!
--- a/JavaNativeMethodImpl_OpenJDK6.st	Wed Jan 16 21:30:59 2013 +0000
+++ b/JavaNativeMethodImpl_OpenJDK6.st	Wed Jan 16 21:57:50 2013 +0000
@@ -2248,14 +2248,14 @@
     ].
     self assert: cls classLoader == nativeContext receiver.
      "FIXME: What to do with source?"
-    self registry registerClass: cls.
+    ClassRegistry registerClass: cls.
     "JavaClassReader classLoaderQuerySignal answer: nativeContext receiver
         do: [ cls resolveAll. ]."
     ^ Reflection javaClassObjectForClass: cls.
 
     "Modified: / 08-12-2011 / 20:56:51 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 20-02-2012 / 23:14:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 10-09-2012 / 22:21:22 / m"
+    "Modified: / 16-01-2013 / 21:28:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_ClassLoader_findBootstrapClass: nativeContext
@@ -3583,7 +3583,7 @@
         ^ JavaVM throwNullPointerException
     ].
     srcArray isJavaArray ifFalse:[
-        ^ self throwArrayStoreException:srcArray
+        ^ JavaVM throwArrayStoreException:srcArray
     ].
     srcIdx := nativeContext argAt:2.
     dstArray := nativeContext argAt:3.
@@ -3591,7 +3591,7 @@
         ^ JavaVM throwNullPointerException
     ].
     dstArray isJavaArray ifFalse:[
-        ^ self throwArrayStoreException:dstArray
+        ^ JavaVM throwArrayStoreException:dstArray
     ].
 
     srcArrayCC := srcArray class javaComponentClass.
@@ -3602,10 +3602,10 @@
             [srcArrayCC isJavaPrimitiveType
                 ifTrue:
                     [srcArrayCC ~~ dstArrayCC ifTrue:
-                        [^ self throwArrayStoreException:dstArray]].
+                        [^ JavaVM throwArrayStoreException:dstArray]].
             ]
         ifFalse:
-            [^ self throwArrayStoreException:dstArray].
+            [^ JavaVM throwArrayStoreException:dstArray].
 
     dstIdx := nativeContext argAt:4.
     count := nativeContext argAt:5.
@@ -3617,7 +3617,7 @@
     ((srcIdx < 0) or:[srcIdx + count > srcArray size]) ifTrue:[
         srcArray size == 0 ifTrue:[
             srcArray isVariable ifFalse:[
-                ^ self throwArrayStoreException:srcArray
+                ^ JavaVM throwArrayStoreException:srcArray
             ]
         ].
         ^ JavaVM throwArrayIndexOutOfBoundsException:(srcIdx + count - 1)
@@ -3625,7 +3625,7 @@
     ((dstIdx < 0) or:[dstIdx + count > dstArray size]) ifTrue:[
         dstArray size == 0 ifTrue:[
             dstArray isVariable ifFalse:[
-                ^ self throwArrayStoreException:dstArray
+                ^ JavaVM throwArrayStoreException:dstArray
             ]
         ].
         ^ JavaVM throwArrayIndexOutOfBoundsException:(dstIdx + count - 1)
@@ -3648,8 +3648,8 @@
 
                 obj := srcArray at:srcIdx + i - 1.
 
-                (obj notNil and:[(self canCast: obj class to: dstArrayCC) not]) ifTrue:[
-                    ^ self throwArrayStoreException:dstArray
+                (obj notNil and:[(JavaVM canCast: obj class to: dstArrayCC) not]) ifTrue:[
+                    ^ JavaVM throwArrayStoreException:dstArray
                 ].
                 dstArray at: dstIdx + i - 1 put: (srcArray at:srcIdx + i - 1)
             ]
@@ -3659,7 +3659,7 @@
     ].
     ^ nil.
 
-    "Modified: / 08-09-2011 / 15:25:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-01-2013 / 21:22:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 _java_lang_System_currentTimeMillis: nativeContext
--- a/JavaVM.st	Wed Jan 16 21:30:59 2013 +0000
+++ b/JavaVM.st	Wed Jan 16 21:57:50 2013 +0000
@@ -4651,294 +4651,14 @@
     "Modified: / 20-11-2011 / 12:36:47 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
 ! !
 
-!JavaVM class methodsFor:'native - java.io'!
-
-_java_io_FileDescriptor_initIDs: nativeContext
-
-    <javanative: 'java/io/FileDescriptor' name: 'initIDs()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_io_FileInputStream_initIDs: nativeContext
-
-    <javanative: 'java/io/FileInputStream' name: 'initIDs()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_io_FileOutputStream_initIDs: nativeContext
-
-    <javanative: 'java/io/FileOutputStream' name: 'initIDs()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-! !
-
 !JavaVM class methodsFor:'native - java.lang'!
 
-_java_lang_ClassLoader_registerNatives: nativeContext
-
-    <javanative: 'java/lang/ClassLoader' name: 'registerNatives()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Class_desiredAssertionStatus0: nativeContext
-
-    <javanative: 'java/lang/Class' name: 'desiredAssertionStatus0(Ljava/lang/Class;)Z'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Class_forName0: nativeContext
-
-    <javanative: 'java/lang/Class' name: 'forName0(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Class_getClassLoader0: nativeContext
-
-    <javanative: 'java/lang/Class' name: 'getClassLoader0()Ljava/lang/ClassLoader;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Class_getDeclaredConstructors0: nativeContext
-
-    <javanative: 'java/lang/Class' name: 'getDeclaredConstructors0(Z)[Ljava/lang/reflect/Constructor;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Class_getDeclaredFields0: nativeContext
-
-    <javanative: 'java/lang/Class' name: 'getDeclaredFields0(Z)[Ljava/lang/reflect/Field;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Class_getModifiers: nativeContext
-
-    <javanative: 'java/lang/Class' name: 'getModifiers()I'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Class_getName0: nativeContext
-
-    <javanative: 'java/lang/Class' name: 'getName0()Ljava/lang/String;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Class_getPrimitiveClass: nativeContext
-
-    <javanative: 'java/lang/Class' name: 'getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Class_getSuperclass: nativeContext
-
-    <javanative: 'java/lang/Class' name: 'getSupe'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Class_isInterface: nativeContext
-
-    <javanative: 'java/lang/Class' name: 'isInterface()Z'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Class_registerNatives: nativeContext
-
-    <javanative: 'java/lang/Class' name: 'registerNatives()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Double_doubleToRawLongBits: nativeContext
-
-    <javanative: 'java/lang/Double' name: 'doubleToRawLongBits(D)J'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Float_floatToRawIntBits: nativeContext
-
-    <javanative: 'java/lang/Float' name: 'floatToRawIntBits(F)I'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Object_getClass: nativeContext
-
-    <javanative: 'java/lang/Object' name: 'getCl'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Object_notifyAll: nativeContext
-
-    <javanative: 'java/lang/Object' name: 'notifyAll()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Object_registerNatives: nativeContext
-
-    <javanative: 'java/lang/Object' name: 'registerNatives()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Object_wait: nativeContext
-
-    <javanative: 'java/lang/Object' name: 'wait(J)V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_String_intern: nativeContext
-
-    <javanative: 'java/lang/String' name: 'intern()Ljava/lang/String;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_System_initProperties: nativeContext
-
-    <javanative: 'java/lang/System' name: 'initProperties(Ljava/util/Properties;)Ljava/util/Properties;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_System_registerNatives: nativeContext
-
-    <javanative: 'java/lang/System' name: 'registerNatives()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_System_setIn0: nativeContext
-
-    <javanative: 'java/lang/System' name: 'setIn0(Ljava/io/InputStream;)V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Thread_currentThread: nativeContext
-
-    <javanative: 'java/lang/Thread' name: 'currentThread()Ljava/lang/Thread;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Thread_isAlive: nativeContext
-
-    <javanative: 'java/lang/Thread' name: 'isAlive()Z'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Thread_registerNatives: nativeContext
-
-    <javanative: 'java/lang/Thread' name: 'registerNatives()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Thread_setPriority0: nativeContext
-
-    <javanative: 'java/lang/Thread' name: 'setPriority0(I)V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Thread_start0: nativeContext
-
-    <javanative: 'java/lang/Thread' name: 'start0()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_lang_Throwable_fillInStackTrace: nativeContext
-
-    <javanative: 'java/lang/Throwable' name: 'fillInStackTrace()Ljava/lang/Throwable;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-! !
-
-!JavaVM class methodsFor:'native - java.security'!
-
-_java_security_AccessController_doPrivileged: nativeContext
-
-    <javanative: 'java/security/AccessController' name: ''>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_java_security_AccessController_getStackAccessControlContext: nativeContext
-
-    <javanative: 'java/security/AccessController' name: 'getStackAccessControlContext()Ljava/security/AccessControlContext;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-! !
-
-!JavaVM class methodsFor:'native - sun.misc'!
-
-_sun_misc_Unsafe_compareAndSwapInt: nativeContext
-
-    <javanative: 'sun/misc/Unsafe' name: 'compareAndSwapInt(Ljava/lang/Object;JII)Z'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_sun_misc_Unsafe_objectFieldOffset: nativeContext
-
-    <javanative: 'sun/misc/Unsafe' name: 'objectFieldOffset(Ljava/lang/reflect/Field;)J'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_sun_misc_Unsafe_registerNatives: nativeContext
-
-    <javanative: 'sun/misc/Unsafe' name: 'registerNatives()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_sun_misc_VM_initialize: nativeContext
-
-    <javanative: 'sun/misc/VM' name: 'initialize()V'>
-
-    ^ UnimplementedNativeMethodSignal raise
-! !
-
-!JavaVM class methodsFor:'native - sun.reflect'!
-
-_sun_reflect_NativeConstructorAccessorImpl_newInstance0: nativeContext
-
-    <javanative: 'sun/reflect/NativeConstructorAccessorImpl' name: 'newInstance0(Ljava/lang/reflect/Constructor;[Ljava/lang/Object;)Ljava/lang/Object;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_sun_reflect_Reflection_getCallerClass: nativeContext
-
-    <javanative: 'sun/reflect/Reflection' name: 'getCallerClass(I)Ljava/lang/Class;'>
-
-    ^ UnimplementedNativeMethodSignal raise
-!
-
-_sun_reflect_Reflection_getClassAccessFlags: nativeContext
-
-    <javanative: 'sun/reflect/Reflection' name: 'getClassAccessFlags(Ljava/lang/Class;)I'>
-
-    ^ UnimplementedNativeMethodSignal raise
+_java_lang_System_arraycopy: nativeContext
+    "Forward here as optimized code delegates to  JavaVM"
+
+    ^ NativeMethodsImplementation _java_lang_System_arraycopy: nativeContext
+
+    "Modified: / 16-01-2013 / 21:24:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !JavaVM class methodsFor:'queries'!
--- a/abbrev.stc	Wed Jan 16 21:30:59 2013 +0000
+++ b/abbrev.stc	Wed Jan 16 21:57:50 2013 +0000
@@ -1,7 +1,7 @@
 # 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.
-JavaRefsAndConstantPoolTestCase JavaRefsAndConstantPoolTestCase stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaRefsAndConstantPoolTestCase JavaRefsAndConstantPoolTestCase stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 0
 GroovyCompiler GroovyCompiler stx:libjava 'Languages-Groovy-Compiler' 0
 GroovyEvaluator GroovyEvaluator stx:libjava 'Languages-Groovy-Compiler' 0
 GroovyLanguage GroovyLanguage stx:libjava 'Languages-Groovy-Support' 1
@@ -19,8 +19,8 @@
 JavaByteCodeDisassemblerTests JavaByteCodeDisassemblerTests stx:libjava 'Languages-Java-Tests' 1
 JavaByteCodeProcessor JavaByteCodeProcessor stx:libjava 'Languages-Java-Bytecode' 0
 JavaClassAccessor JavaClassAccessor stx:libjava 'Languages-Java-Classes' 0
-JavaClassLoadingTests JavaClassLoadingTests stx:libjava 'Languages-Java-Tests-ClassLoading' 1
-JavaClassRefTests JavaClassRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
+JavaClassLoadingTests JavaClassLoadingTests stx:libjava 'Languages-Java-Tests-ClassLoading' 0
+JavaClassRefTests JavaClassRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 0
 JavaClassRegistry JavaClassRegistry stx:libjava 'Languages-Java-Support' 0
 JavaClassReloader JavaClassReloader stx:libjava 'Languages-Java-Support' 0
 JavaConstantPool JavaConstantPool stx:libjava 'Languages-Java-Reader-Support' 0
@@ -31,8 +31,8 @@
 JavaError JavaError stx:libjava 'Languages-Java-Support' 1
 JavaExceptionTableEntry JavaExceptionTableEntry stx:libjava 'Languages-Java-Support' 0
 JavaField JavaField stx:libjava 'Languages-Java-Reader-Support' 0
-JavaFieldRefTests JavaFieldRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 1
-JavaFreshlyInitializedResource JavaFreshlyInitializedResource stx:libjava 'Languages-Java-Tests' 1
+JavaFieldRefTests JavaFieldRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 0
+JavaFreshlyInitializedResource JavaFreshlyInitializedResource stx:libjava 'Languages-Java-Tests' 0
 JavaInitializedResource JavaInitializedResource stx:libjava 'Languages-Java-Tests' 0
 JavaInterfaceMethodRefTests JavaInterfaceMethodRefTests stx:libjava 'Languages-Java-Tests-RuntimeConstantPool' 0
 JavaJUnitTests JavaJUnitTests stx:libjava 'Languages-Java-Tests-Libraries' 0
@@ -64,7 +64,7 @@
 JavaSourceCodeCache JavaSourceCodeCache stx:libjava 'Languages-Java-Support' 1
 JavaSourceFileWriter JavaSourceFileWriter stx:libjava 'Languages-Java-Support' 0
 JavaStartup JavaStartup stx:libjava 'Languages-Java-Support' 1
-JavaTestCaseProxy JavaTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 3
+JavaTestCaseProxy JavaTestCaseProxy stx:libjava 'Languages-Java-Tests-Proxies' 0
 JavaTestsLoader JavaTestsLoader stx:libjava 'Languages-Java-Tests' 0
 JavaTestsResource JavaTestsResource stx:libjava 'Languages-Java-Tests' 0
 JavaTopView JavaTopView stx:libjava 'Languages-Java-Views-Support' 2
--- a/libjava.rc	Wed Jan 16 21:30:59 2013 +0000
+++ b/libjava.rc	Wed Jan 16 21:57:50 2013 +0000
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\nCopyright Jan Vrany, Jan Kurs and Marcel Hlopko\n          SWING Research Group, Czech Technical University In Prague\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.3.0\0"
-      VALUE "ProductDate", "Wed, 16 Jan 2013 20:58:47 GMT\0"
+      VALUE "ProductDate", "Wed, 16 Jan 2013 21:56:22 GMT\0"
     END
 
   END