More work on java.lang.reflect.Array natives.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 10 Apr 2014 15:39:50 +0200
changeset 3071 7145c825db68
parent 3070 3f6f3b935c17
child 3074 718746a2ac28
More work on java.lang.reflect.Array natives.
JavaNativeMethodImpl_OpenJDK6.st
--- 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'>