More work on java.lang.reflect.Array natives.
--- a/JavaNativeMethodImpl_OpenJDK6.st Thu Apr 10 10:10:12 2014 +0200
+++ b/JavaNativeMethodImpl_OpenJDK6.st Thu Apr 10 15:39:50 2014 +0200
@@ -11800,30 +11800,33 @@
!JavaNativeMethodImpl_OpenJDK6 class methodsFor:'native - java.lang.reflect'!
-_java_lang_reflect_Array_get: this _: a1
-
- <javanative: 'java/lang/reflect/Array' name: 'get(Ljava/lang/Object;I)Ljava/lang/Object;'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_get: this _: arr _: idx
<javanative: 'java/lang/reflect/Array' name: 'get(Ljava/lang/Object;I)Ljava/lang/Object;'>
+ | e |
+
+ arr isNil ifTrue:[
+ JavaVM throwNullPointerException: 'array argumen is null'.
+ ^ self.
+ ].
+
+ arr isJavaArray ifFalse:[
+ JavaVM throwIllegalArgumentException: 'array argument is not an array'.
+ ].
+
(idx between: 0 and: arr size - 1) ifFalse:[
- ^ JavaVM throwArrayIndexOutOfBoundsException: arr _: idx.
- ].
- ^ arr at: idx + 1.
-
- "Modified: / 10-04-2014 / 09:56:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-_java_lang_reflect_Array_getBoolean: this _: a1
-
- <javanative: 'java/lang/reflect/Array' name: 'getBoolean(Ljava/lang/Object;I)Z'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
+ JavaVM throwArrayIndexOutOfBoundsException: arr _: idx.
+ ^ self.
+ ].
+
+ e := arr at: idx + 1.
+ arr class javaComponentClass isJavaPrimitiveType ifTrue:[
+ e := arr class javaComponentClass javaBox: e.
+ ].
+ ^ e
+
+ "Modified: / 10-04-2014 / 15:31:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
_java_lang_reflect_Array_getBoolean: this _: a1 _: a2
@@ -11833,13 +11836,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_getByte: this _: a1
-
- <javanative: 'java/lang/reflect/Array' name: 'getByte(Ljava/lang/Object;I)B'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_getByte: this _: a1 _: a2
<javanative: 'java/lang/reflect/Array' name: 'getByte(Ljava/lang/Object;I)B'>
@@ -11847,13 +11843,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_getChar: this _: a1
-
- <javanative: 'java/lang/reflect/Array' name: 'getChar(Ljava/lang/Object;I)C'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_getChar: this _: a1 _: a2
<javanative: 'java/lang/reflect/Array' name: 'getChar(Ljava/lang/Object;I)C'>
@@ -11861,13 +11850,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_getDouble: this _: a1
-
- <javanative: 'java/lang/reflect/Array' name: 'getDouble(Ljava/lang/Object;I)D'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_getDouble: this _: a1 _: a2
<javanative: 'java/lang/reflect/Array' name: 'getDouble(Ljava/lang/Object;I)D'>
@@ -11875,13 +11857,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_getFloat: this _: a1
-
- <javanative: 'java/lang/reflect/Array' name: 'getFloat(Ljava/lang/Object;I)F'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_getFloat: this _: a1 _: a2
<javanative: 'java/lang/reflect/Array' name: 'getFloat(Ljava/lang/Object;I)F'>
@@ -11889,13 +11864,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_getInt: this _: a1
-
- <javanative: 'java/lang/reflect/Array' name: 'getInt(Ljava/lang/Object;I)I'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_getInt: this _: a1 _: a2
<javanative: 'java/lang/reflect/Array' name: 'getInt(Ljava/lang/Object;I)I'>
@@ -11912,13 +11880,6 @@
"Modified: / 17-08-2011 / 09:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-_java_lang_reflect_Array_getLong: this _: a1
-
- <javanative: 'java/lang/reflect/Array' name: 'getLong(Ljava/lang/Object;I)J'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_getLong: this _: a1 _: a2
<javanative: 'java/lang/reflect/Array' name: 'getLong(Ljava/lang/Object;I)J'>
@@ -11926,13 +11887,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_getShort: this _: a1
-
- <javanative: 'java/lang/reflect/Array' name: 'getShort(Ljava/lang/Object;I)S'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_getShort: this _: a1 _: a2
<javanative: 'java/lang/reflect/Array' name: 'getShort(Ljava/lang/Object;I)S'>
@@ -12029,12 +11983,12 @@
<javanative: 'java/lang/reflect/Array' name: 'set(Ljava/lang/Object;ILjava/lang/Object;)V'>
- | index |
+ | index valueToStore |
index := index0 + 1.
array isJavaArray ifFalse:[
- JavaVM throwIllegalArgumentException:'passed object is not an array'.
+ JavaVM throwIllegalArgumentException:'array argument is not an array'.
^nil.
].
index < 1 ifTrue:[
@@ -12053,16 +12007,16 @@
JavaVM throwIllegalArgumentException:'type-incompatible value'.
^nil.
].
- array at: index put: value.
-
- "Modified: / 23-04-2013 / 23:44:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-_java_lang_reflect_Array_setBoolean: this _: a1 _: a2
-
- <javanative: 'java/lang/reflect/Array' name: 'setBoolean(Ljava/lang/Object;IZ)V'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
+
+ valueToStore := value.
+ array class javaComponentClass isJavaPrimitiveType ifTrue:[
+ valueToStore := array class javaComponentClass javaUnbox: value.
+ ].
+
+
+ array at: index put: valueToStore.
+
+ "Modified: / 10-04-2014 / 15:32:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
_java_lang_reflect_Array_setBoolean: this _: a1 _: a2 _: a3
@@ -12072,13 +12026,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_setByte: this _: a1 _: a2
-
- <javanative: 'java/lang/reflect/Array' name: 'setByte(Ljava/lang/Object;IB)V'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_setByte: this _: a1 _: a2 _: a3
<javanative: 'java/lang/reflect/Array' name: 'setByte(Ljava/lang/Object;IB)V'>
@@ -12086,13 +12033,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_setChar: this _: a1 _: a2
-
- <javanative: 'java/lang/reflect/Array' name: 'setChar(Ljava/lang/Object;IC)V'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_setChar: this _: a1 _: a2 _: a3
<javanative: 'java/lang/reflect/Array' name: 'setChar(Ljava/lang/Object;IC)V'>
@@ -12100,13 +12040,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_setDouble: this _: a1 _: a2 _: a3
-
- <javanative: 'java/lang/reflect/Array' name: 'setDouble(Ljava/lang/Object;ID)V'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_setDouble: this _: a1 _: a2 _: a3 _: a4
<javanative: 'java/lang/reflect/Array' name: 'setDouble(Ljava/lang/Object;ID)V'>
@@ -12114,13 +12047,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_setFloat: this _: a1 _: a2
-
- <javanative: 'java/lang/reflect/Array' name: 'setFloat(Ljava/lang/Object;IF)V'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_setFloat: this _: a1 _: a2 _: a3
<javanative: 'java/lang/reflect/Array' name: 'setFloat(Ljava/lang/Object;IF)V'>
@@ -12128,13 +12054,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_setInt: this _: a1 _: a2
-
- <javanative: 'java/lang/reflect/Array' name: 'setInt(Ljava/lang/Object;II)V'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_setInt: this _: a1 _: a2 _: a3
<javanative: 'java/lang/reflect/Array' name: 'setInt(Ljava/lang/Object;II)V'>
@@ -12142,13 +12061,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_setLong: this _: a1 _: a2 _: a3
-
- <javanative: 'java/lang/reflect/Array' name: 'setLong(Ljava/lang/Object;IJ)V'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_setLong: this _: a1 _: a2 _: a3 _: a4
<javanative: 'java/lang/reflect/Array' name: 'setLong(Ljava/lang/Object;IJ)V'>
@@ -12156,13 +12068,6 @@
^ JavaVM unimplementedNativeMethodSignal raise
!
-_java_lang_reflect_Array_setShort: this _: a1 _: a2
-
- <javanative: 'java/lang/reflect/Array' name: 'setShort(Ljava/lang/Object;IS)V'>
-
- ^ JavaVM unimplementedNativeMethodSignal raise
-!
-
_java_lang_reflect_Array_setShort: this _: a1 _: a2 _: a3
<javanative: 'java/lang/reflect/Array' name: 'setShort(Ljava/lang/Object;IS)V'>