Fix in JavaNativeMethod - search natives in 'JavaVM natives'.
--- 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