[WITH_CLASSPATH_GNU] [ENABLE_ANNOTATIONS] (vm/vm.h): Added include.
* src/native/vm/gnu/sun_reflect_ConstantPool.c
(vm/stringlocal.h): Added include.
(Java_sun_reflect_ConstantPool_getClassAtIfLoaded0): Removed wrong call of
the macro TRACEJVMCALLS.
* src/native/vm/gnu/java_lang_reflect_Method.c
(Java_java_lang_reflect_Method_getDefaultValue): Added proper casts so
gcc don't give me warnings.
* src/native/vm/gnu/java_lang_reflect_Constructor.c
[ENABLE_ANNOTATIONS] (vm/exceptions.h): Added include.
* src/native/vm/sun/jvm.c
(JVM_ConstantPoolGetStringAt): Corrected cast.
(JVM_ConstantPoolGetUTF8At): Corrected cast.
(JVM_GetArrayElement): Using primitive_box_* functions.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_reflect_Constructor.c 8305 2007-08-15 13:49:26Z panzi $
+ $Id: java_lang_reflect_Constructor.c 8311 2007-08-15 17:03:40Z panzi $
*/
#if defined(ENABLE_ANNOTATIONS)
#include "vm/vm.h"
+#include "vm/exceptions.h"
#endif
#include "vm/types.h"
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_reflect_Method.c 8305 2007-08-15 13:49:26Z panzi $
+ $Id: java_lang_reflect_Method.c 8311 2007-08-15 17:03:40Z panzi $
*/
utf *utf_desc = NULL;
sun_reflect_ConstantPool *constantPool = NULL;
java_handle_t *o = (java_handle_t*)this;
- java_lang_Object *constantPoolOop = NULL;
+ java_lang_Class *constantPoolOop = NULL;
if (this == NULL) {
exceptions_throw_nullpointerexception();
}
LLNI_field_get_ref(this, clazz, constantPoolOop);
- LLNI_field_set_ref(constantPool, constantPoolOop, constantPoolOop);
+ LLNI_field_set_ref(constantPool, constantPoolOop, (java_lang_Object*)constantPoolOop);
/* only resolve the method the first time */
if (m_parseAnnotationDefault == NULL) {
#include "vm/vm.h"
#include "vm/resolve.h"
+#include "vm/stringlocal.h"
#include "vmcore/class.h"
#include "vmcore/utf8.h"
classinfo *c = NULL;
classinfo *cls = (classinfo*)jcpool;
- TRACEJVMCALLS("JVM_ConstantPoolGetClassAtIfLoaded: cls=%p, index=%d", cls, index);
-
ref = (constant_classref*)class_getconstant(
cls, index, CONSTANT_Class);
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_Class.c 8309 2007-08-15 16:42:52Z twisti $
+ $Id: java_lang_Class.c 8311 2007-08-15 17:03:40Z panzi $
*/
#include "vmcore/loader.h"
#if defined(WITH_CLASSPATH_GNU) && defined(ENABLE_ANNOTATIONS)
+#include "vm/vm.h"
#include "vmcore/annotation.h"
#include "native/include/sun_reflect_ConstantPool.h"
#endif
*/
java_objectarray *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* klass)
{
- classinfo *c = (classinfo*)klass;
+ classinfo *c = (classinfo*)klass;
static methodinfo *m_parseAnnotationsIntoArray = NULL;
utf *utf_parseAnnotationsIntoArray = NULL;
- utf *utf_desc = NULL;
- java_bytearray *annotations = NULL;
- sun_reflect_ConstantPool *constantPool = NULL;
- uint32_t size = 0;
- java_lang_Object *o = (java_lang_Object*)klass;
+ utf *utf_desc = NULL;
+ java_bytearray *annotations = NULL;
+ sun_reflect_ConstantPool *constantPool = NULL;
+ uint32_t size = 0;
+ java_lang_Object *constantPoolOop = (java_lang_Object*)klass;
if (c == NULL) {
exceptions_throw_nullpointerexception();
return NULL;
}
- LLNI_field_set_ref(constantPool, constantPoolOop, o);
+ LLNI_field_set_ref(constantPool, constantPoolOop, constantPoolOop);
/* only resolve the method the first time */
if (m_parseAnnotationsIntoArray == NULL) {
}
}
- return vm_call_method(
+ return (java_objectarray*)vm_call_method(
m_parseAnnotationsIntoArray, NULL,
annotations, constantPool, klass);
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: jvm.c 8310 2007-08-15 16:49:03Z twisti $
+ $Id: jvm.c 8311 2007-08-15 17:03:40Z panzi $
*/
}
/* XXX: I hope literalstring_new is the right Function. */
- return (java_lang_String*)literalstring_new(ref);
+ return (jstring)literalstring_new(ref);
}
}
/* XXX: I hope literalstring_new is the right Function. */
- return (java_lang_String*)literalstring_new(ref);
+ return (jstring)literalstring_new(ref);
}
{
/* log_println("JVM_GetArrayElement: IMPLEMENT ME!"); */
- java_arrayheader *a;
- java_handle_t *o = NULL;
+ java_arrayheader *a = NULL;
+ int32_t elementtype = 0;
TRACEJVMCALLS("JVM_GetArrayElement: arr=%p, index=%d", arr, index);
return NULL;
}
- if (index < 0 || index > a->size ) {
+ if (index < 0 || index > a->size) {
exceptions_new_arrayindexoutofboundsexception(index);
return NULL;
}
- switch (a->objheader.vftbl->arraydesc->arraytype) {
+ elementtype = a->objheader.vftbl->arraydesc->elementtype;
+
+ switch (elementtype) {
case ARRAYTYPE_INT:
- o = builtin_new(class_java_lang_Integer);
- if (o != NULL)
- ((java_lang_Integer*)o)->value = ((java_intarray*)a)->data[index];
- break;
+ return (jobject)primitive_box_int(((java_intarray*)a)->data[index]);
case ARRAYTYPE_LONG:
- o = builtin_new(class_java_lang_Long);
- if (o != NULL)
- ((java_lang_Long*)o)->value = ((java_longarray*)a)->data[index];
- break;
+ return (jobject)primitive_box_long(((java_longarray*)a)->data[index]);
case ARRAYTYPE_FLOAT:
- o = builtin_new(class_java_lang_Float);
- if (o != NULL)
- ((java_lang_Float*)o)->value = ((java_floatarray*)a)->data[index];
- break;
+ return (jobject)primitive_box_float(((java_floatarray*)a)->data[index]);
case ARRAYTYPE_DOUBLE:
- o = builtin_new(class_java_lang_Double);
- if (o != NULL)
- ((java_lang_Double*)o)->value = ((java_doublearray*)a)->data[index];
- break;
+ return (jobject)primitive_box_double(((java_doublearray*)a)->data[index]);
case ARRAYTYPE_BYTE:
- o = builtin_new(class_java_lang_Byte);
- if (o != NULL)
- ((java_lang_Byte*)o)->value = ((java_bytearray*)a)->data[index];
- break;
+ return (jobject)primitive_box_byte(((java_bytearray*)a)->data[index]);
case ARRAYTYPE_CHAR:
- o = builtin_new(class_java_lang_Character);
- if (o != NULL)
- ((java_lang_Character*)o)->value = ((java_chararray*)a)->data[index];
- break;
+ return (jobject)primitive_box_char(((java_chararray*)a)->data[index]);
case ARRAYTYPE_SHORT:
- o = builtin_new(class_java_lang_Short);
- if (o != NULL)
- ((java_lang_Short*)o)->value = ((java_shortarray*)a)->data[index];
- break;
+ return (jobject)primitive_box_short(((java_shortarray*)a)->data[index]);
case ARRAYTYPE_BOOLEAN:
- o = builtin_new(class_java_lang_Boolean);
- if (o != NULL)
- ((java_lang_Boolean*)o)->value = ((java_booleanarray*)a)->data[index];
- break;
+ return (jobject)primitive_box_boolean(((java_booleanarray*)a)->data[index]);
case ARRAYTYPE_OBJECT:
- o = ((java_objectarray*)a)->data[index];
- break;
+ return (jobject)((java_objectarray*)a)->data[index];
+ default:
+ /* invalid element type */
+ exceptions_throw_internalerror("invalid element type code in array descriptor: %d", elementtype);
+ return (jobject)NULL;
}
-
- return (jobject)o;
}