* src/vm/global.h: Added typedefs for array handles. Renamed array types.
Use LLNI macros for array access and adapted to above changes:
* src/vm/access.c
* src/vm/jit/arm/emit.c
* src/vm/jit/arm/codegen.c
* src/vm/jit/powerpc/emit.c
* src/vm/jit/powerpc/codegen.c
* src/vm/jit/sparc64/emit.c
* src/vm/jit/sparc64/codegen.c
* src/vm/jit/alpha/emit.c
* src/vm/jit/alpha/codegen.c
* src/vm/jit/s390/emit.c
* src/vm/jit/s390/codegen.c
* src/vm/jit/mips/emit.c
* src/vm/jit/mips/codegen.c
* src/vm/jit/m68k/emit.c
* src/vm/jit/m68k/codegen.c
* src/vm/jit/powerpc64/emit.c
* src/vm/jit/powerpc64/codegen.c
* src/vm/jit/i386/emit.c
* src/vm/jit/i386/codegen.c
* src/vm/jit/x86_64/emit.c
* src/vm/jit/x86_64/codegen.c
* src/vm/jit/stacktrace.c
* src/vm/jit/stacktrace.h
* src/vm/builtin.c
* src/vm/string.c
* src/vm/builtin.h
* src/vm/exceptions.c
* src/vm/vm.c
* src/vm/stringlocal.h
* src/vm/vm.h
* src/native/jni.c
* src/native/vm/java_lang_ClassLoader.c
* src/native/vm/java_lang_reflect_Constructor.h
* src/native/vm/java_lang_ClassLoader.h
* src/native/vm/java_lang_Class.c
* src/native/vm/gnu/gnu_java_lang_management_VMThreadMXBeanImpl.c
* src/native/vm/gnu/java_security_VMAccessController.c
* src/native/vm/gnu/java_lang_VMClassLoader.c
* src/native/vm/gnu/java_lang_management_VMManagementFactory.c
* src/native/vm/gnu/java_lang_VMClass.c
* src/native/vm/gnu/gnu_java_lang_management_VMRuntimeMXBeanImpl.c
* src/native/vm/gnu/sun_reflect_ConstantPool.c
* src/native/vm/gnu/java_lang_reflect_Method.c
* src/native/vm/gnu/gnu_classpath_VMStackWalker.c
* src/native/vm/gnu/java_lang_VMSystem.c
* src/native/vm/gnu/java_lang_reflect_Constructor.c
* src/native/vm/gnu/java_lang_VMThrowable.c
* src/native/vm/java_lang_Class.h
* src/native/vm/sun_misc_Unsafe.c
* src/native/vm/sun/jvm.c
* src/native/vm/reflect.c
* src/native/vm/java_lang_reflect_Method.c
* src/native/vm/reflect.h
* src/native/vm/java_lang_reflect_Constructor.c
* src/native/vm/java_lang_reflect_Method.h
* src/native/jni.h
* src/vmcore/class.c
* src/vmcore/class.h
* src/vmcore/method.c
* src/vmcore/method.h
* src/vmcore/linker.c
* src/cacaoh/headers.h
* src/cacaoh/dummy.c
* src/cacaoh/headers.c
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: dummy.c 8315 2007-08-15 22:49:20Z panzi $
+ $Id: dummy.c 8318 2007-08-16 10:05:34Z michi $
*/
return NULL;
}
-java_objectarray *builtin_anewarray(int32_t size, classinfo *componentclass)
+java_handle_objectarray_t *builtin_anewarray(int32_t size, classinfo *componentclass)
{
abort();
return NULL;
}
-java_bytearray *builtin_newarray_byte(int32_t size)
+java_handle_bytearray_t *builtin_newarray_byte(int32_t size)
{
abort();
/* stacktrace *****************************************************************/
-java_objectarray *stacktrace_getClassContext()
+java_handle_objectarray_t *stacktrace_getClassContext()
{
return NULL;
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: headers.c 8295 2007-08-11 17:57:24Z michi $
+ $Id: headers.c 8318 2007-08-16 10:05:34Z michi $
*/
fprintf(file, "double");
break;
case '[':
- addoutputsize ( sizeof(java_arrayheader*) );
+ addoutputsize ( sizeof(java_array_t*) );
switch (utf_nextu2(&utf_ptr)) {
- case 'I': fprintf (file, "java_intarray*"); break;
- case 'J': fprintf (file, "java_longarray*"); break;
- case 'Z': fprintf (file, "java_booleanarray*"); break;
- case 'B': fprintf (file, "java_bytearray*"); break;
- case 'S': fprintf (file, "java_shortarray*"); break;
- case 'C': fprintf (file, "java_chararray*"); break;
- case 'F': fprintf (file, "java_floatarray*"); break;
- case 'D': fprintf (file, "java_doublearray*"); break;
+ case 'I': fprintf (file, "java_intarray_t*"); break;
+ case 'J': fprintf (file, "java_longarray_t*"); break;
+ case 'Z': fprintf (file, "java_booleanarray_t*"); break;
+ case 'B': fprintf (file, "java_bytearray_t*"); break;
+ case 'S': fprintf (file, "java_shortarray_t*"); break;
+ case 'C': fprintf (file, "java_chararray_t*"); break;
+ case 'F': fprintf (file, "java_floatarray_t*"); break;
+ case 'D': fprintf (file, "java_doublearray_t*"); break;
- case '[': fprintf(file, "java_objectarray*");
+ case '[': fprintf(file, "java_objectarray_t*");
while ((c = utf_nextu2(&utf_ptr)) == '[');
if (c == 'L')
while (utf_nextu2(&utf_ptr) != ';');
break;
- case 'L': fprintf(file, "java_objectarray*");
+ case 'L': fprintf(file, "java_objectarray_t*");
while (utf_nextu2(&utf_ptr) != ';');
break;
default:
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: headers.h 8295 2007-08-11 17:57:24Z michi $
+ $Id: headers.h 8318 2007-08-16 10:05:34Z michi $
*/
/* export variables ***********************************************************/
-#warning object or handle???
extern java_object_t *_exceptionptr;
extern chain *nativemethod_chain;
extern chain *nativeclass_chain;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: jni.c 8312 2007-08-15 22:10:22Z twisti $
+ $Id: jni.c 8318 2007-08-16 10:05:34Z michi $
*/
*******************************************************************************/
java_handle_t *_Jv_jni_invokeNative(methodinfo *m, java_handle_t *o,
- java_objectarray *params)
+ java_handle_objectarray_t *params)
{
methodinfo *resm;
java_handle_t *ro;
/* check if we got the right number of arguments */
if (((params == NULL) && (paramcount != 0)) ||
- (params && (params->header.size != paramcount)))
+ (params && (LLNI_array_size(params) != paramcount)))
{
exceptions_throw_illegalargumentexception();
return NULL;
jstring _Jv_JNI_NewString(JNIEnv *env, const jchar *buf, jsize len)
{
- java_lang_String *s;
- java_chararray *a;
- u4 i;
+ java_lang_String *s;
+ java_handle_chararray_t *a;
+ u4 i;
STATISTICS(jniinvokation());
/* copy text */
for (i = 0; i < len; i++)
- a->data[i] = buf[i];
+ LLNI_array_direct(a, i) = buf[i];
LLNI_field_set_ref(s, value , a);
LLNI_field_set_val(s, offset, 0);
u2 *javastring_tou2(jstring so)
{
- java_lang_String *s;
- java_chararray *a;
- u2 *stringbuffer;
- u4 i;
+ java_lang_String *s;
+ java_handle_chararray_t *a;
+ u2 *stringbuffer;
+ u4 i;
+ int32_t count;
+ int32_t offset;
STATISTICS(jniinvokation());
if (!a)
return NULL;
+ LLNI_field_get_val(s, count, count);
+ LLNI_field_get_val(s, offset, offset);
+
/* allocate memory */
- stringbuffer = MNEW(u2, LLNI_field_direct(s, count) + 1);
+ stringbuffer = MNEW(u2, count + 1);
/* copy text */
- for (i = 0; i < LLNI_field_direct(s, count); i++)
- stringbuffer[i] = a->data[LLNI_field_direct(s, offset) + i];
+ for (i = 0; i < count; i++)
+ stringbuffer[i] = LLNI_array_direct(a, offset + i);
/* terminate string */
jsize _Jv_JNI_GetStringUTFLength(JNIEnv *env, jstring string)
{
- java_lang_String *s;
+ java_lang_String *s;
s4 length;
TRACEJNICALLS("_Jv_JNI_GetStringUTFLength(env=%p, string=%p)", env, string);
s = (java_lang_String *) string;
- length = u2_utflength(LLNI_field_direct(s, value)->data, LLNI_field_direct(s, count));
+ length = u2_utflength(LLNI_field_direct(s, value)->data, LLNI_field_direct(s, count));
return length;
}
jsize _Jv_JNI_GetArrayLength(JNIEnv *env, jarray array)
{
- java_arrayheader *a;
+ java_handle_t *a;
+ jsize size;
STATISTICS(jniinvokation());
- a = (java_arrayheader *) array;
+ a = (java_handle_t *) array;
+
+ size = LLNI_array_size(a);
- return a->size;
+ return size;
}
jobjectArray _Jv_JNI_NewObjectArray(JNIEnv *env, jsize length,
jclass elementClass, jobject initialElement)
{
- classinfo *c;
- java_handle_t *o;
- java_objectarray *oa;
- s4 i;
+ classinfo *c;
+ java_handle_t *o;
+ java_handle_objectarray_t *oa;
+ s4 i;
STATISTICS(jniinvokation());
/* set all elements to initialElement */
for (i = 0; i < length; i++)
- oa->data[i] = o;
+ LLNI_objectarray_element_set(oa, i, o);
return (jobjectArray) _Jv_JNI_NewLocalRef(env, (jobject) oa);
}
jobject _Jv_JNI_GetObjectArrayElement(JNIEnv *env, jobjectArray array,
jsize index)
{
- java_objectarray *oa;
- java_handle_t *o;
+ java_handle_objectarray_t *oa;
+ java_handle_t *o;
STATISTICS(jniinvokation());
- oa = (java_objectarray *) array;
+ oa = (java_handle_objectarray_t *) array;
- if (index >= oa->header.size) {
+ if (index >= LLNI_array_size(oa)) {
exceptions_throw_arrayindexoutofboundsexception();
return NULL;
}
- o = oa->data[index];
+ LLNI_objectarray_element_get(oa, index, o);
return _Jv_JNI_NewLocalRef(env, (jobject) o);
}
void _Jv_JNI_SetObjectArrayElement(JNIEnv *env, jobjectArray array,
jsize index, jobject val)
{
- java_objectarray *oa;
- java_handle_t *o;
+ java_handle_objectarray_t *oa;
+ java_handle_t *o;
STATISTICS(jniinvokation());
- oa = (java_objectarray *) array;
+ oa = (java_handle_objectarray_t *) array;
o = (java_handle_t *) val;
- if (index >= oa->header.size) {
+ if (index >= LLNI_array_size(oa)) {
exceptions_throw_arrayindexoutofboundsexception();
return;
}
if (!builtin_canstore(oa, o))
return;
- oa->data[index] = o;
+ LLNI_objectarray_element_set(oa, index, o);
}
#define JNI_NEW_ARRAY(name, type, intern) \
type _Jv_JNI_New##name##Array(JNIEnv *env, jsize len) \
{ \
- java_##intern##array *a; \
+ java_handle_##intern##array_t *a; \
\
STATISTICS(jniinvokation()); \
\
type *_Jv_JNI_Get##name##ArrayElements(JNIEnv *env, type##Array array, \
jboolean *isCopy) \
{ \
- java_##intern##array *a; \
+ java_handle_##intern##array_t *a; \
\
STATISTICS(jniinvokation()); \
\
- a = (java_##intern##array *) array; \
+ a = (java_handle_##intern##array_t *) array; \
\
if (isCopy) \
*isCopy = JNI_FALSE; \
\
- return a->data; \
+ return LLNI_array_data(a); \
}
JNI_GET_ARRAY_ELEMENTS(Boolean, jboolean, boolean)
*******************************************************************************/
-#define JNI_RELEASE_ARRAY_ELEMENTS(name, type, intern, intern2) \
-void _Jv_JNI_Release##name##ArrayElements(JNIEnv *env, type##Array array, \
- type *elems, jint mode) \
-{ \
- java_##intern##array *a; \
- \
- STATISTICS(jniinvokation()); \
- \
- a = (java_##intern##array *) array; \
- \
- if (elems != a->data) { \
- switch (mode) { \
- case JNI_COMMIT: \
- MCOPY(a->data, elems, intern2, a->header.size); \
- break; \
- case 0: \
- MCOPY(a->data, elems, intern2, a->header.size); \
- /* XXX TWISTI how should it be freed? */ \
- break; \
- case JNI_ABORT: \
- /* XXX TWISTI how should it be freed? */ \
- break; \
- } \
- } \
+#define JNI_RELEASE_ARRAY_ELEMENTS(name, type, intern, intern2) \
+void _Jv_JNI_Release##name##ArrayElements(JNIEnv *env, type##Array array, \
+ type *elems, jint mode) \
+{ \
+ java_handle_##intern##array_t *a; \
+ \
+ STATISTICS(jniinvokation()); \
+ \
+ a = (java_handle_##intern##array_t *) array; \
+ \
+ if (elems != LLNI_array_data(a)) { \
+ switch (mode) { \
+ case JNI_COMMIT: \
+ MCOPY(LLNI_array_data(a), elems, intern2, LLNI_array_size(a)); \
+ break; \
+ case 0: \
+ MCOPY(LLNI_array_data(a), elems, intern2, LLNI_array_size(a)); \
+ /* XXX TWISTI how should it be freed? */ \
+ break; \
+ case JNI_ABORT: \
+ /* XXX TWISTI how should it be freed? */ \
+ break; \
+ } \
+ } \
}
JNI_RELEASE_ARRAY_ELEMENTS(Boolean, jboolean, boolean, u1)
*******************************************************************************/
-#define JNI_GET_ARRAY_REGION(name, type, intern, intern2) \
-void _Jv_JNI_Get##name##ArrayRegion(JNIEnv *env, type##Array array, \
- jsize start, jsize len, type *buf) \
-{ \
- java_##intern##array *a; \
- \
- STATISTICS(jniinvokation()); \
- \
- a = (java_##intern##array *) array; \
- \
- if ((start < 0) || (len < 0) || (start + len > a->header.size)) \
- exceptions_throw_arrayindexoutofboundsexception(); \
- else \
- MCOPY(buf, &a->data[start], intern2, len); \
+#define JNI_GET_ARRAY_REGION(name, type, intern, intern2) \
+void _Jv_JNI_Get##name##ArrayRegion(JNIEnv *env, type##Array array, \
+ jsize start, jsize len, type *buf) \
+{ \
+ java_handle_##intern##array_t *a; \
+ \
+ STATISTICS(jniinvokation()); \
+ \
+ a = (java_handle_##intern##array_t *) array; \
+ \
+ if ((start < 0) || (len < 0) || (start + len > LLNI_array_size(a))) \
+ exceptions_throw_arrayindexoutofboundsexception(); \
+ else \
+ MCOPY(buf, &LLNI_array_direct(a, start), intern2, len); \
}
JNI_GET_ARRAY_REGION(Boolean, jboolean, boolean, u1)
void _Jv_JNI_Set##name##ArrayRegion(JNIEnv *env, type##Array array, \
jsize start, jsize len, const type *buf) \
{ \
- java_##intern##array *a; \
+ java_handle_##intern##array_t *a; \
\
STATISTICS(jniinvokation()); \
\
- a = (java_##intern##array *) array; \
+ a = (java_handle_##intern##array_t *) array; \
\
- if ((start < 0) || (len < 0) || (start + len > a->header.size)) \
+ if ((start < 0) || (len < 0) || (start + len > LLNI_array_size(a))) \
exceptions_throw_arrayindexoutofboundsexception(); \
else \
- MCOPY(&a->data[start], buf, intern2, len); \
+ MCOPY(&LLNI_array_direct(a, start), buf, intern2, len); \
}
JNI_SET_ARRAY_REGION(Boolean, jboolean, boolean, u1)
void _Jv_JNI_GetStringRegion(JNIEnv* env, jstring str, jsize start, jsize len,
jchar *buf)
{
- java_lang_String *s;
- java_chararray *ca;
+ java_lang_String *s;
+ java_handle_chararray_t *ca;
STATISTICS(jniinvokation());
return;
}
- MCOPY(buf, &ca->data[start], u2, len);
+ MCOPY(buf, &LLNI_array_direct(ca, start), u2, len);
}
void _Jv_JNI_GetStringUTFRegion(JNIEnv* env, jstring str, jsize start,
jsize len, char *buf)
{
- java_lang_String *s;
- java_chararray *ca;
- s4 i;
+ java_lang_String *s;
+ java_handle_chararray_t *ca;
+ s4 i;
+ int32_t count;
+ int32_t offset;
TRACEJNICALLS("_Jv_JNI_GetStringUTFRegion(env=%p, str=%p, start=%d, len=%d, buf=%p)", env, str, start, len, buf);
s = (java_lang_String *) str;
LLNI_field_get_ref(s, value, ca);
+ LLNI_field_get_val(s, count, count);
+ LLNI_field_get_val(s, offset, offset);
- if ((start < 0) || (len < 0) || (start > LLNI_field_direct(s, count)) ||
- (start + len > LLNI_field_direct(s, count))) {
+ if ((start < 0) || (len < 0) || (start > count) || (start + len > count)) {
exceptions_throw_stringindexoutofboundsexception();
return;
}
for (i = 0; i < len; i++)
- buf[i] = ca->data[LLNI_field_direct(s, offset) + start + i];
+ buf[i] = LLNI_array_direct(ca, offset + start + i);
buf[i] = '\0';
}
void *_Jv_JNI_GetPrimitiveArrayCritical(JNIEnv *env, jarray array,
jboolean *isCopy)
{
- java_bytearray *ba;
- jbyte *bp;
+ java_handle_bytearray_t *ba;
+ jbyte *bp;
- ba = (java_bytearray *) array;
+ ba = (java_handle_bytearray_t *) array;
/* do the same as Kaffe does */
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: jni.h 8297 2007-08-12 00:02:48Z michi $
+ $Id: jni.h 8318 2007-08-16 10:05:34Z michi $
*/
bool jni_init(void);
java_handle_t *_Jv_jni_invokeNative(methodinfo *m, java_handle_t *o,
- java_objectarray *params);
+ java_handle_objectarray_t *params);
#endif /* _JNI_H */
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: llni.h 8313 2007-08-15 22:11:35Z twisti $
+ $Id: llni.h 8318 2007-08-16 10:05:34Z michi $
*/
#define LLNI_field_direct(obj, field) ((obj)->field)
+#define LLNI_vftbl_direct(obj) (((java_handle_t *) (obj))->vftbl)
+
+#define LLNI_array_direct(arr, index) ((arr)->data[(index)])
+
+#define LLNI_array_data(arr) ((arr)->data)
+
+#define LLNI_array_size(arr) ((java_array_t *) (arr))->size
+
+/* XXX document me */
+
+#define LLNI_objectarray_element_set(arr, index, reference) \
+ LLNI_array_direct(arr, index) = reference
+
+#define LLNI_objectarray_element_get(arr, index, variable) \
+ (variable) = (java_handle_t *) LLNI_array_direct(arr, index)
+
+
#endif /* _LLNI_H */
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: gnu_classpath_VMStackWalker.c 8295 2007-08-11 17:57:24Z michi $
+ $Id: gnu_classpath_VMStackWalker.c 8318 2007-08-16 10:05:34Z michi $
*/
#include "config.h"
#include "native/jni.h"
+#include "native/llni.h"
#include "native/native.h"
#include "native/include/java_lang_Class.h"
* Method: getClassContext
* Signature: ()[Ljava/lang/Class;
*/
-JNIEXPORT java_objectarray* JNICALL Java_gnu_classpath_VMStackWalker_getClassContext(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_gnu_classpath_VMStackWalker_getClassContext(JNIEnv *env, jclass clazz)
{
- java_objectarray *oa;
+ java_handle_objectarray_t *oa;
oa = stacktrace_getClassContext();
*/
JNIEXPORT java_lang_Class* JNICALL Java_gnu_classpath_VMStackWalker_getCallingClass(JNIEnv *env, jclass clazz)
{
- java_objectarray *oa;
+ java_handle_objectarray_t *oa;
+ java_handle_t *o;
oa = stacktrace_getClassContext();
if (oa == NULL)
return NULL;
- if (oa->header.size < 2)
+ if (LLNI_array_size(oa) < 2)
return NULL;
- return (java_lang_Class *) oa->data[1];
+ LLNI_objectarray_element_get(oa, 1, o);
+
+ return (java_lang_Class *) o;
}
*/
JNIEXPORT java_lang_ClassLoader* JNICALL Java_gnu_classpath_VMStackWalker_getCallingClassLoader(JNIEnv *env, jclass clazz)
{
- java_objectarray *oa;
- classinfo *c;
- classloader *cl;
+ java_handle_objectarray_t *oa;
+ classinfo *c;
+ classloader *cl;
oa = stacktrace_getClassContext();
if (oa == NULL)
return NULL;
- if (oa->header.size < 2)
+ if (LLNI_array_size(oa) < 2)
return NULL;
- c = (classinfo *) oa->data[1];
+ c = (classinfo *) LLNI_array_direct(oa, 1);
cl = c->classloader;
return (java_lang_ClassLoader *) cl;
*/
JNIEXPORT java_lang_ClassLoader* JNICALL Java_gnu_classpath_VMStackWalker_firstNonNullClassLoader(JNIEnv *env, jclass clazz)
{
- java_objectarray *oa;
- classinfo *c;
- classloader *cl;
- s4 i;
+ java_handle_objectarray_t *oa;
+ classinfo *c;
+ classloader *cl;
+ s4 i;
oa = stacktrace_getClassContext();
if (oa == NULL)
return NULL;
- for (i = 0; i < oa->header.size; i++) {
- c = (classinfo *) oa->data[i];
+ for (i = 0; i < LLNI_array_size(oa); i++) {
+ c = (classinfo *) LLNI_array_direct(oa, i);
cl = c->classloader;
if (cl != NULL)
* Method: getInputArguments
* Signature: ()[Ljava/lang/String;
*/
-JNIEXPORT java_objectarray* JNICALL Java_gnu_java_lang_management_VMRuntimeMXBeanImpl_getInputArguments(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_gnu_java_lang_management_VMRuntimeMXBeanImpl_getInputArguments(JNIEnv *env, jclass clazz)
{
log_println("Java_gnu_java_lang_management_VMRuntimeMXBeanImpl_getInputArguments: IMPLEMENT ME!");
* Method: findMonitorDeadlockedThreads
* Signature: ()[J
*/
-JNIEXPORT java_longarray* JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_findMonitorDeadlockedThreads(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_longarray_t* JNICALL Java_gnu_java_lang_management_VMThreadMXBeanImpl_findMonitorDeadlockedThreads(JNIEnv *env, jclass clazz)
{
log_println("Java_gnu_java_lang_management_VMThreadMXBeanImpl_findMonitorDeadlockedThreads: IMPLEMENT ME!");
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_VMClass.c 8249 2007-07-31 12:59:03Z panzi $
+ $Id: java_lang_VMClass.c 8318 2007-08-16 10:05:34Z michi $
*/
* Method: getInterfaces
* Signature: (Ljava/lang/Class;)[Ljava/lang/Class;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getInterfaces(JNIEnv *env, jclass clazz, java_lang_Class *klass)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getInterfaces(JNIEnv *env, jclass clazz, java_lang_Class *klass)
{
return _Jv_java_lang_Class_getInterfaces(klass);
}
* Method: getDeclaredClasses
* Signature: (Ljava/lang/Class;Z)[Ljava/lang/Class;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredClasses(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getDeclaredClasses(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
{
return _Jv_java_lang_Class_getDeclaredClasses(klass, publicOnly);
}
* Method: getDeclaredFields
* Signature: (Ljava/lang/Class;Z)[Ljava/lang/reflect/Field;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredFields(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getDeclaredFields(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
{
return _Jv_java_lang_Class_getDeclaredFields(klass, publicOnly);
}
* Method: getDeclaredMethods
* Signature: (Ljava/lang/Class;Z)[Ljava/lang/reflect/Method;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredMethods(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getDeclaredMethods(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
{
return _Jv_java_lang_Class_getDeclaredMethods(klass, publicOnly);
}
* Method: getDeclaredConstructors
* Signature: (Ljava/lang/Class;Z)[Ljava/lang/reflect/Constructor;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredConstructors(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getDeclaredConstructors(JNIEnv *env, jclass clazz, java_lang_Class *klass, s4 publicOnly)
{
return _Jv_java_lang_Class_getDeclaredConstructors(klass, publicOnly);
}
* Method: getDeclaredAnnotations
* Signature: (Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMClass_getDeclaredAnnotations(JNIEnv *env, jclass clazz, java_lang_Class* klass)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMClass_getDeclaredAnnotations(JNIEnv *env, jclass clazz, java_lang_Class* klass)
{
return _Jv_java_lang_Class_getDeclaredAnnotations(klass);
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_VMClassLoader.c 8295 2007-08-11 17:57:24Z michi $
+ $Id: java_lang_VMClassLoader.c 8318 2007-08-16 10:05:34Z michi $
*/
* Method: defineClass
* Signature: (Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;
*/
-JNIEXPORT java_lang_Class* JNICALL Java_java_lang_VMClassLoader_defineClass(JNIEnv *env, jclass clazz, java_lang_ClassLoader *cl, java_lang_String *name, java_bytearray *data, s4 offset, s4 len, java_security_ProtectionDomain *pd)
+JNIEXPORT java_lang_Class* JNICALL Java_java_lang_VMClassLoader_defineClass(JNIEnv *env, jclass clazz, java_lang_ClassLoader *cl, java_lang_String *name, java_handle_bytearray_t *data, s4 offset, s4 len, java_security_ProtectionDomain *pd)
{
return _Jv_java_lang_ClassLoader_defineClass(cl, name, data, offset, len, pd);
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_VMSystem.c 7910 2007-05-16 08:02:52Z twisti $
+ $Id: java_lang_VMSystem.c 8318 2007-08-16 10:05:34Z michi $
*/
*/
JNIEXPORT void JNICALL Java_java_lang_VMSystem_arraycopy(JNIEnv *env, jclass clazz, java_lang_Object *src, s4 srcStart, java_lang_Object *dest, s4 destStart, s4 len)
{
- (void) builtin_arraycopy((java_arrayheader *) src, srcStart,
- (java_arrayheader *) dest, destStart, len);
+ (void) builtin_arraycopy((java_handle_t *) src, srcStart,
+ (java_handle_t *) dest, destStart, len);
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_VMThrowable.c 8295 2007-08-11 17:57:24Z michi $
+ $Id: java_lang_VMThrowable.c 8318 2007-08-16 10:05:34Z michi $
*/
* Method: getStackTrace
* Signature: (Ljava/lang/Throwable;)[Ljava/lang/StackTraceElement;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_VMThrowable_getStackTrace(JNIEnv *env, java_lang_VMThrowable *this, java_lang_Throwable *t)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_VMThrowable_getStackTrace(JNIEnv *env, java_lang_VMThrowable *this, java_lang_Throwable *t)
{
stacktracecontainer *stc;
stacktracebuffer *stb;
bool leftexceptionclass;
methodinfo *m;
- java_objectarray *oa;
+ java_handle_objectarray_t *oa;
s4 oalength;
java_lang_StackTraceElement *o;
java_lang_String *filename;
LLNI_field_set_ref(o, methodName , (java_lang_String *) javastring_new(ste->method->name));
LLNI_field_set_val(o, isNative , (ste->method->flags & ACC_NATIVE) ? 1 : 0);
- oa->data[i] = o;
+ LLNI_objectarray_element_set(oa, i, o);
}
return oa;
* Method: getMemoryPoolNames
* Signature: ()[Ljava/lang/String;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_management_VMManagementFactory_getMemoryPoolNames(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_management_VMManagementFactory_getMemoryPoolNames(JNIEnv *env, jclass clazz)
{
- java_objectarray *oa;
+ java_handle_objectarray_t *oa;
log_println("Java_java_lang_management_VMManagementFactory_getMemoryPoolNames: IMPLEMENT ME!");
* Method: getMemoryManagerNames
* Signature: ()[Ljava/lang/String;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_management_VMManagementFactory_getMemoryManagerNames(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_management_VMManagementFactory_getMemoryManagerNames(JNIEnv *env, jclass clazz)
{
- java_objectarray *oa;
+ java_handle_objectarray_t *oa;
log_println("Java_java_lang_management_VMManagementFactory_getMemoryManagerNames: IMPLEMENT ME!");
* Method: getGarbageCollectorNames
* Signature: ()[Ljava/lang/String;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_management_VMManagementFactory_getGarbageCollectorNames(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_management_VMManagementFactory_getGarbageCollectorNames(JNIEnv *env, jclass clazz)
{
- java_objectarray *oa;
+ java_handle_objectarray_t *oa;
log_println("Java_java_lang_management_VMManagementFactory_getGarbageCollectorNames: IMPLEMENT ME!");
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_reflect_Constructor.c 8311 2007-08-15 17:03:40Z panzi $
+ $Id: java_lang_reflect_Constructor.c 8318 2007-08-16 10:05:34Z michi $
*/
* Method: constructNative
* Signature: ([Ljava/lang/Object;Ljava/lang/Class;I)Ljava/lang/Object;
*/
-JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_constructNative(JNIEnv *env, java_lang_reflect_Constructor *this, java_objectarray *args, java_lang_Class *declaringClass, s4 slot)
+JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Constructor_constructNative(JNIEnv *env, java_lang_reflect_Constructor *this, java_handle_objectarray_t *args, java_lang_Class *declaringClass, s4 slot)
{
/* just to be sure */
* Method: getParameterAnnotations
* Signature: ()[[Ljava/lang/annotation/Annotation;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Constructor_getParameterAnnotations(JNIEnv *env, struct java_lang_reflect_Constructor* this)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_reflect_Constructor_getParameterAnnotations(JNIEnv *env, struct java_lang_reflect_Constructor* this)
{
java_handle_t *o = (java_handle_t*)this;
java_bytearray *parameterAnnotations = NULL;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_reflect_Method.c 8311 2007-08-15 17:03:40Z panzi $
+ $Id: java_lang_reflect_Method.c 8318 2007-08-16 10:05:34Z michi $
*/
* Method: getParameterTypes
* Signature: ()[Ljava/lang/Class;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Method_getParameterTypes(JNIEnv *env, java_lang_reflect_Method *this)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_reflect_Method_getParameterTypes(JNIEnv *env, java_lang_reflect_Method *this)
{
classinfo *c;
methodinfo *m;
* Method: getExceptionTypes
* Signature: ()[Ljava/lang/Class;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Method_getExceptionTypes(JNIEnv *env, java_lang_reflect_Method *this)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_reflect_Method_getExceptionTypes(JNIEnv *env, java_lang_reflect_Method *this)
{
classinfo *c;
methodinfo *m;
* Method: invokeNative
* Signature: (Ljava/lang/Object;[Ljava/lang/Object;Ljava/lang/Class;I)Ljava/lang/Object;
*/
-JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Method_invokeNative(JNIEnv *env, java_lang_reflect_Method *this, java_lang_Object *o, java_objectarray *args, java_lang_Class *clazz, s4 slot)
+JNIEXPORT java_lang_Object* JNICALL Java_java_lang_reflect_Method_invokeNative(JNIEnv *env, java_lang_reflect_Method *this, java_lang_Object *o, java_handle_objectarray_t *args, java_lang_Class *clazz, s4 slot)
{
/* just to be sure */
* Method: getParameterAnnotations
* Signature: ()[[Ljava/lang/annotation/Annotation;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_lang_reflect_Method_getParameterAnnotations(JNIEnv *env, struct java_lang_reflect_Method* this)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_lang_reflect_Method_getParameterAnnotations(JNIEnv *env, struct java_lang_reflect_Method* this)
{
java_handle_t *o = (java_handle_t*)this;
java_bytearray *parameterAnnotations = NULL;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_security_VMAccessController.c 7910 2007-05-16 08:02:52Z twisti $
+ $Id: java_security_VMAccessController.c 8318 2007-08-16 10:05:34Z michi $
*/
* Method: getStack
* Signature: ()[[Ljava/lang/Object;
*/
-JNIEXPORT java_objectarray* JNICALL Java_java_security_VMAccessController_getStack(JNIEnv *env, jclass clazz)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_java_security_VMAccessController_getStack(JNIEnv *env, jclass clazz)
{
return stacktrace_getStack();
}
* Method: getMemberRefInfoAt0
* Signature: (Ljava/lang/Object;I)[Ljava/lang/String;
*/
-JNIEXPORT java_objectarray* JNICALL Java_sun_reflect_ConstantPool_getMemberRefInfoAt0(JNIEnv *env, struct sun_reflect_ConstantPool* this, struct java_lang_Object* jcpool, int32_t index)
+JNIEXPORT java_handle_objectarray_t* JNICALL Java_sun_reflect_ConstantPool_getMemberRefInfoAt0(JNIEnv *env, struct sun_reflect_ConstantPool* this, struct java_lang_Object* jcpool, int32_t index)
{
log_println("Java_sun_reflect_ConstantPool_getMemberRefInfoAt0: jcpool=%p, index=%d, IMPLEMENT ME!", jcpool, index);
return NULL;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: java_lang_Class.c 8311 2007-08-15 17:03:40Z panzi $
+ $Id: java_lang_Class.c 8318 2007-08-16 10:05:34Z michi $
*/
{
classinfo *c;
java_lang_String *s;
- java_chararray *ca;
+ java_chararray_t *ca;
u4 i;
c = (classinfo *) klass;
LLNI_field_get_ref(s, value, ca);
- for (i = 0; i < ca->header.size; i++) {
- if (ca->data[i] == '/')
- ca->data[i] = '.';
+ for (i = 0; i < LLNI_array_size(ca); i++) {
+ if (LLNI_array_direct(ca, i) == '/')
+ LLNI_array_direct(ca, i) = '.';
}
return s;
* Method: getInterfaces
* Signature: ()[Ljava/lang/Class;
*/
-java_objectarray *_Jv_java_lang_Class_getInterfaces(java_lang_Class *klass)
+java_handle_objectarray_t *_Jv_java_lang_Class_getInterfaces(java_lang_Class *klass)
{
- classinfo *c;
- java_objectarray *oa;
+ classinfo *c;
+ java_handle_objectarray_t *oa;
c = (classinfo *) klass;
* Method: getDeclaredClasses
* Signature: (Z)[Ljava/lang/Class;
*/
-java_objectarray *_Jv_java_lang_Class_getDeclaredClasses(java_lang_Class *klass, s4 publicOnly)
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredClasses(java_lang_Class *klass, s4 publicOnly)
{
- classinfo *c;
- java_objectarray *oa;
+ classinfo *c;
+ java_handle_objectarray_t *oa;
c = (classinfo *) klass;
* Method: getDeclaredFields
* Signature: (Z)[Ljava/lang/reflect/Field;
*/
-java_objectarray *_Jv_java_lang_Class_getDeclaredFields(java_lang_Class *klass, s4 publicOnly)
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredFields(java_lang_Class *klass, s4 publicOnly)
{
- classinfo *c;
- java_objectarray *oa; /* result: array of field-objects */
- fieldinfo *f;
- java_lang_reflect_Field *rf;
+ classinfo *c;
+ java_handle_objectarray_t *oa; /* result: array of field-objects */
+ fieldinfo *f;
+ java_lang_reflect_Field *rf;
s4 public_fields; /* number of elements in field-array */
s4 pos;
s4 i;
/* store object into array */
- oa->data[pos++] = rf;
+ pos++;
+ LLNI_objectarray_element_set(oa, pos, rf);
}
}
* Method: getDeclaredMethods
* Signature: (Z)[Ljava/lang/reflect/Method;
*/
-java_objectarray *_Jv_java_lang_Class_getDeclaredMethods(java_lang_Class *klass, s4 publicOnly)
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredMethods(java_lang_Class *klass, s4 publicOnly)
{
- classinfo *c;
- java_lang_reflect_Method *rm;
- java_objectarray *oa; /* result: array of Method-objects */
- methodinfo *m; /* the current method to be represented */
+ classinfo *c;
+ java_lang_reflect_Method *rm;
+ java_handle_objectarray_t *oa; /* result: array of Method-objects */
+ methodinfo *m; /* the current method to be represented */
s4 public_methods; /* number of public methods of the class */
s4 pos;
s4 i;
/* store object into array */
- oa->data[pos++] = rm;
+ pos++;
+ LLNI_objectarray_element_set(oa, pos, rm);
}
}
* Method: getDeclaredConstructors
* Signature: (Z)[Ljava/lang/reflect/Constructor;
*/
-java_objectarray *_Jv_java_lang_Class_getDeclaredConstructors(java_lang_Class *klass, s4 publicOnly)
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredConstructors(java_lang_Class *klass, s4 publicOnly)
{
classinfo *c;
methodinfo *m; /* the current method to be represented */
- java_objectarray *oa; /* result: array of Method-objects */
+ java_handle_objectarray_t *oa; /* result: array of Method-objects */
java_lang_reflect_Constructor *rc;
s4 public_methods; /* number of public methods of the class */
s4 pos;
/* store object into array */
- oa->data[pos++] = rc;
+ pos++;
+ LLNI_objectarray_element_set(oa, pos, rc);
}
}
* Method: getDeclaredAnnotations
* Signature: (Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
*/
-java_objectarray *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* klass)
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* klass)
{
classinfo *c = (classinfo*)klass;
static methodinfo *m_parseAnnotationsIntoArray = NULL;
utf *utf_parseAnnotationsIntoArray = NULL;
utf *utf_desc = NULL;
- java_bytearray *annotations = NULL;
+ java_handle_bytearray_t *annotations = NULL;
sun_reflect_ConstantPool *constantPool = NULL;
uint32_t size = 0;
java_lang_Object *constantPoolOop = (java_lang_Object*)klass;
}
}
- return (java_objectarray*)vm_call_method(
+ return (java_handle_objectarray_t*)vm_call_method(
m_parseAnnotationsIntoArray, NULL,
annotations, constantPool, klass);
}
#if defined(ENABLE_JAVASE)
s4 _Jv_java_lang_Class_isPrimitive(java_lang_Class *klass);
java_lang_Class *_Jv_java_lang_Class_getSuperclass(java_lang_Class *klass);
-java_objectarray *_Jv_java_lang_Class_getInterfaces(java_lang_Class *klass);
+java_handle_objectarray_t *_Jv_java_lang_Class_getInterfaces(java_lang_Class *klass);
java_lang_Class *_Jv_java_lang_Class_getComponentType(java_lang_Class *klass);
s4 _Jv_java_lang_Class_getModifiers(java_lang_Class *klass, s4 ignoreInnerClassesAttrib);
java_lang_Class *_Jv_java_lang_Class_getDeclaringClass(java_lang_Class *klass);
-java_objectarray *_Jv_java_lang_Class_getDeclaredClasses(java_lang_Class *klass, s4 publicOnly);
-java_objectarray *_Jv_java_lang_Class_getDeclaredFields(java_lang_Class *klass, s4 publicOnly);
-java_objectarray *_Jv_java_lang_Class_getDeclaredMethods(java_lang_Class *klass, s4 publicOnly);
-java_objectarray *_Jv_java_lang_Class_getDeclaredConstructors(java_lang_Class *klass, s4 publicOnly);
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredClasses(java_lang_Class *klass, s4 publicOnly);
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredFields(java_lang_Class *klass, s4 publicOnly);
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredMethods(java_lang_Class *klass, s4 publicOnly);
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredConstructors(java_lang_Class *klass, s4 publicOnly);
java_lang_ClassLoader *_Jv_java_lang_Class_getClassLoader(java_lang_Class *klass);
#endif
void _Jv_java_lang_Class_throwException(java_lang_Throwable *t);
#if defined(WITH_CLASSPATH_GNU) && defined(ENABLE_ANNOTATIONS)
-java_objectarray *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* klass);
+java_handle_objectarray_t *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* klass);
#endif
java_lang_Class *_Jv_java_lang_Class_getEnclosingClass(java_lang_Class *klass);
* Method: defineClass
* Signature: (Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;
*/
-java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl, java_lang_String *name, java_bytearray *data, s4 offset, s4 len, java_security_ProtectionDomain *pd)
+java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl, java_lang_String *name, java_handle_bytearray_t *data, s4 offset, s4 len, java_security_ProtectionDomain *pd)
{
classloader *loader;
utf *utfname;
/* check the indexes passed */
- if ((offset < 0) || (len < 0) || ((offset + len) > data->header.size)) {
+ if ((offset < 0) || (len < 0) || ((offset + len) > LLNI_array_size(data))) {
exceptions_throw_arrayindexoutofboundsexception();
return NULL;
}
/* function prototypes ********************************************************/
#if defined(ENABLE_JAVASE)
-java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl, java_lang_String *name, java_bytearray *data, s4 offset, s4 len, java_security_ProtectionDomain *pd);
+java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl, java_lang_String *name, java_handle_bytearray_t *data, s4 offset, s4 len, java_security_ProtectionDomain *pd);
#endif
#endif /* _JV_JAVA_LANG_CLASSLOADER_H */
* Method: getParameterTypes
* Signature: ()[Ljava/lang/Class;
*/
-java_objectarray *_Jv_java_lang_reflect_Constructor_getParameterTypes(JNIEnv *env, java_lang_reflect_Constructor *this)
+java_handle_objectarray_t *_Jv_java_lang_reflect_Constructor_getParameterTypes(JNIEnv *env, java_lang_reflect_Constructor *this)
{
classinfo *c;
methodinfo *m;
* Method: getExceptionTypes
* Signature: ()[Ljava/lang/Class;
*/
-java_objectarray *_Jv_java_lang_reflect_Constructor_getExceptionTypes(JNIEnv *env, java_lang_reflect_Constructor *this)
+java_handle_objectarray_t *_Jv_java_lang_reflect_Constructor_getExceptionTypes(JNIEnv *env, java_lang_reflect_Constructor *this)
{
classinfo *c;
methodinfo *m;
* Method: newInstance
* Signature: ([Ljava/lang/Object;)Ljava/lang/Object;
*/
-java_lang_Object *_Jv_java_lang_reflect_Constructor_newInstance(JNIEnv *env, java_lang_reflect_Constructor *this, java_objectarray *args)
+java_lang_Object *_Jv_java_lang_reflect_Constructor_newInstance(JNIEnv *env, java_lang_reflect_Constructor *this, java_handle_objectarray_t *args)
{
classinfo *c;
methodinfo *m;
/* function prototypes ********************************************************/
-s4 _Jv_java_lang_reflect_Constructor_getModifiers(JNIEnv *env, java_lang_reflect_Constructor *this);
-java_objectarray *_Jv_java_lang_reflect_Constructor_getParameterTypes(JNIEnv *env, java_lang_reflect_Constructor *this);
-java_objectarray *_Jv_java_lang_reflect_Constructor_getExceptionTypes(JNIEnv *env, java_lang_reflect_Constructor *this);
-java_lang_Object *_Jv_java_lang_reflect_Constructor_newInstance(JNIEnv *env, java_lang_reflect_Constructor *this, java_objectarray *args);
-java_lang_String *_Jv_java_lang_reflect_Constructor_getSignature(JNIEnv *env, java_lang_reflect_Constructor *this);
+s4 _Jv_java_lang_reflect_Constructor_getModifiers(JNIEnv *env, java_lang_reflect_Constructor *this);
+java_handle_objectarray_t *_Jv_java_lang_reflect_Constructor_getParameterTypes(JNIEnv *env, java_lang_reflect_Constructor *this);
+java_handle_objectarray_t *_Jv_java_lang_reflect_Constructor_getExceptionTypes(JNIEnv *env, java_lang_reflect_Constructor *this);
+java_lang_Object *_Jv_java_lang_reflect_Constructor_newInstance(JNIEnv *env, java_lang_reflect_Constructor *this, java_handle_objectarray_t *args);
+java_lang_String *_Jv_java_lang_reflect_Constructor_getSignature(JNIEnv *env, java_lang_reflect_Constructor *this);
#endif /* _JV_JAVA_LANG_REFLECT_CONSTRUCTOR_H */
* Method: invoke
* Signature: (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
*/
-java_lang_Object *_Jv_java_lang_reflect_Method_invoke(java_lang_reflect_Method *this, java_lang_Object *o, java_objectarray *args)
+java_lang_Object *_Jv_java_lang_reflect_Method_invoke(java_lang_reflect_Method *this, java_lang_Object *o, java_handle_objectarray_t *args)
{
classinfo *c;
methodinfo *m;
/* function prototypes ********************************************************/
-java_lang_Object *_Jv_java_lang_reflect_Method_invoke(java_lang_reflect_Method *this, java_lang_Object *o, java_objectarray *args);
+java_lang_Object *_Jv_java_lang_reflect_Method_invoke(java_lang_reflect_Method *this, java_lang_Object *o, java_handle_objectarray_t *args);
#endif /* _JV_JAVA_LANG_REFLECT_METHOD_H */
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: reflect.c 8315 2007-08-15 22:49:20Z panzi $
+ $Id: reflect.c 8318 2007-08-16 10:05:34Z michi $
*/
java_handle_t *o;
java_lang_reflect_Constructor *rc;
int32_t slot;
- java_bytearray *annotations = NULL;
- java_bytearray *parameterAnnotations = NULL;
+ java_handle_bytearray_t *annotations = NULL;
+ java_handle_bytearray_t *parameterAnnotations = NULL;
/* get declaring class */
java_handle_t *o;
java_lang_reflect_Field *rf;
int32_t slot;
- java_bytearray *annotations = NULL;
+ java_handle_bytearray_t *annotations = NULL;
/* get declaring class */
java_handle_t *o;
java_lang_reflect_Method *rm;
int32_t slot;
- java_bytearray *annotations = NULL;
- java_bytearray *parameterAnnotations = NULL;
- java_bytearray *annotationDefault = NULL;
+ java_handle_bytearray_t *annotations = NULL;
+ java_handle_bytearray_t *parameterAnnotations = NULL;
+ java_handle_bytearray_t *annotationDefault = NULL;
/* get declaring class */
*******************************************************************************/
struct java_util_Map* reflect_get_declaredannotatios(
- java_bytearray *annotations,
- java_lang_Class *declaringClass,
- classinfo *referer)
+ java_handle_bytearray_t *annotations,
+ java_lang_Class *declaringClass,
+ classinfo *referer)
{
static methodinfo *m_parseAnnotations = NULL;
utf *utf_parseAnnotations = NULL;
*******************************************************************************/
-java_objectarray* reflect_get_parameterannotations(
+java_handle_objectarray_t* reflect_get_parameterannotations(
java_handle_t *parameterAnnotations,
int32_t slot,
java_lang_Class *declaringClass,
}
}
- return (java_objectarray*)vm_call_method(
+ return (java_handle_objectarray_t*)vm_call_method(
m_parseParameterAnnotations, NULL, parameterAnnotations,
constantPool, declaringClass, numParameters);
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: reflect.h 8305 2007-08-15 13:49:26Z panzi $
+ $Id: reflect.h 8318 2007-08-16 10:05:34Z michi $
*/
#if defined(WITH_CLASSPATH_GNU) && defined(ENABLE_ANNOTATIONS)
struct java_util_Map* reflect_get_declaredannotatios(
- java_bytearray *annotations,
- java_lang_Class *declaringClass,
- classinfo *referer);
+ java_handle_bytearray_t *annotations,
+ java_lang_Class *declaringClass,
+ classinfo *referer);
-java_objectarray* reflect_get_parameterannotations(
+java_handle_objectarray_t* reflect_get_parameterannotations(
java_handle_t *parameterAnnotations,
int32_t slot,
java_lang_Class *declaringClass,
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: jvm.c 8311 2007-08-15 17:03:40Z panzi $
+ $Id: jvm.c 8318 2007-08-16 10:05:34Z michi $
*/
void JVM_ArrayCopy(JNIEnv *env, jclass ignored, jobject src, jint src_pos, jobject dst, jint dst_pos, jint length)
{
- java_arrayheader *s;
- java_arrayheader *d;
+ java_handle_t *s;
+ java_handle_t *d;
- s = (java_arrayheader *) src;
- d = (java_arrayheader *) dst;
+ s = (java_handle_t *) src;
+ d = (java_handle_t *) dst;
#if PRINTJVM
log_println("JVM_ArrayCopy: src=%p, src_pos=%d, dst=%p, dst_pos=%d, length=%d", src, src_pos, dst, dst_pos, length);
jclass JVM_GetCallerClass(JNIEnv* env, int depth)
{
- java_objectarray *oa;
+ java_handle_objectarray_t *oa;
#if PRINTJVM
log_println("JVM_GetCallerClass: depth=%d", depth);
jobjectArray JVM_GetClassInterfaces(JNIEnv *env, jclass cls)
{
- classinfo *c;
- java_objectarray *oa;
+ classinfo *c;
+ java_handle_objectarray_t *oa;
TRACEJVMCALLS("JVM_GetClassInterfaces(env=%p, cls=%p)", env, cls);
jobjectArray JVM_GetDeclaredClasses(JNIEnv *env, jclass ofClass)
{
- classinfo *c;
- java_objectarray *oa;
+ classinfo *c;
+ java_handle_objectarray_t *oa;
TRACEJVMCALLS("JVM_GetDeclaredClasses(env=%p, ofClass=%p)", env, ofClass);
jobject JVM_AssertionStatusDirectives(JNIEnv *env, jclass unused)
{
- classinfo *c;
+ classinfo *c;
java_lang_AssertionStatusDirectives *o;
- java_objectarray *classes;
- java_objectarray *packages;
+ java_handle_objectarray_t *classes;
+ java_handle_objectarray_t *packages;
#if PRINTJVM || 1
log_println("JVM_AssertionStatusDirectives");
jobject JVM_NewArray(JNIEnv *env, jclass eltClass, jint length)
{
- classinfo *c;
- classinfo *pc;
- java_arrayheader *a;
- java_objectarray *oa;
+ classinfo *c;
+ classinfo *pc;
+ java_handle_t *a;
+ java_handle_objectarray_t *oa;
TRACEJVMCALLS("JVM_NewArray(env=%p, eltClass=%p, length=%d)", env, eltClass, length);
#if PRINTJVM
log_println("JVM_InvokeMethod: method=%p, obj=%p, args0=%p", method, obj, args0);
#endif
- return (jobject) _Jv_java_lang_reflect_Method_invoke((java_lang_reflect_Method *) method, (java_lang_Object *) obj, (java_objectarray *) args0);
+ return (jobject) _Jv_java_lang_reflect_Method_invoke((java_lang_reflect_Method *) method, (java_lang_Object *) obj, (java_handle_objectarray_t *) args0);
}
#if PRINTJVM
log_println("JVM_NewInstanceFromConstructor: c=%p, args0=%p", c, args0);
#endif
- return (jobject) _Jv_java_lang_reflect_Constructor_newInstance(env, (java_lang_reflect_Constructor *) c, (java_objectarray *) args0);
+ return (jobject) _Jv_java_lang_reflect_Constructor_newInstance(env, (java_lang_reflect_Constructor *) c, (java_handle_objectarray_t *) args0);
}
* Method: defineClass
* Signature: (Ljava/lang/String;[BIILjava/lang/ClassLoader;Ljava/security/ProtectionDomain;)Ljava/lang/Class;
*/
-JNIEXPORT java_lang_Class* JNICALL Java_sun_misc_Unsafe_defineClass__Ljava_lang_String_2_3BIILjava_lang_ClassLoader_2Ljava_security_ProtectionDomain_2(JNIEnv *env, sun_misc_Unsafe *this, java_lang_String *name, java_bytearray *b, int32_t off, int32_t len, java_lang_ClassLoader *loader, java_security_ProtectionDomain *protectionDomain)
+JNIEXPORT java_lang_Class* JNICALL Java_sun_misc_Unsafe_defineClass__Ljava_lang_String_2_3BIILjava_lang_ClassLoader_2Ljava_security_ProtectionDomain_2(JNIEnv *env, sun_misc_Unsafe *this, java_lang_String *name, java_handle_bytearray_t *b, int32_t off, int32_t len, java_lang_ClassLoader *loader, java_security_ProtectionDomain *protectionDomain)
{
classloader *cl;
utf *utfname;
/* check the indexes passed */
- if ((off < 0) || (len < 0) || ((off + len) > b->header.size)) {
+ if ((off < 0) || (len < 0) || ((off + len) > LLNI_array_size(b))) {
exceptions_throw_arrayindexoutofboundsexception();
return NULL;
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: access.c 8237 2007-07-27 16:15:29Z twisti $
+ $Id: access.c 8318 2007-08-16 10:05:34Z michi $
*/
#include "mm/memory.h"
+#include "native/llni.h"
+
#include "vm/access.h"
#include "vm/builtin.h"
#include "vm/exceptions.h"
bool access_check_field(fieldinfo *f, s4 calldepth)
{
- java_objectarray *oa;
- classinfo *callerclass;
- char *msg;
- s4 msglen;
- utf *u;
+ java_handle_objectarray_t *oa;
+ classinfo *callerclass;
+ char *msg;
+ s4 msglen;
+ utf *u;
/* if everything is public, there is nothing to check */
if (oa == NULL)
return false;
- assert(calldepth >= 0 && calldepth < oa->header.size);
+ assert(calldepth >= 0 && calldepth < LLNI_array_size(oa));
callerclass = (classinfo *) oa->data[calldepth];
bool access_check_method(methodinfo *m, s4 calldepth)
{
- java_objectarray *oa;
- classinfo *callerclass;
- char *msg;
- s4 msglen;
- utf *u;
+ java_handle_objectarray_t *oa;
+ classinfo *callerclass;
+ char *msg;
+ s4 msglen;
+ utf *u;
/* if everything is public, there is nothing to check */
if (oa == NULL)
return false;
- assert(calldepth >= 0 && calldepth < oa->header.size);
+ assert(calldepth >= 0 && calldepth < LLNI_array_size(oa));
callerclass = (classinfo *) oa->data[calldepth];
calls instead of machine instructions, using the C calling
convention.
- $Id: builtin.c 8295 2007-08-11 17:57:24Z michi $
+ $Id: builtin.c 8318 2007-08-16 10:05:34Z michi $
*/
*******************************************************************************/
-s4 builtin_canstore(java_objectarray *oa, java_handle_t *o)
+s4 builtin_canstore(java_handle_objectarray_t *oa, java_handle_t *o)
{
arraydescriptor *desc;
arraydescriptor *valuedesc;
/* This is an optimized version where a is guaranteed to be one-dimensional */
-s4 builtin_canstore_onedim (java_objectarray *a, java_handle_t *o)
+s4 builtin_canstore_onedim (java_handle_objectarray_t *a, java_handle_t *o)
{
arraydescriptor *desc;
vftbl_t *elementvftbl;
/* This is an optimized version where a is guaranteed to be a
* one-dimensional array of a class type */
-s4 builtin_canstore_onedim_class(java_objectarray *a, java_handle_t *o)
+s4 builtin_canstore_onedim_class(java_handle_objectarray_t *a, java_handle_t *o)
{
vftbl_t *elementvftbl;
vftbl_t *valuevftbl;
*******************************************************************************/
-java_arrayheader *builtin_newarray(s4 size, classinfo *arrayclass)
+java_handle_t *builtin_newarray(s4 size, classinfo *arrayclass)
{
- arraydescriptor *desc;
- s4 dataoffset;
- s4 componentsize;
- s4 actualsize;
- java_arrayheader *a;
+ arraydescriptor *desc;
+ s4 dataoffset;
+ s4 componentsize;
+ s4 actualsize;
+ java_array_t *a;
#if defined(ENABLE_RT_TIMING)
struct timespec time_start, time_end;
#endif
lock_init_object_lock(&a->objheader);
#endif
- a->size = size;
+ LLNI_array_size(a) = size;
RT_TIMING_GET_TIME(time_end);
RT_TIMING_TIME_DIFF(time_start, time_end, RT_TIMING_NEW_ARRAY);
*******************************************************************************/
-java_objectarray *builtin_anewarray(s4 size, classinfo *componentclass)
+java_handle_objectarray_t *builtin_anewarray(s4 size, classinfo *componentclass)
{
classinfo *arrayclass;
if (!arrayclass)
return NULL;
- return (java_objectarray *) builtin_newarray(size, arrayclass);
+ return (java_handle_objectarray_t *) builtin_newarray(size, arrayclass);
}
*******************************************************************************/
-java_booleanarray *builtin_newarray_boolean(s4 size)
+java_handle_booleanarray_t *builtin_newarray_boolean(s4 size)
{
- return (java_booleanarray *)
+ return (java_handle_booleanarray_t *)
builtin_newarray(size,
primitivetype_table[ARRAYTYPE_BOOLEAN].arrayclass);
}
*******************************************************************************/
-java_bytearray *builtin_newarray_byte(s4 size)
+java_handle_bytearray_t *builtin_newarray_byte(s4 size)
{
- return (java_bytearray *)
+ return (java_handle_bytearray_t *)
builtin_newarray(size, primitivetype_table[ARRAYTYPE_BYTE].arrayclass);
}
*******************************************************************************/
-java_chararray *builtin_newarray_char(s4 size)
+java_handle_chararray_t *builtin_newarray_char(s4 size)
{
- return (java_chararray *)
+ return (java_handle_chararray_t *)
builtin_newarray(size, primitivetype_table[ARRAYTYPE_CHAR].arrayclass);
}
*******************************************************************************/
-java_shortarray *builtin_newarray_short(s4 size)
+java_handle_shortarray_t *builtin_newarray_short(s4 size)
{
- return (java_shortarray *)
+ return (java_handle_shortarray_t *)
builtin_newarray(size, primitivetype_table[ARRAYTYPE_SHORT].arrayclass);
}
*******************************************************************************/
-java_intarray *builtin_newarray_int(s4 size)
+java_handle_intarray_t *builtin_newarray_int(s4 size)
{
- return (java_intarray *)
+ return (java_handle_intarray_t *)
builtin_newarray(size, primitivetype_table[ARRAYTYPE_INT].arrayclass);
}
*******************************************************************************/
-java_longarray *builtin_newarray_long(s4 size)
+java_handle_longarray_t *builtin_newarray_long(s4 size)
{
- return (java_longarray *)
+ return (java_handle_longarray_t *)
builtin_newarray(size, primitivetype_table[ARRAYTYPE_LONG].arrayclass);
}
*******************************************************************************/
-java_floatarray *builtin_newarray_float(s4 size)
+java_handle_floatarray_t *builtin_newarray_float(s4 size)
{
- return (java_floatarray *)
+ return (java_handle_floatarray_t *)
builtin_newarray(size, primitivetype_table[ARRAYTYPE_FLOAT].arrayclass);
}
*******************************************************************************/
-java_doublearray *builtin_newarray_double(s4 size)
+java_handle_doublearray_t *builtin_newarray_double(s4 size)
{
- return (java_doublearray *)
+ return (java_handle_doublearray_t *)
builtin_newarray(size,
primitivetype_table[ARRAYTYPE_DOUBLE].arrayclass);
}
******************************************************************************/
-static java_arrayheader *builtin_multianewarray_intern(int n,
- classinfo *arrayclass,
- long *dims)
+static java_handle_t *builtin_multianewarray_intern(int n,
+ classinfo *arrayclass,
+ long *dims)
{
- s4 size;
- java_arrayheader *a;
- classinfo *componentclass;
- s4 i;
+ s4 size;
+ java_handle_t *a;
+ classinfo *componentclass;
+ s4 i;
/* create this dimension */
size = (s4) dims[0];
- a = builtin_newarray(size, arrayclass);
+ a = builtin_newarray(size, arrayclass);
if (!a)
return NULL;
/* create the component arrays */
for (i = 0; i < size; i++) {
- java_arrayheader *ea =
+ java_handle_t *ea =
#if defined(__MIPS__) && (SIZEOF_VOID_P == 4)
/* we save an s4 to a s8 slot, 8-byte aligned */
if (!ea)
return NULL;
- ((java_objectarray *) a)->data[i] = (java_object_t *) ea;
+ ((java_handle_objectarray_t *) a)->data[i] = (java_object_t *) ea;
}
return a;
******************************************************************************/
-java_arrayheader *builtin_multianewarray(int n, classinfo *arrayclass,
- long *dims)
+java_handle_objectarray_t *builtin_multianewarray(int n, classinfo *arrayclass,
+ long *dims)
{
s4 i;
s4 size;
*******************************************************************************/
-bool builtin_arraycopy(java_arrayheader *src, s4 srcStart,
- java_arrayheader *dest, s4 destStart, s4 len)
+bool builtin_arraycopy(java_handle_t *src, s4 srcStart,
+ java_handle_t *dest, s4 destStart, s4 len)
{
arraydescriptor *sdesc;
arraydescriptor *ddesc;
return false;
}
- sdesc = src->objheader.vftbl->arraydesc;
- ddesc = dest->objheader.vftbl->arraydesc;
+ sdesc = LLNI_vftbl_direct(src)->arraydesc;
+ ddesc = LLNI_vftbl_direct(dest)->arraydesc;
if (!sdesc || !ddesc || (sdesc->arraytype != ddesc->arraytype)) {
exceptions_throw_arraystoreexception();
/* we try to throw exception with the same message as SUN does */
if ((len < 0) || (srcStart < 0) || (destStart < 0) ||
- (srcStart + len < 0) || (srcStart + len > src->size) ||
- (destStart + len < 0) || (destStart + len > dest->size)) {
+ (srcStart + len < 0) || (srcStart + len > LLNI_array_size(src)) ||
+ (destStart + len < 0) || (destStart + len > LLNI_array_size(dest))) {
exceptions_throw_arrayindexoutofboundsexception();
return false;
}
else {
/* We copy references of different type */
- java_objectarray *oas = (java_objectarray *) src;
- java_objectarray *oad = (java_objectarray *) dest;
+ java_handle_objectarray_t *oas = (java_handle_objectarray_t *) src;
+ java_handle_objectarray_t *oad = (java_handle_objectarray_t *) dest;
if (destStart <= srcStart) {
for (i = 0; i < len; i++) {
java_handle_t *builtin_clone(void *env, java_handle_t *o)
{
- arraydescriptor *ad;
- java_arrayheader *ah;
- u4 size;
- classinfo *c;
- java_handle_t *co; /* cloned object header */
+ arraydescriptor *ad;
+ java_handle_t *ah;
+ u4 size;
+ classinfo *c;
+ java_handle_t *co; /* cloned object header */
/* get the array descriptor */
/* we are cloning an array */
if (ad != NULL) {
- ah = (java_arrayheader *) o;
+ ah = (java_handle_t *) o;
- size = ad->dataoffset + ad->componentsize * ah->size;
+ size = ad->dataoffset + ad->componentsize * LLNI_array_size(ah);
co = heap_allocate(size, (ad->arraytype == ARRAYTYPE_OBJECT), NULL);
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: builtin.h 8295 2007-08-11 17:57:24Z michi $
+ $Id: builtin.h 8318 2007-08-16 10:05:34Z michi $
*/
java_handle_t *builtin_new(classinfo *c);
#define BUILTIN_new (functionptr) builtin_new
-java_arrayheader *builtin_newarray(s4 size, classinfo *arrayclass);
+java_handle_t *builtin_newarray(s4 size, classinfo *arrayclass);
#define BUILTIN_newarray (functionptr) builtin_newarray
-java_objectarray *builtin_anewarray(s4 size, classinfo *componentclass);
+java_handle_objectarray_t *builtin_anewarray(s4 size, classinfo *componentclass);
#define BUILTIN_anewarray (functionptr) builtin_anewarray
-java_booleanarray *builtin_newarray_boolean(s4 size);
+java_handle_booleanarray_t *builtin_newarray_boolean(s4 size);
#define BUILTIN_newarray_boolean (functionptr) builtin_newarray_boolean
-java_chararray *builtin_newarray_char(s4 size);
+java_handle_chararray_t *builtin_newarray_char(s4 size);
#define BUILTIN_newarray_char (functionptr) builtin_newarray_char
-java_floatarray *builtin_newarray_float(s4 size);
+java_handle_floatarray_t *builtin_newarray_float(s4 size);
#define BUILTIN_newarray_float (functionptr) builtin_newarray_float
-java_doublearray *builtin_newarray_double(s4 size);
+java_handle_doublearray_t *builtin_newarray_double(s4 size);
#define BUILTIN_newarray_double (functionptr) builtin_newarray_double
-java_bytearray *builtin_newarray_byte(s4 size);
+java_handle_bytearray_t *builtin_newarray_byte(s4 size);
#define BUILTIN_newarray_byte (functionptr) builtin_newarray_byte
-java_shortarray *builtin_newarray_short(s4 size);
+java_handle_shortarray_t *builtin_newarray_short(s4 size);
#define BUILTIN_newarray_short (functionptr) builtin_newarray_short
-java_intarray *builtin_newarray_int(s4 size);
+java_handle_intarray_t *builtin_newarray_int(s4 size);
#define BUILTIN_newarray_int (functionptr) builtin_newarray_int
-java_longarray *builtin_newarray_long(s4 size);
+java_handle_longarray_t *builtin_newarray_long(s4 size);
#define BUILTIN_newarray_long (functionptr) builtin_newarray_long
-java_arrayheader *builtin_multianewarray(int n, classinfo *arrayclass,
- long *dims);
+java_handle_objectarray_t *builtin_multianewarray(int n, classinfo *arrayclass,
+ long *dims);
#define BUILTIN_multianewarray (functionptr) builtin_multianewarray
-s4 builtin_canstore(java_objectarray *oa, java_handle_t *o);
+s4 builtin_canstore(java_handle_objectarray_t *oa, java_handle_t *o);
#define BUILTIN_canstore (functionptr) builtin_canstore
#if defined(TRACE_ARGS_NUM)
java_handle_t *builtin_clone(void *env, java_handle_t *o);
#define BUILTIN_clone (functionptr) builtin_clone
-bool builtin_arraycopy(java_arrayheader *src, s4 srcStart,
- java_arrayheader *dest, s4 destStart, s4 len);
+bool builtin_arraycopy(java_handle_t *src, s4 srcStart,
+ java_handle_t *dest, s4 destStart, s4 len);
#define BUILTIN_arraycopy (functionptr) builtin_arraycopy
s8 builtin_nanotime(void);
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: exceptions.c 8303 2007-08-13 19:01:52Z twisti $
+ $Id: exceptions.c 8318 2007-08-16 10:05:34Z michi $
*/
/* check if we get into trouble with our hardware-exceptions */
- if (OFFSET(java_bytearray, data) <= EXCEPTION_HARDWARE_LARGEST)
- vm_abort("signal_init: array-data offset is less or equal the maximum hardware-exception displacement: %d <= %d", OFFSET(java_bytearray, data), EXCEPTION_HARDWARE_LARGEST);
+ if (OFFSET(java_bytearray_t, data) <= EXCEPTION_HARDWARE_LARGEST)
+ vm_abort("signal_init: array-data offset is less or equal the maximum hardware-exception displacement: %d <= %d", OFFSET(java_bytearray_t, data), EXCEPTION_HARDWARE_LARGEST);
/* java/lang/Throwable */
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: global.h 8295 2007-08-11 17:57:24Z michi $
+ $Id: global.h 8318 2007-08-16 10:05:34Z michi $
*/
/* forward typedefs ***********************************************************/
typedef struct java_object_t java_object_t;
-typedef struct java_objectarray java_objectarray;
+typedef struct java_objectarray_t java_objectarray_t;
#define MAX_ALIGN 8 /* most generic alignment for JavaVM values */
};
-#if 0
-typedef struct java_handle_t {
- java_object_t *heap_object;
-} java_handle_t;
-#else
-typedef java_object_t java_handle_t;
-#endif
-
-
/* arrays **********************************************************************
All arrays are objects (they need the object header with a pointer
which is referenced by the vftbl.
*/
-typedef struct java_arrayheader { /* header for all arrays */
+typedef struct java_array_t { /* header for all arrays */
java_object_t objheader; /* object header */
s4 size; /* array size */
-} java_arrayheader;
+} java_array_t;
/* booleanarray and bytearray need identical memory layout (access methods
use the same machine code */
-typedef struct java_booleanarray {
- java_arrayheader header;
+typedef struct java_booleanarray_t {
+ java_array_t header;
u1 data[1];
-} java_booleanarray;
+} java_booleanarray_t;
-typedef struct java_bytearray {
- java_arrayheader header;
+typedef struct java_bytearray_t {
+ java_array_t header;
s1 data[1];
-} java_bytearray;
+} java_bytearray_t;
-typedef struct java_chararray {
- java_arrayheader header;
+typedef struct java_chararray_t {
+ java_array_t header;
u2 data[1];
-} java_chararray;
+} java_chararray_t;
-typedef struct java_shortarray {
- java_arrayheader header;
+typedef struct java_shortarray_t {
+ java_array_t header;
s2 data[1];
-} java_shortarray;
+} java_shortarray_t;
-typedef struct java_intarray {
- java_arrayheader header;
+typedef struct java_intarray_t {
+ java_array_t header;
s4 data[1];
-} java_intarray;
+} java_intarray_t;
-typedef struct java_longarray {
- java_arrayheader header;
+typedef struct java_longarray_t {
+ java_array_t header;
s8 data[1];
-} java_longarray;
+} java_longarray_t;
-typedef struct java_floatarray {
- java_arrayheader header;
+typedef struct java_floatarray_t {
+ java_array_t header;
float data[1];
-} java_floatarray;
+} java_floatarray_t;
-typedef struct java_doublearray {
- java_arrayheader header;
+typedef struct java_doublearray_t {
+ java_array_t header;
double data[1];
-} java_doublearray;
+} java_doublearray_t;
/* objectarray and arrayarray need identical memory layout (access methods
use the same machine code */
-struct java_objectarray {
- java_arrayheader header;
- java_object_t *data[1];
+struct java_objectarray_t {
+ java_array_t header;
+ java_object_t *data[1];
};
+/* java_handle_t ***************************************************************
+
+ TODO: document me!
+
+*******************************************************************************/
+
+#if 0
+typedef struct java_handle_t {
+ java_object_t *heap_object;
+} java_handle_t;
+#elseif 0
+typedef union {
+ java_object_t object;
+ java_array_t array;
+} java_handle_t;
+#else
+typedef java_object_t java_handle_t;
+typedef java_objectarray_t java_handle_objectarray_t;
+typedef java_booleanarray_t java_handle_booleanarray_t;
+typedef java_bytearray_t java_handle_bytearray_t;
+typedef java_chararray_t java_handle_chararray_t;
+typedef java_shortarray_t java_handle_shortarray_t;
+typedef java_intarray_t java_handle_intarray_t;
+typedef java_longarray_t java_handle_longarray_t;
+typedef java_floatarray_t java_handle_floatarray_t;
+typedef java_doublearray_t java_handle_doublearray_t;
+#endif
+
+
/* global constants related to the verifier ***********************************/
/* The verifier needs additional variables in the variable array. Since these */
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: codegen.c 8297 2007-08-12 00:02:48Z michi $
+ $Id: codegen.c 8318 2007-08-16 10:05:34Z michi $
*/
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
/* implicit null-pointer check */
- M_ILD(d, s1, OFFSET(java_arrayheader, size));
+ M_ILD(d, s1, OFFSET(java_array_t, size));
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
if (has_ext_instr_set) {
M_LADD(s2, s1, REG_ITMP1);
- M_BLDU(d, REG_ITMP1, OFFSET (java_bytearray, data[0]));
+ M_BLDU(d, REG_ITMP1, OFFSET (java_bytearray_t, data[0]));
M_BSEXT(d, d);
}
else {
M_LADD(s2, s1, REG_ITMP1);
- M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray, data[0]));
- M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray, data[0])+1);
+ M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
+ M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray_t, data[0])+1);
M_EXTQH(REG_ITMP2, REG_ITMP1, d);
M_SRA_IMM(d, 56, d);
}
if (has_ext_instr_set) {
M_LADD(s2, s1, REG_ITMP1);
M_LADD(s2, REG_ITMP1, REG_ITMP1);
- M_SLDU(d, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_SLDU(d, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
}
else {
M_LADD (s2, s1, REG_ITMP1);
M_LADD (s2, REG_ITMP1, REG_ITMP1);
- M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray, data[0]));
- M_LDA (REG_ITMP1, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
+ M_LDA (REG_ITMP1, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
M_EXTWL(REG_ITMP2, REG_ITMP1, d);
}
emit_store_dst(jd, iptr, d);
if (has_ext_instr_set) {
M_LADD(s2, s1, REG_ITMP1);
M_LADD(s2, REG_ITMP1, REG_ITMP1);
- M_SLDU( d, REG_ITMP1, OFFSET (java_shortarray, data[0]));
+ M_SLDU( d, REG_ITMP1, OFFSET (java_shortarray_t, data[0]));
M_SSEXT(d, d);
} else {
M_LADD(s2, s1, REG_ITMP1);
M_LADD(s2, REG_ITMP1, REG_ITMP1);
- M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray, data[0]));
- M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray, data[0])+2);
+ M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
+ M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray_t, data[0])+2);
M_EXTQH(REG_ITMP2, REG_ITMP1, d);
M_SRA_IMM(d, 48, d);
}
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_S4ADDQ(s2, s1, REG_ITMP1);
- M_ILD(d, REG_ITMP1, OFFSET(java_intarray, data[0]));
+ M_ILD(d, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_S8ADDQ(s2, s1, REG_ITMP1);
- M_LLD(d, REG_ITMP1, OFFSET(java_longarray, data[0]));
+ M_LLD(d, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_S4ADDQ(s2, s1, REG_ITMP1);
- M_FLD(d, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+ M_FLD(d, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_S8ADDQ(s2, s1, REG_ITMP1);
- M_DLD(d, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+ M_DLD(d, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SAADDQ(s2, s1, REG_ITMP1);
- M_ALD(d, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+ M_ALD(d, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
if (has_ext_instr_set) {
M_LADD(s2, s1, REG_ITMP1);
- M_BST(s3, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+ M_BST(s3, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
}
else {
M_LADD(s2, s1, REG_ITMP1);
- M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray, data[0]));
- M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+ M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
+ M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
M_INSBL(s3, REG_ITMP1, REG_ITMP3);
M_MSKBL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
if (has_ext_instr_set) {
M_LADD(s2, s1, REG_ITMP1);
M_LADD(s2, REG_ITMP1, REG_ITMP1);
- M_SST(s3, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_SST(s3, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
}
else {
M_LADD(s2, s1, REG_ITMP1);
M_LADD(s2, REG_ITMP1, REG_ITMP1);
- M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray, data[0]));
- M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
+ M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
M_INSWL(s3, REG_ITMP1, REG_ITMP3);
M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
if (has_ext_instr_set) {
M_LADD(s2, s1, REG_ITMP1);
M_LADD(s2, REG_ITMP1, REG_ITMP1);
- M_SST(s3, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+ M_SST(s3, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
}
else {
M_LADD(s2, s1, REG_ITMP1);
M_LADD(s2, REG_ITMP1, REG_ITMP1);
- M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray, data[0]));
- M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+ M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
+ M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
M_INSWL(s3, REG_ITMP1, REG_ITMP3);
M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_S4ADDQ(s2, s1, REG_ITMP1);
- M_IST(s3, REG_ITMP1, OFFSET(java_intarray, data[0]));
+ M_IST(s3, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
break;
case ICMD_LASTORE: /* ..., arrayref, index, value ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_S8ADDQ(s2, s1, REG_ITMP1);
- M_LST(s3, REG_ITMP1, OFFSET(java_longarray, data[0]));
+ M_LST(s3, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
break;
case ICMD_FASTORE: /* ..., arrayref, index, value ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_FTMP3);
M_S4ADDQ(s2, s1, REG_ITMP1);
- M_FST(s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+ M_FST(s3, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
break;
case ICMD_DASTORE: /* ..., arrayref, index, value ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_FTMP3);
M_S8ADDQ(s2, s1, REG_ITMP1);
- M_DST(s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+ M_DST(s3, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
break;
case ICMD_AASTORE: /* ..., arrayref, index, value ==> ... */
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_SAADDQ(s2, s1, REG_ITMP1);
- M_AST(s3, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+ M_AST(s3, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
if (has_ext_instr_set) {
M_LADD(s2, s1, REG_ITMP1);
- M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+ M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
}
else {
M_LADD(s2, s1, REG_ITMP1);
- M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray, data[0]));
- M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+ M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
+ M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
M_INSBL(REG_ZERO, REG_ITMP1, REG_ITMP3);
M_MSKBL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
if (has_ext_instr_set) {
M_LADD(s2, s1, REG_ITMP1);
M_LADD(s2, REG_ITMP1, REG_ITMP1);
- M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
}
else {
M_LADD(s2, s1, REG_ITMP1);
M_LADD(s2, REG_ITMP1, REG_ITMP1);
- M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray, data[0]));
- M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
+ M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
M_INSWL(REG_ZERO, REG_ITMP1, REG_ITMP3);
M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
if (has_ext_instr_set) {
M_LADD(s2, s1, REG_ITMP1);
M_LADD(s2, REG_ITMP1, REG_ITMP1);
- M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+ M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
}
else {
M_LADD(s2, s1, REG_ITMP1);
M_LADD(s2, REG_ITMP1, REG_ITMP1);
- M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray, data[0]));
- M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+ M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
+ M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
M_INSWL(REG_ZERO, REG_ITMP1, REG_ITMP3);
M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
M_OR(REG_ITMP2, REG_ITMP3, REG_ITMP2);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_S4ADDQ(s2, s1, REG_ITMP1);
- M_IST(REG_ZERO, REG_ITMP1, OFFSET(java_intarray, data[0]));
+ M_IST(REG_ZERO, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
break;
case ICMD_LASTORECONST: /* ..., arrayref, index ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_S8ADDQ(s2, s1, REG_ITMP1);
- M_LST(REG_ZERO, REG_ITMP1, OFFSET(java_longarray, data[0]));
+ M_LST(REG_ZERO, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
break;
case ICMD_AASTORECONST: /* ..., arrayref, index ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SAADDQ(s2, s1, REG_ITMP1);
- M_AST(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+ M_AST(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
break;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: emit.c 8260 2007-08-06 12:19:01Z michi $
+ $Id: emit.c 8318 2007-08-16 10:05:34Z michi $
*/
void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
{
if (INSTRUCTION_MUST_CHECK(iptr)) {
- M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+ M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
M_CMPULT(s2, REG_ITMP3, REG_ITMP3);
M_BNEZ(REG_ITMP3, 1);
M_ALD_INTERN(s2, REG_ZERO, EXCEPTION_HARDWARE_ARRAYINDEXOUTOFBOUNDS);
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: codegen.c 8297 2007-08-12 00:02:48Z michi $
+ $Id: codegen.c 8318 2007-08-16 10:05:34Z michi $
*/
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
/* implicit null-pointer check */
- M_ILD_INTERN(d, s1, OFFSET(java_arrayheader, size));
+ M_ILD_INTERN(d, s1, OFFSET(java_array_t, size));
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ADD(REG_ITMP1, s1, s2); /* REG_ITMP1 = s1 + 1 * s2 */
- M_LDRSB(d, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+ M_LDRSB(d, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ADD(REG_ITMP1, s1, REG_LSL(s2, 1)); /* REG_ITMP1 = s1 + 2 * s2 */
- M_LDRH(d, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_LDRH(d, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ADD(REG_ITMP1, s1, REG_LSL(s2, 1)); /* REG_ITMP1 = s1 + 2 * s2 */
- M_LDRSH(d, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+ M_LDRSH(d, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
- M_ILD_INTERN(d, REG_ITMP1, OFFSET(java_intarray, data[0]));
+ M_ILD_INTERN(d, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ADD(REG_ITMP3, s1, REG_LSL(s2, 3)); /* REG_ITMP3 = s1 + 8 * s2 */
- M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_longarray, data[0]));
+ M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_longarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
#if !defined(ENABLE_SOFTFLOAT)
d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
- M_FLD_INTERN(d, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+ M_FLD_INTERN(d, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
#else
d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
- M_ILD_INTERN(d, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+ M_ILD_INTERN(d, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
#endif
emit_store_dst(jd, iptr, d);
break;
M_ADD(REG_ITMP3, s1, REG_LSL(s2, 3)); /* REG_ITMP3 = s1 + 8 * s2 */
#if !defined(ENABLE_SOFTFLOAT)
d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
- M_DLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray, data[0]));
+ M_DLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray_t, data[0]));
#else
d = codegen_reg_of_dst(jd, iptr, REG_ITMP12_PACKED);
- M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray, data[0]));
+ M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray_t, data[0]));
#endif
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
- M_LDR_INTERN(d, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+ M_LDR_INTERN(d, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_ADD(REG_ITMP1, s1, s2); /* REG_ITMP1 = s1 + 1 * s2 */
- M_STRB(s3, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+ M_STRB(s3, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
break;
case ICMD_CASTORE: /* ..., arrayref, index, value ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_ADD(REG_ITMP1, s1, REG_LSL(s2, 1)); /* REG_ITMP1 = s1 + 2 * s2 */
- M_STRH(s3, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_STRH(s3, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
break;
case ICMD_SASTORE: /* ..., arrayref, index, value ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_ADD(REG_ITMP1, s1, REG_LSL(s2, 1)); /* REG_ITMP1 = s1 + 2 * s2 */
- M_STRH(s3, REG_ITMP1, OFFSET(java_shortarray, data[0]));
+ M_STRH(s3, REG_ITMP1, OFFSET(java_shortarray_t, data[0]));
break;
case ICMD_IASTORE: /* ..., arrayref, index, value ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
- M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray, data[0]));
+ M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
break;
case ICMD_LASTORE: /* ..., arrayref, index, value ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ADD(REG_ITMP3, s1, REG_LSL(s2, 3)); /* REG_ITMP3 = s1 + 8 * s2 */
s3 = emit_load_s3(jd, iptr, REG_ITMP12_PACKED);
- M_LST_INTERN(s3, REG_ITMP3, OFFSET(java_longarray, data[0]));
+ M_LST_INTERN(s3, REG_ITMP3, OFFSET(java_longarray_t, data[0]));
break;
case ICMD_FASTORE: /* ..., arrayref, index, value ==> ... */
M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
#if !defined(ENABLE_SOFTFLOAT)
s3 = emit_load_s3(jd, iptr, REG_FTMP1);
- M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+ M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
#else
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+ M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
#endif
break;
M_ADD(REG_ITMP1, s1, REG_LSL(s2, 3)); /* REG_ITMP1 = s1 + 8 * s2 */
#if !defined(ENABLE_SOFTFLOAT)
s3 = emit_load_s3(jd, iptr, REG_FTMP1);
- M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+ M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
#else
s3 = emit_load_s3(jd, iptr, REG_ITMP23_PACKED);
- M_LST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+ M_LST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
#endif
break;
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_ADD(REG_ITMP1, s1, REG_LSL(s2, 2)); /* REG_ITMP1 = s1 + 4 * s2 */
- M_STR_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+ M_STR_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
break;
case ICMD_GETSTATIC: /* ... ==> ..., value */
void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
{
if (INSTRUCTION_MUST_CHECK(iptr)) {
- M_ILD_INTERN(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+ M_ILD_INTERN(REG_ITMP3, s1, OFFSET(java_array_t, size));
M_CMP(s2, REG_ITMP3);
M_TRAPHS(s2, EXCEPTION_HARDWARE_ARRAYINDEXOUTOFBOUNDS);
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: codegen.c 8297 2007-08-12 00:02:48Z michi $
+ $Id: codegen.c 8318 2007-08-16 10:05:34Z michi $
*/
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
/* implicit null-pointer check */
- M_ILD(d, s1, OFFSET(java_arrayheader, size));
+ M_ILD(d, s1, OFFSET(java_array_t, size));
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movsbl_memindex_reg(cd, OFFSET(java_bytearray, data[0]),
+ emit_movsbl_memindex_reg(cd, OFFSET(java_bytearray_t, data[0]),
s1, s2, 0, d);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movzwl_memindex_reg(cd, OFFSET(java_chararray, data[0]),
+ emit_movzwl_memindex_reg(cd, OFFSET(java_chararray_t, data[0]),
s1, s2, 1, d);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movswl_memindex_reg(cd, OFFSET(java_shortarray, data[0]),
+ emit_movswl_memindex_reg(cd, OFFSET(java_shortarray_t, data[0]),
s1, s2, 1, d);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_mov_memindex_reg(cd, OFFSET(java_intarray, data[0]),
+ emit_mov_memindex_reg(cd, OFFSET(java_intarray_t, data[0]),
s1, s2, 2, d);
emit_store_dst(jd, iptr, d);
break;
var = VAROP(iptr->dst);
assert(var->flags & INMEMORY);
- emit_mov_memindex_reg(cd, OFFSET(java_longarray, data[0]),
+ emit_mov_memindex_reg(cd, OFFSET(java_longarray_t, data[0]),
s1, s2, 3, REG_ITMP3);
emit_mov_reg_membase(cd, REG_ITMP3, REG_SP, var->vv.regoff);
- emit_mov_memindex_reg(cd, OFFSET(java_longarray, data[0]) + 4,
+ emit_mov_memindex_reg(cd, OFFSET(java_longarray_t, data[0]) + 4,
s1, s2, 3, REG_ITMP3);
emit_mov_reg_membase(cd, REG_ITMP3, REG_SP, var->vv.regoff + 4);
break;
d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_flds_memindex(cd, OFFSET(java_floatarray, data[0]), s1, s2, 2);
+ emit_flds_memindex(cd, OFFSET(java_floatarray_t, data[0]), s1, s2, 2);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_FTMP3);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_fldl_memindex(cd, OFFSET(java_doublearray, data[0]), s1, s2,3);
+ emit_fldl_memindex(cd, OFFSET(java_doublearray_t, data[0]), s1, s2,3);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_mov_memindex_reg(cd, OFFSET(java_objectarray, data[0]),
+ emit_mov_memindex_reg(cd, OFFSET(java_objectarray_t, data[0]),
s1, s2, 2, d);
emit_store_dst(jd, iptr, d);
break;
M_INTMOVE(s3, REG_ITMP3);
s3 = REG_ITMP3;
}
- emit_movb_reg_memindex(cd, s3, OFFSET(java_bytearray, data[0]),
+ emit_movb_reg_memindex(cd, s3, OFFSET(java_bytearray_t, data[0]),
s1, s2, 0);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- emit_movw_reg_memindex(cd, s3, OFFSET(java_chararray, data[0]),
+ emit_movw_reg_memindex(cd, s3, OFFSET(java_chararray_t, data[0]),
s1, s2, 1);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- emit_movw_reg_memindex(cd, s3, OFFSET(java_shortarray, data[0]),
+ emit_movw_reg_memindex(cd, s3, OFFSET(java_shortarray_t, data[0]),
s1, s2, 1);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- emit_mov_reg_memindex(cd, s3, OFFSET(java_intarray, data[0]),
+ emit_mov_reg_memindex(cd, s3, OFFSET(java_intarray_t, data[0]),
s1, s2, 2);
break;
assert(var->flags & INMEMORY);
emit_mov_membase_reg(cd, REG_SP, var->vv.regoff, REG_ITMP3);
- emit_mov_reg_memindex(cd, REG_ITMP3, OFFSET(java_longarray, data[0])
+ emit_mov_reg_memindex(cd, REG_ITMP3, OFFSET(java_longarray_t, data[0])
, s1, s2, 3);
emit_mov_membase_reg(cd, REG_SP, var->vv.regoff + 4, REG_ITMP3);
emit_mov_reg_memindex(cd, REG_ITMP3,
- OFFSET(java_longarray, data[0]) + 4, s1, s2, 3);
+ OFFSET(java_longarray_t, data[0]) + 4, s1, s2, 3);
break;
case ICMD_FASTORE: /* ..., arrayref, index, value ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_FTMP1);
- emit_fstps_memindex(cd, OFFSET(java_floatarray, data[0]), s1, s2,2);
+ emit_fstps_memindex(cd, OFFSET(java_floatarray_t, data[0]), s1, s2,2);
break;
case ICMD_DASTORE: /* ..., arrayref, index, value ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_FTMP1);
- emit_fstpl_memindex(cd, OFFSET(java_doublearray, data[0]),
+ emit_fstpl_memindex(cd, OFFSET(java_doublearray_t, data[0]),
s1, s2, 3);
break;
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- emit_mov_reg_memindex(cd, s3, OFFSET(java_objectarray, data[0]),
+ emit_mov_reg_memindex(cd, s3, OFFSET(java_objectarray_t, data[0]),
s1, s2, 2);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
emit_movb_imm_memindex(cd, iptr->sx.s23.s3.constval,
- OFFSET(java_bytearray, data[0]), s1, s2, 0);
+ OFFSET(java_bytearray_t, data[0]), s1, s2, 0);
break;
case ICMD_CASTORECONST: /* ..., arrayref, index ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval,
- OFFSET(java_chararray, data[0]), s1, s2, 1);
+ OFFSET(java_chararray_t, data[0]), s1, s2, 1);
break;
case ICMD_SASTORECONST: /* ..., arrayref, index ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval,
- OFFSET(java_shortarray, data[0]), s1, s2, 1);
+ OFFSET(java_shortarray_t, data[0]), s1, s2, 1);
break;
case ICMD_IASTORECONST: /* ..., arrayref, index ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
emit_mov_imm_memindex(cd, iptr->sx.s23.s3.constval,
- OFFSET(java_intarray, data[0]), s1, s2, 2);
+ OFFSET(java_intarray_t, data[0]), s1, s2, 2);
break;
case ICMD_LASTORECONST: /* ..., arrayref, index ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
emit_mov_imm_memindex(cd,
(u4) (iptr->sx.s23.s3.constval & 0x00000000ffffffff),
- OFFSET(java_longarray, data[0]), s1, s2, 3);
+ OFFSET(java_longarray_t, data[0]), s1, s2, 3);
emit_mov_imm_memindex(cd,
((s4)iptr->sx.s23.s3.constval) >> 31,
- OFFSET(java_longarray, data[0]) + 4, s1, s2, 3);
+ OFFSET(java_longarray_t, data[0]) + 4, s1, s2, 3);
break;
case ICMD_AASTORECONST: /* ..., arrayref, index ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
emit_mov_imm_memindex(cd, 0,
- OFFSET(java_objectarray, data[0]), s1, s2, 2);
+ OFFSET(java_objectarray_t, data[0]), s1, s2, 2);
break;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: emit.c 8267 2007-08-07 11:07:48Z twisti $
+ $Id: emit.c 8318 2007-08-16 10:05:34Z michi $
*/
void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
{
if (INSTRUCTION_MUST_CHECK(iptr)) {
- M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+ M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
M_CMP(REG_ITMP3, s2);
M_BB(6);
M_ALD_MEM(s2, EXCEPTION_HARDWARE_ARRAYINDEXOUTOFBOUNDS);
s1 = emit_load_s1(jd, iptr, REG_ATMP1);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
/* implicit null-pointer check */
- M_ILD(d, s1, OFFSET(java_arrayheader, size));
+ M_ILD(d, s1, OFFSET(java_array_t, size));
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_INTMOVE(s2, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_bytearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_INTMOVE(s2, REG_ITMP2);
M_ISSL_IMM(1, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_chararray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_chararray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_INTMOVE(s2, REG_ITMP2);
M_ISSL_IMM(1, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_shortarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_INTMOVE(s2, REG_ITMP2);
M_ISSL_IMM(2, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_intarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_intarray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_INTMOVE(s2, REG_ITMP1);
M_ISSL_IMM(3, REG_ITMP1);
- M_IADD_IMM(OFFSET(java_longarray, data[0]), REG_ITMP1);
+ M_IADD_IMM(OFFSET(java_longarray_t, data[0]), REG_ITMP1);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP1, REG_ATMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_INTMOVE(s2, REG_ITMP2);
M_ISSL_IMM(2, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_floatarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_INTMOVE(s2, REG_ITMP2);
M_ISSL_IMM(3, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_doublearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_INTMOVE(s2, REG_ITMP2);
M_ISSL_IMM(2, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_objectarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_objectarray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_INTMOVE(s2, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_bytearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
/* implicit null-pointer check */
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_INTMOVE(s2, REG_ITMP2);
M_ISSL_IMM(1, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_chararray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_chararray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
/* implicit null-pointer check */
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_INTMOVE(s2, REG_ITMP2);
M_ISSL_IMM(1, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_shortarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
/* implicit null-pointer check */
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_INTMOVE(s2, REG_ITMP2);
M_ISSL_IMM(2, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_intarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_intarray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
/* implicit null-pointer check */
M_INTMOVE(s2, REG_ITMP1);
M_ISSL_IMM(3, REG_ITMP1);
- M_IADD_IMM(OFFSET(java_longarray, data[0]), REG_ITMP1);
+ M_IADD_IMM(OFFSET(java_longarray_t, data[0]), REG_ITMP1);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP1, REG_ATMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_INTMOVE(s2, REG_ITMP2);
M_ISSL_IMM(2, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_floatarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_INTMOVE(s2, REG_ITMP2);
M_ISSL_IMM(3, REG_ITMP2);
- M_IADD_IMM(OFFSET(java_doublearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP2, REG_ATMP1);
/* implicit null-pointer check */
s3 = emit_load_s3(jd, iptr, REG_ATMP2);
M_INTMOVE(s2, REG_ITMP1);
M_ISSL_IMM(2, REG_ITMP1);
- M_IADD_IMM(OFFSET(java_objectarray, data[0]), REG_ITMP1);
+ M_IADD_IMM(OFFSET(java_objectarray_t, data[0]), REG_ITMP1);
M_ADRMOVE(s1, REG_ATMP1);
M_AADDINT(REG_ITMP1, REG_ATMP1);
/* implicit null-pointer check */
void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
{
if (INSTRUCTION_MUST_CHECK(iptr)) {
- M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+ M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
M_ICMP(s2, REG_ITMP3);
M_BHI(4);
M_TRAP_SETREGISTER(s2);
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: codegen.c 8297 2007-08-12 00:02:48Z michi $
+ $Id: codegen.c 8318 2007-08-16 10:05:34Z michi $
*/
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
/* implicit null-pointer check */
- M_ILD(d, s1, OFFSET(java_arrayheader, size));
+ M_ILD(d, s1, OFFSET(java_array_t, size));
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_AADD(s2, s1, REG_ITMP3);
/* implicit null-pointer check */
- M_BLDS(d, REG_ITMP3, OFFSET(java_bytearray, data[0]));
+ M_BLDS(d, REG_ITMP3, OFFSET(java_bytearray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
M_AADD(s2, s1, REG_ITMP3);
M_AADD(s2, REG_ITMP3, REG_ITMP3);
/* implicit null-pointer check */
- M_SLDU(d, REG_ITMP3, OFFSET(java_chararray, data[0]));
+ M_SLDU(d, REG_ITMP3, OFFSET(java_chararray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
M_AADD(s2, s1, REG_ITMP3);
M_AADD(s2, REG_ITMP3, REG_ITMP3);
/* implicit null-pointer check */
- M_SLDS(d, REG_ITMP3, OFFSET(java_shortarray, data[0]));
+ M_SLDS(d, REG_ITMP3, OFFSET(java_shortarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
M_ASLL_IMM(s2, 2, REG_ITMP3);
M_AADD(REG_ITMP3, s1, REG_ITMP3);
/* implicit null-pointer check */
- M_ILD_INTERN(d, REG_ITMP3, OFFSET(java_intarray, data[0]));
+ M_ILD_INTERN(d, REG_ITMP3, OFFSET(java_intarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
M_ASLL_IMM(s2, 3, REG_ITMP3);
M_AADD(REG_ITMP3, s1, REG_ITMP3);
/* implicit null-pointer check */
- M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_longarray, data[0]));
+ M_LLD_INTERN(d, REG_ITMP3, OFFSET(java_longarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
M_ASLL_IMM(s2, 2, REG_ITMP3);
M_AADD(REG_ITMP3, s1, REG_ITMP3);
/* implicit null-pointer check */
- M_FLD_INTERN(d, REG_ITMP3, OFFSET(java_floatarray, data[0]));
+ M_FLD_INTERN(d, REG_ITMP3, OFFSET(java_floatarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
M_ASLL_IMM(s2, 3, REG_ITMP3);
M_AADD(REG_ITMP3, s1, REG_ITMP3);
/* implicit null-pointer check */
- M_DLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray, data[0]));
+ M_DLD_INTERN(d, REG_ITMP3, OFFSET(java_doublearray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
M_ASLL_IMM(s2, POINTERSHIFT, REG_ITMP3);
M_AADD(REG_ITMP3, s1, REG_ITMP3);
/* implicit null-pointer check */
- M_ALD_INTERN(d, REG_ITMP3, OFFSET(java_objectarray, data[0]));
+ M_ALD_INTERN(d, REG_ITMP3, OFFSET(java_objectarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
M_AADD(s2, s1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
- M_BST(s3, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+ M_BST(s3, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
break;
case ICMD_CASTORE: /* ..., arrayref, index, value ==> ... */
M_AADD(s2, REG_ITMP1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
- M_SST(s3, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_SST(s3, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
break;
case ICMD_IASTORE: /* ..., arrayref, index, value ==> ... */
M_AADD(REG_ITMP2, s1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
- M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray, data[0]));
+ M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
break;
case ICMD_LASTORE: /* ..., arrayref, index, value ==> ... */
s3 = emit_load_s3(jd, iptr, REG_ITMP23_PACKED);
#endif
/* implicit null-pointer check */
- M_LST_INTERN(s3, REG_ITMP1, OFFSET(java_longarray, data[0]));
+ M_LST_INTERN(s3, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
break;
case ICMD_FASTORE: /* ..., arrayref, index, value ==> ... */
M_AADD(REG_ITMP2, s1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_FTMP1);
/* implicit null-pointer check */
- M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+ M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
break;
case ICMD_DASTORE: /* ..., arrayref, index, value ==> ... */
M_AADD(REG_ITMP2, s1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_FTMP1);
/* implicit null-pointer check */
- M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+ M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
break;
M_AADD(REG_ITMP2, s1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
- M_AST_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+ M_AST_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_AADD(s2, s1, REG_ITMP1);
/* implicit null-pointer check */
- M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+ M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
break;
case ICMD_CASTORECONST: /* ..., arrayref, index ==> ... */
M_AADD(s2, s1, REG_ITMP1);
M_AADD(s2, REG_ITMP1, REG_ITMP1);
/* implicit null-pointer check */
- M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
break;
case ICMD_IASTORECONST: /* ..., arrayref, index ==> ... */
M_ASLL_IMM(s2, 2, REG_ITMP2);
M_AADD(REG_ITMP2, s1, REG_ITMP1);
/* implicit null-pointer check */
- M_IST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_intarray, data[0]));
+ M_IST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
break;
case ICMD_LASTORECONST: /* ..., arrayref, index ==> ... */
M_AADD(REG_ITMP2, s1, REG_ITMP1);
/* implicit null-pointer check */
#if SIZEOF_VOID_P == 8
- M_LST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_longarray, data[0]));
+ M_LST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
#else
- M_LST_INTERN(PACK_REGS(REG_ZERO, REG_ZERO), REG_ITMP1, OFFSET(java_longarray, data[0]));
+ M_LST_INTERN(PACK_REGS(REG_ZERO, REG_ZERO), REG_ITMP1, OFFSET(java_longarray_t, data[0]));
#endif
break;
M_ASLL_IMM(s2, POINTERSHIFT, REG_ITMP2);
M_AADD(REG_ITMP2, s1, REG_ITMP1);
/* implicit null-pointer check */
- M_AST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+ M_AST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
break;
void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
{
if (INSTRUCTION_MUST_CHECK(iptr)) {
- M_ILD_INTERN(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+ M_ILD_INTERN(REG_ITMP3, s1, OFFSET(java_array_t, size));
M_CMPULT(s2, REG_ITMP3, REG_ITMP3);
M_BNEZ(REG_ITMP3, 2);
M_NOP;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: codegen.c 8297 2007-08-12 00:02:48Z michi $
+ $Id: codegen.c 8318 2007-08-16 10:05:34Z michi $
*/
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
/* implicit null-pointer check */
- M_ILD(d, s1, OFFSET(java_arrayheader, size));
+ M_ILD(d, s1, OFFSET(java_array_t, size));
emit_store_dst(jd, iptr, d);
break;
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- M_IADD_IMM(s2, OFFSET(java_bytearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(s2, OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LBZX(d, s1, REG_ITMP2);
M_BSEXT(d, d);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 1, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LHZX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 1, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LHAX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 2, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LWZX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 3, REG_ITMP2);
M_IADD(s1, REG_ITMP2, REG_ITMP2);
- M_LLD_INTERN(d, REG_ITMP2, OFFSET(java_longarray, data[0]));
+ M_LLD_INTERN(d, REG_ITMP2, OFFSET(java_longarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 2, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LFSX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 3, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LFDX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 2, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LWZX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- M_IADD_IMM(s2, OFFSET(java_bytearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(s2, OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STBX(s3, s1, REG_ITMP2);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_SLL_IMM(s2, 1, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STHX(s3, s1, REG_ITMP2);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_SLL_IMM(s2, 1, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STHX(s3, s1, REG_ITMP2);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_SLL_IMM(s2, 2, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STWX(s3, s1, REG_ITMP2);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3_high(jd, iptr, REG_ITMP3);
M_SLL_IMM(s2, 3, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_longarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_longarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STWX(s3, s1, REG_ITMP2);
M_IADD_IMM(REG_ITMP2, 4, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_FTMP3);
M_SLL_IMM(s2, 2, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STFSX(s3, s1, REG_ITMP2);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_FTMP3);
M_SLL_IMM(s2, 3, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STFDX(s3, s1, REG_ITMP2);
break;
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_SLL_IMM(s2, 2, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STWX(s3, s1, REG_ITMP2);
break;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: emit.c 8270 2007-08-08 13:57:12Z twisti $
+ $Id: emit.c 8318 2007-08-16 10:05:34Z michi $
*/
void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
{
if (INSTRUCTION_MUST_CHECK(iptr)) {
- M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+ M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
M_TRAPGEU(s2, REG_ITMP3);
}
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: codegen.c 8297 2007-08-12 00:02:48Z michi $
+ $Id: codegen.c 8318 2007-08-16 10:05:34Z michi $
*/
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_nullpointer_check(cd, iptr, s1);
- M_ILD(d, s1, OFFSET(java_arrayheader, size));
+ M_ILD(d, s1, OFFSET(java_array_t, size));
emit_store_dst(jd, iptr, d);
break;
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- M_IADD_IMM(s2, OFFSET(java_bytearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(s2, OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LBZX(d, s1, REG_ITMP2);
M_BSEXT(d, d);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 1, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LHZX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 1, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LHAX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 2, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LWAX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
M_SLL_IMM(s2, 3, REG_ITMP2);
M_IADD(s1, REG_ITMP2, REG_ITMP2);
/* implicit null-pointer check */
- M_LLD_INTERN(d, REG_ITMP2, OFFSET(java_longarray, data[0]));
+ M_LLD_INTERN(d, REG_ITMP2, OFFSET(java_longarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 2, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LFSX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
d = codegen_reg_of_dst(jd, iptr, REG_FTMP1);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 3, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LFDX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_SLL_IMM(s2, 3, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_ALDX(d, s1, REG_ITMP2);
emit_store_dst(jd, iptr, d);
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- M_IADD_IMM(s2, OFFSET(java_bytearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(s2, OFFSET(java_bytearray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STBX(s3, s1, REG_ITMP2);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_SLL_IMM(s2, 1, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_chararray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STHX(s3, s1, REG_ITMP2);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_SLL_IMM(s2, 1, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_shortarray_t, data[0]), REG_ITMP2);
M_STHX(s3, s1, REG_ITMP2);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_SLL_IMM(s2, 2, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_intarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STWX(s3, s1, REG_ITMP2);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_SLL_IMM(s2, 3, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_longarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_longarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_LSTX(s3, s1, REG_ITMP2);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_FTMP3);
M_SLL_IMM(s2, 2, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_floatarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STFSX(s3, s1, REG_ITMP2);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_FTMP3);
M_SLL_IMM(s2, 3, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_doublearray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_STFDX(s3, s1, REG_ITMP2);
break;
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
M_SLL_IMM(s2, 3, REG_ITMP2);
- M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray, data[0]), REG_ITMP2);
+ M_IADD_IMM(REG_ITMP2, OFFSET(java_objectarray_t, data[0]), REG_ITMP2);
/* implicit null-pointer check */
M_ASTX(s3, s1, REG_ITMP2);
break;
if (checkbounds) {
#define SOFTEX 0
#if SOFTEX
- M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+ M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
M_CMPU(s2, REG_ITMP3);
codegen_add_arrayindexoutofboundsexception_ref(cd, s2);
BRANCH_NOPS;
#else
- M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+ M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
M_CMPU(s2, REG_ITMP3);
M_BLT(1);
/* ALD is 4 byte aligned, ILD 2, onyl LWZ is byte aligned */
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: codegen.c 8297 2007-08-12 00:02:48Z michi $
+ $Id: codegen.c 8318 2007-08-16 10:05:34Z michi $
*/
d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
/* TODO softnull */
/* implicit null-pointer check */
- M_ILD(d, s1, OFFSET(java_arrayheader, size));
+ M_ILD(d, s1, OFFSET(java_array_t, size));
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- N_IC(d, OFFSET(java_bytearray, data[0]), s2, s1);
+ N_IC(d, OFFSET(java_bytearray_t, data[0]), s2, s1);
M_SLL_IMM(24, d);
M_SRA_IMM(24, d);
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(1, REG_ITMP2);
- N_LH(d, OFFSET(java_chararray, data[0]), REG_ITMP2, s1);
+ N_LH(d, OFFSET(java_chararray_t, data[0]), REG_ITMP2, s1);
/* N_LH does sign extends, undo ! */
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(1, REG_ITMP2);
- N_LH(d, OFFSET(java_shortarray, data[0]), REG_ITMP2, s1);
+ N_LH(d, OFFSET(java_shortarray_t, data[0]), REG_ITMP2, s1);
emit_store_dst(jd, iptr, d);
break;
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(2, REG_ITMP2); /* scale index by 4 */
- N_L(d, OFFSET(java_intarray, data[0]), REG_ITMP2, s1);
+ N_L(d, OFFSET(java_intarray_t, data[0]), REG_ITMP2, s1);
emit_store_dst(jd, iptr, d);
break;
s1 = REG_ITMP3;
}
- N_L(GET_HIGH_REG(d) /* evntl. itmp1 */, OFFSET(java_intarray, data[0]), REG_ITMP2, s1);
- N_L(GET_LOW_REG(d) /* evntl. itmp2 */, OFFSET(java_intarray, data[0]) + 4, REG_ITMP2, s1);
+ N_L(GET_HIGH_REG(d) /* evntl. itmp1 */, OFFSET(java_intarray_t, data[0]), REG_ITMP2, s1);
+ N_L(GET_LOW_REG(d) /* evntl. itmp2 */, OFFSET(java_intarray_t, data[0]) + 4, REG_ITMP2, s1);
emit_store_dst(jd, iptr, d);
break;
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(2, REG_ITMP2); /* scale index by 4 */
- N_LE(d, OFFSET(java_floatarray, data[0]), REG_ITMP2, s1);
+ N_LE(d, OFFSET(java_floatarray_t, data[0]), REG_ITMP2, s1);
emit_store_dst(jd, iptr, d);
break;
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(3, REG_ITMP2); /* scale index by 8 */
- N_LD(d, OFFSET(java_floatarray, data[0]), REG_ITMP2, s1);
+ N_LD(d, OFFSET(java_floatarray_t, data[0]), REG_ITMP2, s1);
emit_store_dst(jd, iptr, d);
break;
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(2, REG_ITMP2); /* scale index by 4 */
- N_L(d, OFFSET(java_objectarray, data[0]), REG_ITMP2, s1);
+ N_L(d, OFFSET(java_objectarray_t, data[0]), REG_ITMP2, s1);
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- N_STC(s3, OFFSET(java_bytearray, data[0]), s2, s1);
+ N_STC(s3, OFFSET(java_bytearray_t, data[0]), s2, s1);
break;
case ICMD_CASTORE: /* ..., arrayref, index, value ==> ... */
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(1, REG_ITMP2);
- N_STH(s3, OFFSET(java_chararray, data[0]), REG_ITMP2, s1);
+ N_STH(s3, OFFSET(java_chararray_t, data[0]), REG_ITMP2, s1);
break;
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(1, REG_ITMP2);
- N_STH(s3, OFFSET(java_shortarray, data[0]), REG_ITMP2, s1);
+ N_STH(s3, OFFSET(java_shortarray_t, data[0]), REG_ITMP2, s1);
break;
case ICMD_IASTORE: /* ..., arrayref, index, value ==> ... */
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(2, REG_ITMP2);
- N_ST(s3, OFFSET(java_intarray, data[0]), REG_ITMP2, s1);
+ N_ST(s3, OFFSET(java_intarray_t, data[0]), REG_ITMP2, s1);
break;
case ICMD_LASTORE: /* ..., arrayref, index, value ==> ... */
M_SLL_IMM(3, REG_ITMP2);
s3 = emit_load_s3_high(jd, iptr, REG_ITMP3);
- N_ST(s3, OFFSET(java_intarray, data[0]), REG_ITMP2, s1);
+ N_ST(s3, OFFSET(java_intarray_t, data[0]), REG_ITMP2, s1);
s3 = emit_load_s3_low(jd, iptr, REG_ITMP3);
- N_ST(s3, OFFSET(java_intarray, data[0]) + 4, REG_ITMP2, s1);
+ N_ST(s3, OFFSET(java_intarray_t, data[0]) + 4, REG_ITMP2, s1);
break;
case ICMD_FASTORE: /* ..., arrayref, index, value ==> ... */
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(2, REG_ITMP2);
- N_STE(s3, OFFSET(java_floatarray, data[0]), REG_ITMP2, s1);
+ N_STE(s3, OFFSET(java_floatarray_t, data[0]), REG_ITMP2, s1);
break;
case ICMD_DASTORE: /* ..., arrayref, index, value ==> ... */
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(3, REG_ITMP2);
- N_STD(s3, OFFSET(java_doublearray, data[0]), REG_ITMP2, s1);
+ N_STD(s3, OFFSET(java_doublearray_t, data[0]), REG_ITMP2, s1);
break;
case ICMD_AASTORE: /* ..., arrayref, index, value ==> ... */
M_INTMOVE(s2, REG_ITMP2);
M_SLL_IMM(2, REG_ITMP2);
- N_ST(s3, OFFSET(java_objectarray, data[0]), REG_ITMP2, s1);
+ N_ST(s3, OFFSET(java_objectarray_t, data[0]), REG_ITMP2, s1);
/*
M_SAADDQ(s2, s1, REG_ITMP1); itmp1 := 4 * s2 + s1
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: emit.c 8304 2007-08-14 19:57:20Z pm $
+ $Id: emit.c 8318 2007-08-16 10:05:34Z michi $
*/
/* Size is s4, >= 0
* Do unsigned comparison to catch negative indexes.
*/
- N_CL(s2, OFFSET(java_arrayheader, size), RN, s1);
+ N_CL(s2, OFFSET(java_array_t, size), RN, s1);
M_BLT(SZ_BRC + SZ_ILL);
M_ILL2(s2, EXCEPTION_HARDWARE_ARRAYINDEXOUTOFBOUNDS);
}
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP2);
emit_nullpointer_check(cd, iptr, s1);
- M_ILD(d, s1, OFFSET(java_arrayheader, size));
+ M_ILD(d, s1, OFFSET(java_array_t, size));
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_AADD(s2, s1, REG_ITMP3);
- M_BLDS(d, REG_ITMP3, OFFSET(java_bytearray, data[0]));
+ M_BLDS(d, REG_ITMP3, OFFSET(java_bytearray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_AADD(s2, s1, REG_ITMP3);
M_AADD(s2, REG_ITMP3, REG_ITMP3);
- M_SLDU(d, REG_ITMP3, OFFSET(java_chararray, data[0]));
+ M_SLDU(d, REG_ITMP3, OFFSET(java_chararray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_AADD(s2, s1, REG_ITMP3);
M_AADD(s2, REG_ITMP3, REG_ITMP3);
- M_SLDS(d, REG_ITMP3, OFFSET(java_shortarray, data[0]));
+ M_SLDS(d, REG_ITMP3, OFFSET(java_shortarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ASLL_IMM(s2, 2, REG_ITMP3);
M_AADD(REG_ITMP3, s1, REG_ITMP3);
- M_ILD(d, REG_ITMP3, OFFSET(java_intarray, data[0]));
+ M_ILD(d, REG_ITMP3, OFFSET(java_intarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ASLL_IMM(s2, 3, REG_ITMP3);
M_AADD(REG_ITMP3, s1, REG_ITMP3);
- M_LDX(d, REG_ITMP3, OFFSET(java_longarray, data[0]));
+ M_LDX(d, REG_ITMP3, OFFSET(java_longarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ASLL_IMM(s2, 2, REG_ITMP3);
M_AADD(REG_ITMP3, s1, REG_ITMP3);
- M_FLD(d, REG_ITMP3, OFFSET(java_floatarray, data[0]));
+ M_FLD(d, REG_ITMP3, OFFSET(java_floatarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ASLL_IMM(s2, 3, REG_ITMP3);
M_AADD(REG_ITMP3, s1, REG_ITMP3);
- M_DLD(d, REG_ITMP3, OFFSET(java_doublearray, data[0]));
+ M_DLD(d, REG_ITMP3, OFFSET(java_doublearray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ASLL_IMM(s2, POINTERSHIFT, REG_ITMP3);
M_AADD(REG_ITMP3, s1, REG_ITMP3);
- M_ALD(d, REG_ITMP3, OFFSET(java_objectarray, data[0]));
+ M_ALD(d, REG_ITMP3, OFFSET(java_objectarray_t, data[0]));
emit_store_dst(jd, iptr, d);
break;
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_AADD(s2, s1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- M_BST(s3, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+ M_BST(s3, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
break;
case ICMD_CASTORE: /* ..., arrayref, index, value ==> ... */
M_AADD(s2, s1, REG_ITMP1);
M_AADD(s2, REG_ITMP1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- M_SST(s3, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_SST(s3, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
break;
case ICMD_IASTORE: /* ..., arrayref, index, value ==> ... */
M_ASLL_IMM(s2, 2, REG_ITMP2);
M_AADD(REG_ITMP2, s1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray, data[0]));
+ M_IST_INTERN(s3, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
break;
case ICMD_LASTORE: /* ..., arrayref, index, value ==> ... */
M_ASLL_IMM(s2, 3, REG_ITMP2);
M_AADD(REG_ITMP2, s1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- M_STX_INTERN(s3, REG_ITMP1, OFFSET(java_longarray, data[0]));
+ M_STX_INTERN(s3, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
break;
case ICMD_FASTORE: /* ..., arrayref, index, value ==> ... */
M_ASLL_IMM(s2, 2, REG_ITMP2);
M_AADD(REG_ITMP2, s1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_FTMP1);
- M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
+ M_FST_INTERN(s3, REG_ITMP1, OFFSET(java_floatarray_t, data[0]));
break;
case ICMD_DASTORE: /* ..., arrayref, index, value ==> ... */
M_ASLL_IMM(s2, 3, REG_ITMP2);
M_AADD(REG_ITMP2, s1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_FTMP1);
- M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
+ M_DST_INTERN(s3, REG_ITMP1, OFFSET(java_doublearray_t, data[0]));
break;
M_AADD(REG_ITMP2, s1, REG_ITMP1);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
- M_AST_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+ M_AST_INTERN(s3, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_AADD(s2, s1, REG_ITMP1);
- M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray, data[0]));
+ M_BST(REG_ZERO, REG_ITMP1, OFFSET(java_bytearray_t, data[0]));
break;
case ICMD_CASTORECONST: /* ..., arrayref, index ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_AADD(s2, s1, REG_ITMP1);
M_AADD(s2, REG_ITMP1, REG_ITMP1);
- M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray, data[0]));
+ M_SST(REG_ZERO, REG_ITMP1, OFFSET(java_chararray_t, data[0]));
break;
case ICMD_IASTORECONST: /* ..., arrayref, index ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ASLL_IMM(s2, 2, REG_ITMP2);
M_AADD(REG_ITMP2, s1, REG_ITMP1);
- M_IST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_intarray, data[0]));
+ M_IST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_intarray_t, data[0]));
break;
case ICMD_LASTORECONST: /* ..., arrayref, index ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ASLL_IMM(s2, 3, REG_ITMP2);
M_AADD(REG_ITMP2, s1, REG_ITMP1);
- M_STX_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_longarray, data[0]));
+ M_STX_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_longarray_t, data[0]));
break;
case ICMD_AASTORECONST: /* ..., arrayref, index ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
M_ASLL_IMM(s2, POINTERSHIFT, REG_ITMP2);
M_AADD(REG_ITMP2, s1, REG_ITMP1);
- M_AST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray, data[0]));
+ M_AST_INTERN(REG_ZERO, REG_ITMP1, OFFSET(java_objectarray_t, data[0]));
break;
void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
{
if (INSTRUCTION_MUST_CHECK(iptr)) {
- M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+ M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
M_CMP(s2, REG_ITMP3);
M_XBULT(3);
M_NOP;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: stacktrace.c 8295 2007-08-11 17:57:24Z michi $
+ $Id: stacktrace.c 8318 2007-08-16 10:05:34Z michi $
*/
*******************************************************************************/
-java_objectarray *stacktrace_getClassContext(void)
+java_handle_objectarray_t *stacktrace_getClassContext(void)
{
- stacktracebuffer *stb;
- stacktrace_entry *ste;
- java_objectarray *oa;
- s4 oalength;
- s4 i;
- s4 dumpsize;
+ stacktracebuffer *stb;
+ stacktrace_entry *ste;
+ java_handle_objectarray_t *oa;
+ s4 oalength;
+ s4 i;
+ s4 dumpsize;
CYCLES_STATS_DECLARE_AND_START
/* mark start of dump memory area */
*******************************************************************************/
#if defined(ENABLE_JAVASE)
-java_objectarray *stacktrace_getStack(void)
+java_handle_objectarray_t *stacktrace_getStack(void)
{
- stacktracebuffer *stb;
- stacktrace_entry *ste;
- java_objectarray *oa;
- java_objectarray *classes;
- java_objectarray *methodnames;
- classinfo *c;
- java_handle_t *string;
- s4 i;
- s4 dumpsize;
+ stacktracebuffer *stb;
+ stacktrace_entry *ste;
+ java_handle_objectarray_t *oa;
+ java_handle_objectarray_t *classes;
+ java_handle_objectarray_t *methodnames;
+ classinfo *c;
+ java_handle_t *string;
+ s4 i;
+ s4 dumpsize;
CYCLES_STATS_DECLARE_AND_START
/* mark start of dump memory area */
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: stacktrace.h 8295 2007-08-11 17:57:24Z michi $
+ $Id: stacktrace.h 8318 2007-08-16 10:05:34Z michi $
*/
*******************************************************************************/
typedef struct stacktracecontainer {
- java_arrayheader header; /* default array header for the GC */
+ java_array_t header; /* default array header for the GC */
struct stacktracebuffer stb; /* let entries point to data below */
stacktrace_entry data[1]; /* the actual array of entries */
} stacktracecontainer;
stacktracecontainer *stacktrace_fillInStackTrace(void);
#if defined(ENABLE_JAVASE)
-java_objectarray *stacktrace_getClassContext(void);
-classinfo *stacktrace_getCurrentClass(void);
-java_objectarray *stacktrace_getStack(void);
+java_handle_objectarray_t *stacktrace_getClassContext(void);
+classinfo *stacktrace_getCurrentClass(void);
+java_handle_objectarray_t *stacktrace_getStack(void);
#endif
void stacktrace_print_trace_from_buffer(stacktracebuffer *stb);
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: codegen.c 8297 2007-08-12 00:02:48Z michi $
+ $Id: codegen.c 8318 2007-08-16 10:05:34Z michi $
*/
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
- M_ILD(d, s1, OFFSET(java_arrayheader, size));
+ M_ILD(d, s1, OFFSET(java_array_t, size));
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movsbq_memindex_reg(cd, OFFSET(java_bytearray, data[0]), s1, s2, 0, d);
+ emit_movsbq_memindex_reg(cd, OFFSET(java_bytearray_t, data[0]), s1, s2, 0, d);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movzwq_memindex_reg(cd, OFFSET(java_chararray, data[0]), s1, s2, 1, d);
+ emit_movzwq_memindex_reg(cd, OFFSET(java_chararray_t, data[0]), s1, s2, 1, d);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movswq_memindex_reg(cd, OFFSET(java_shortarray, data[0]), s1, s2, 1, d);
+ emit_movswq_memindex_reg(cd, OFFSET(java_shortarray_t, data[0]), s1, s2, 1, d);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movl_memindex_reg(cd, OFFSET(java_intarray, data[0]), s1, s2, 2, d);
+ emit_movl_memindex_reg(cd, OFFSET(java_intarray_t, data[0]), s1, s2, 2, d);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_mov_memindex_reg(cd, OFFSET(java_longarray, data[0]), s1, s2, 3, d);
+ emit_mov_memindex_reg(cd, OFFSET(java_longarray_t, data[0]), s1, s2, 3, d);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_FTMP3);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movss_memindex_reg(cd, OFFSET(java_floatarray, data[0]), s1, s2, 2, d);
+ emit_movss_memindex_reg(cd, OFFSET(java_floatarray_t, data[0]), s1, s2, 2, d);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_FTMP3);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movsd_memindex_reg(cd, OFFSET(java_doublearray, data[0]), s1, s2, 3, d);
+ emit_movsd_memindex_reg(cd, OFFSET(java_doublearray_t, data[0]), s1, s2, 3, d);
emit_store_dst(jd, iptr, d);
break;
d = codegen_reg_of_dst(jd, iptr, REG_ITMP3);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_mov_memindex_reg(cd, OFFSET(java_objectarray, data[0]), s1, s2, 3, d);
+ emit_mov_memindex_reg(cd, OFFSET(java_objectarray_t, data[0]), s1, s2, 3, d);
emit_store_dst(jd, iptr, d);
break;
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- emit_movb_reg_memindex(cd, s3, OFFSET(java_bytearray, data[0]), s1, s2, 0);
+ emit_movb_reg_memindex(cd, s3, OFFSET(java_bytearray_t, data[0]), s1, s2, 0);
break;
case ICMD_CASTORE: /* ..., arrayref, index, value ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- emit_movw_reg_memindex(cd, s3, OFFSET(java_chararray, data[0]), s1, s2, 1);
+ emit_movw_reg_memindex(cd, s3, OFFSET(java_chararray_t, data[0]), s1, s2, 1);
break;
case ICMD_SASTORE: /* ..., arrayref, index, value ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- emit_movw_reg_memindex(cd, s3, OFFSET(java_shortarray, data[0]), s1, s2, 1);
+ emit_movw_reg_memindex(cd, s3, OFFSET(java_shortarray_t, data[0]), s1, s2, 1);
break;
case ICMD_IASTORE: /* ..., arrayref, index, value ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- emit_movl_reg_memindex(cd, s3, OFFSET(java_intarray, data[0]), s1, s2, 2);
+ emit_movl_reg_memindex(cd, s3, OFFSET(java_intarray_t, data[0]), s1, s2, 2);
break;
case ICMD_LASTORE: /* ..., arrayref, index, value ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- emit_mov_reg_memindex(cd, s3, OFFSET(java_longarray, data[0]), s1, s2, 3);
+ emit_mov_reg_memindex(cd, s3, OFFSET(java_longarray_t, data[0]), s1, s2, 3);
break;
case ICMD_FASTORE: /* ..., arrayref, index, value ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_FTMP3);
- emit_movss_reg_memindex(cd, s3, OFFSET(java_floatarray, data[0]), s1, s2, 2);
+ emit_movss_reg_memindex(cd, s3, OFFSET(java_floatarray_t, data[0]), s1, s2, 2);
break;
case ICMD_DASTORE: /* ..., arrayref, index, value ==> ... */
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
s3 = emit_load_s3(jd, iptr, REG_FTMP3);
- emit_movsd_reg_memindex(cd, s3, OFFSET(java_doublearray, data[0]), s1, s2, 3);
+ emit_movsd_reg_memindex(cd, s3, OFFSET(java_doublearray_t, data[0]), s1, s2, 3);
break;
case ICMD_AASTORE: /* ..., arrayref, index, value ==> ... */
s1 = emit_load_s1(jd, iptr, REG_ITMP1);
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
s3 = emit_load_s3(jd, iptr, REG_ITMP3);
- emit_mov_reg_memindex(cd, s3, OFFSET(java_objectarray, data[0]), s1, s2, 3);
+ emit_mov_reg_memindex(cd, s3, OFFSET(java_objectarray_t, data[0]), s1, s2, 3);
break;
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movb_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_bytearray, data[0]), s1, s2, 0);
+ emit_movb_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_bytearray_t, data[0]), s1, s2, 0);
break;
case ICMD_CASTORECONST: /* ..., arrayref, index ==> ... */
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_chararray, data[0]), s1, s2, 1);
+ emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_chararray_t, data[0]), s1, s2, 1);
break;
case ICMD_SASTORECONST: /* ..., arrayref, index ==> ... */
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_shortarray, data[0]), s1, s2, 1);
+ emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_shortarray_t, data[0]), s1, s2, 1);
break;
case ICMD_IASTORECONST: /* ..., arrayref, index ==> ... */
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_movl_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_intarray, data[0]), s1, s2, 2);
+ emit_movl_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_intarray_t, data[0]), s1, s2, 2);
break;
case ICMD_LASTORECONST: /* ..., arrayref, index ==> ... */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
if (IS_IMM32(iptr->sx.s23.s3.constval)) {
- emit_mov_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval & 0x00000000ffffffff), OFFSET(java_longarray, data[0]), s1, s2, 3);
+ emit_mov_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval & 0x00000000ffffffff), OFFSET(java_longarray_t, data[0]), s1, s2, 3);
}
else {
- emit_movl_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval & 0x00000000ffffffff), OFFSET(java_longarray, data[0]), s1, s2, 3);
- emit_movl_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval >> 32), OFFSET(java_longarray, data[0]) + 4, s1, s2, 3);
+ emit_movl_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval & 0x00000000ffffffff), OFFSET(java_longarray_t, data[0]), s1, s2, 3);
+ emit_movl_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval >> 32), OFFSET(java_longarray_t, data[0]) + 4, s1, s2, 3);
}
break;
s2 = emit_load_s2(jd, iptr, REG_ITMP2);
/* implicit null-pointer check */
emit_arrayindexoutofbounds_check(cd, iptr, s1, s2);
- emit_mov_imm_memindex(cd, 0, OFFSET(java_objectarray, data[0]), s1, s2, 3);
+ emit_mov_imm_memindex(cd, 0, OFFSET(java_objectarray_t, data[0]), s1, s2, 3);
break;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: emit.c 8267 2007-08-07 11:07:48Z twisti $
+ $Id: emit.c 8318 2007-08-16 10:05:34Z michi $
*/
void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
{
if (INSTRUCTION_MUST_CHECK(iptr)) {
- M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));
+ M_ILD(REG_ITMP3, s1, OFFSET(java_array_t, size));
M_ICMP(REG_ITMP3, s2);
M_BULT(8);
M_ALD_MEM(s2, EXCEPTION_HARDWARE_ARRAYINDEXOUTOFBOUNDS);
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: string.c 8295 2007-08-11 17:57:24Z michi $
+ $Id: string.c 8318 2007-08-16 10:05:34Z michi $
*/
void stringtable_update(void)
{
- java_lang_String *js;
- java_chararray *a;
- literalstring *s; /* hashtable entry */
+ java_lang_String *js;
+ java_chararray_t *a;
+ literalstring *s; /* hashtable entry */
int i;
for (i = 0; i < hashtable_string.size; i++) {
u4 utflength; /* length of utf-string if uncompressed */
java_handle_t *o;
java_lang_String *s; /* result-string */
- java_chararray *a;
+ java_handle_chararray_t *a;
u4 i;
assert(buffer);
utf_ptr = buffer;
for (i = 0; i < utflength; i++)
- a->data[i] = utf_nextu2((char **) &utf_ptr);
+ LLNI_array_direct(a, i) = utf_nextu2((char **) &utf_ptr);
/* set fields of the javastring-object */
java_handle_t *javastring_safe_new_from_utf8(const char *text)
{
- java_handle_t *o;
- java_chararray *a;
- java_lang_String *s;
+ java_handle_t *o;
+ java_handle_chararray_t *a;
+ java_lang_String *s;
s4 nbytes;
s4 len;
{
char *utf_ptr; /* current utf character in utf string */
u4 utflength; /* length of utf-string if uncompressed */
- java_handle_t *o;
- java_chararray *a;
- java_lang_String *s;
+ java_handle_t *o;
+ java_handle_chararray_t *a;
+ java_lang_String *s;
s4 i;
if (u == NULL) {
/* decompress utf-string */
for (i = 0; i < utflength; i++)
- a->data[i] = utf_nextu2(&utf_ptr);
+ LLNI_array_direct(a, i) = utf_nextu2(&utf_ptr);
/* set fields of the javastring-object */
{
char *utf_ptr; /* current utf character in utf string */
u4 utflength; /* length of utf-string if uncompressed */
- java_handle_t *o;
- java_chararray *a;
- java_lang_String *s;
+ java_handle_t *o;
+ java_handle_chararray_t *a;
+ java_lang_String *s;
s4 i;
u2 ch;
ch = utf_nextu2(&utf_ptr);
if (ch == '/')
ch = '.';
- a->data[i] = ch;
+ LLNI_array_direct(a, i) = ch;
}
/* set fields of the javastring-object */
{
s4 i;
s4 len; /* length of the string */
- java_handle_t *o;
- java_lang_String *s;
- java_chararray *a;
+ java_handle_t *o;
+ java_lang_String *s;
+ java_handle_chararray_t *a;
if (text == NULL) {
exceptions_throw_nullpointerexception();
/* copy text */
for (i = 0; i < len; i++)
- a->data[i] = text[i];
+ LLNI_array_direct(a, i) = text[i];
/* set fields of the javastring-object */
char *javastring_tochar(java_handle_t *so)
{
- java_lang_String *s = (java_lang_String *) so;
- java_chararray *a;
+ java_lang_String *s = (java_lang_String *) so;
+ java_handle_chararray_t *a;
char *buf;
s4 i;
*******************************************************************************/
-java_object_t *literalstring_u2(java_chararray *a, u4 length, u4 offset,
- bool copymode)
+java_object_t *literalstring_u2(java_chararray_t *a, u4 length, u4 offset,
+ bool copymode)
{
literalstring *s; /* hashtable element */
java_lang_String *js; /* u2-array wrapped in javastring */
- java_chararray *ca; /* copy of u2-array */
+ java_chararray_t *ca; /* copy of u2-array */
u4 key;
u4 slot;
u2 i;
/* string already in hashtable, free memory */
if (!copymode)
- mem_free(a, sizeof(java_chararray) + sizeof(u2) * (length - 1) + 10);
+ mem_free(a, sizeof(java_chararray_t) + sizeof(u2) * (length - 1) + 10);
LOCK_MONITOR_EXIT(lock_hashtable_string);
if (copymode) {
/* create copy of u2-array for new javastring */
- u4 arraysize = sizeof(java_chararray) + sizeof(u2) * (length - 1) + 10;
+ u4 arraysize = sizeof(java_chararray_t) + sizeof(u2) * (length - 1) + 10;
ca = mem_alloc(arraysize);
/* memcpy(ca, a, arraysize); */
- memcpy(&(ca->header), &(a->header), sizeof(java_arrayheader));
+ memcpy(&(ca->header), &(a->header), sizeof(java_array_t));
memcpy(&(ca->data), &(a->data) + offset, sizeof(u2) * (length - 1) + 10);
} else {
java_object_t *literalstring_new(utf *u)
{
- char *utf_ptr; /* pointer to current unicode character */
+ char *utf_ptr; /* pointer to current unicode character */
/* utf string */
- u4 utflength; /* length of utf-string if uncompressed */
- java_chararray *a; /* u2-array constructed from utf string */
- u4 i;
+ u4 utflength; /* length of utf-string if uncompressed */
+ java_chararray_t *a; /* u2-array constructed from utf string */
+ u4 i;
utf_ptr = u->text;
utflength = utf_get_number_of_u2s(u);
/* allocate memory */
- a = mem_alloc(sizeof(java_chararray) + sizeof(u2) * (utflength - 1) + 10);
+ a = mem_alloc(sizeof(java_chararray_t) + sizeof(u2) * (utflength - 1) + 10);
/* convert utf-string to u2-array */
for (i = 0; i < utflength; i++)
void literalstring_free(java_object_t* string)
{
java_lang_String *s;
- java_chararray *a;
+ java_chararray_t *a;
s = (java_lang_String *) string;
a = s->value;
FREE(s, java_lang_String);
/* dispose memory of java-characterarray */
- FREE(a, sizeof(java_chararray) + sizeof(u2) * (a->header.size - 1)); /* +10 ?? */
+ FREE(a, sizeof(java_chararray_t) + sizeof(u2) * (a->header.size - 1)); /* +10 ?? */
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: stringlocal.h 8295 2007-08-11 17:57:24Z michi $
+ $Id: stringlocal.h 8318 2007-08-16 10:05:34Z michi $
*/
utf *javastring_toutf(java_handle_t *string, bool isclassname);
/* creates a new javastring with the text of the u2-array */
-java_object_t *literalstring_u2(java_chararray *a, u4 length, u4 offset,
- bool copymode);
+java_object_t *literalstring_u2(java_chararray_t *a, u4 length, u4 offset,
+ bool copymode);
/* creates a new javastring with the text of the utf-symbol */
java_object_t *literalstring_new(utf *u);
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: vm.c 8297 2007-08-12 00:02:48Z michi $
+ $Id: vm.c 8318 2007-08-16 10:05:34Z michi $
*/
void vm_run(JavaVM *vm, JavaVMInitArgs *vm_args)
{
- utf *mainutf;
- classinfo *mainclass;
- java_handle_t *e;
- methodinfo *m;
- java_objectarray *oa;
- s4 oalength;
- utf *u;
- java_handle_t *s;
- s4 status;
- s4 i;
+ utf *mainutf;
+ classinfo *mainclass;
+ java_handle_t *e;
+ methodinfo *m;
+ java_handle_objectarray_t *oa;
+ s4 oalength;
+ utf *u;
+ java_handle_t *s;
+ s4 status;
+ s4 i;
#if !defined(NDEBUG)
if (compileall) {
u = utf_new_char(vm_args->options[opt_index + i].optionString);
s = javastring_new(u);
- oa->data[i] = s;
+ LLNI_objectarray_element_set(oa, i, s);
}
#ifdef TYPEINFO_DEBUG_TEST
*******************************************************************************/
uint64_t *vm_array_from_objectarray(methodinfo *m, java_object_t *o,
- java_objectarray *params)
+ java_handle_objectarray_t *params)
{
methoddesc *md;
paramdesc *pd;
typedesc *td;
uint64_t *array;
- java_object_t *param;
+ java_handle_t *param;
classinfo *c;
int32_t i;
int32_t j;
}
for (j = 0; i < md->paramcount; i++, j++, pd++, td++) {
- param = params->data[j];
+ LLNI_objectarray_element_get(params, j, param);
switch (td->type) {
case TYPE_INT:
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: vm.h 8295 2007-08-11 17:57:24Z michi $
+ $Id: vm.h 8318 2007-08-16 10:05:34Z michi $
*/
/* Java method calling functions */
uint64_t *vm_array_from_objectarray(methodinfo *m, java_handle_t *o,
- java_objectarray *params);
+ java_handle_objectarray_t *params);
java_handle_t *vm_call_method(methodinfo *m, java_handle_t *o, ...);
java_handle_t *vm_call_method_valist(methodinfo *m, java_handle_t *o,
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: class.c 8309 2007-08-15 16:42:52Z twisti $
+ $Id: class.c 8318 2007-08-16 10:05:34Z michi $
*/
#include "mm/memory.h"
+#include "native/llni.h"
+
#include "threads/lock-common.h"
#include "toolbox/logging.h"
*******************************************************************************/
-java_objectarray *class_get_declaredclasses(classinfo *c, bool publicOnly)
+java_handle_objectarray_t *class_get_declaredclasses(classinfo *c, bool publicOnly)
{
classref_or_classinfo inner;
classref_or_classinfo outer;
utf *outername;
int declaredclasscount; /* number of declared classes */
int pos; /* current declared class */
- java_objectarray *oa; /* array of declared classes */
+ java_handle_objectarray_t *oa; /* array of declared classes */
int i;
classinfo *ic;
if (!link_class(ic))
return NULL;
- oa->data[pos++] = (java_object_t *) ic;
+ LLNI_array_direct(oa, pos++) = (java_object_t *) ic;
}
}
*******************************************************************************/
-java_objectarray *class_get_interfaces(classinfo *c)
+java_handle_objectarray_t *class_get_interfaces(classinfo *c)
{
- classinfo *ic;
- java_objectarray *oa;
- u4 i;
+ classinfo *ic;
+ java_handle_objectarray_t *oa;
+ u4 i;
if (!(c->state & CLASS_LINKED))
if (!link_class(c))
for (i = 0; i < c->interfacescount; i++) {
ic = c->interfaces[i].cls;
- oa->data[i] = (java_object_t *) ic;
+ LLNI_array_direct(oa, i) = (java_object_t *) ic;
}
return oa;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: class.h 8309 2007-08-15 16:42:52Z twisti $
+ $Id: class.h 8318 2007-08-16 10:05:34Z michi $
*/
bool class_is_array(classinfo *c);
bool class_is_interface(classinfo *c);
-classinfo *class_get_superclass(classinfo *c);
-java_objectarray *class_get_declaredclasses(classinfo *c, bool publicOnly);
-classinfo *class_get_declaringclass(classinfo *c);
-java_objectarray *class_get_interfaces(classinfo *c);
+classinfo *class_get_superclass(classinfo *c);
+java_handle_objectarray_t *class_get_declaredclasses(classinfo *c, bool publicOnly);
+classinfo *class_get_declaringclass(classinfo *c);
+java_handle_objectarray_t *class_get_interfaces(classinfo *c);
#if defined(ENABLE_JAVASE)
utf *class_get_signature(classinfo *c);
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: linker.c 8295 2007-08-11 17:57:24Z michi $
+ $Id: linker.c 8318 2007-08-16 10:05:34Z michi $
*/
/* c is an array of references */
desc->arraytype = ARRAYTYPE_OBJECT;
desc->componentsize = sizeof(void*);
- desc->dataoffset = OFFSET(java_objectarray, data);
+ desc->dataoffset = OFFSET(java_objectarray_t, data);
compvftbl = comp->vftbl;
switch (c->name->text[1]) {
case 'Z':
desc->arraytype = ARRAYTYPE_BOOLEAN;
- desc->dataoffset = OFFSET(java_booleanarray,data);
+ desc->dataoffset = OFFSET(java_booleanarray_t,data);
desc->componentsize = sizeof(u1);
break;
case 'B':
desc->arraytype = ARRAYTYPE_BYTE;
- desc->dataoffset = OFFSET(java_bytearray,data);
+ desc->dataoffset = OFFSET(java_bytearray_t,data);
desc->componentsize = sizeof(u1);
break;
case 'C':
desc->arraytype = ARRAYTYPE_CHAR;
- desc->dataoffset = OFFSET(java_chararray,data);
+ desc->dataoffset = OFFSET(java_chararray_t,data);
desc->componentsize = sizeof(u2);
break;
case 'D':
desc->arraytype = ARRAYTYPE_DOUBLE;
- desc->dataoffset = OFFSET(java_doublearray,data);
+ desc->dataoffset = OFFSET(java_doublearray_t,data);
desc->componentsize = sizeof(double);
break;
case 'F':
desc->arraytype = ARRAYTYPE_FLOAT;
- desc->dataoffset = OFFSET(java_floatarray,data);
+ desc->dataoffset = OFFSET(java_floatarray_t,data);
desc->componentsize = sizeof(float);
break;
case 'I':
desc->arraytype = ARRAYTYPE_INT;
- desc->dataoffset = OFFSET(java_intarray,data);
+ desc->dataoffset = OFFSET(java_intarray_t,data);
desc->componentsize = sizeof(s4);
break;
case 'J':
desc->arraytype = ARRAYTYPE_LONG;
- desc->dataoffset = OFFSET(java_longarray,data);
+ desc->dataoffset = OFFSET(java_longarray_t,data);
desc->componentsize = sizeof(s8);
break;
case 'S':
desc->arraytype = ARRAYTYPE_SHORT;
- desc->dataoffset = OFFSET(java_shortarray,data);
+ desc->dataoffset = OFFSET(java_shortarray_t,data);
desc->componentsize = sizeof(s2);
break;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: method.c 8315 2007-08-15 22:49:20Z panzi $
+ $Id: method.c 8318 2007-08-16 10:05:34Z michi $
*/
#include "mm/memory.h"
+#include "native/llni.h"
+
#include "threads/lock-common.h"
#include "vm/builtin.h"
*******************************************************************************/
-java_objectarray *method_get_parametertypearray(methodinfo *m)
+java_handle_objectarray_t *method_get_parametertypearray(methodinfo *m)
{
- methoddesc *md;
- typedesc *paramtypes;
- int32_t paramcount;
- java_objectarray *oa;
- int32_t i;
- classinfo *c;
+ methoddesc *md;
+ typedesc *paramtypes;
+ int32_t paramcount;
+ java_handle_objectarray_t *oa;
+ int32_t i;
+ classinfo *c;
md = m->parseddesc;
if (!resolve_class_from_typedesc(¶mtypes[i], true, false, &c))
return NULL;
- oa->data[i] = c;
+ LLNI_array_direct(oa, i) = (java_object_t *) c;
}
return oa;
*******************************************************************************/
-java_objectarray *method_get_exceptionarray(methodinfo *m)
+java_handle_objectarray_t *method_get_exceptionarray(methodinfo *m)
{
- java_objectarray *oa;
- classinfo *c;
- s4 i;
+ java_handle_objectarray_t *oa;
+ classinfo *c;
+ s4 i;
/* create class-array */
if (c == NULL)
return NULL;
- oa->data[i] = c;
+ LLNI_array_direct(oa, i) = (java_object_t *) c;
}
return oa;
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: method.h 8315 2007-08-15 22:49:20Z panzi $
+ $Id: method.h 8318 2007-08-16 10:05:34Z michi $
*/
methodinfo *method_vftbl_lookup(vftbl_t *vftbl, methodinfo* m);
-int32_t method_get_parametercount(methodinfo *m);
-java_objectarray *method_get_parametertypearray(methodinfo *m);
-java_objectarray *method_get_exceptionarray(methodinfo *m);
-classinfo *method_returntype_get(methodinfo *m);
+int32_t method_get_parametercount(methodinfo *m);
+java_handle_objectarray_t *method_get_parametertypearray(methodinfo *m);
+java_handle_objectarray_t *method_get_exceptionarray(methodinfo *m);
+classinfo *method_returntype_get(methodinfo *m);
void method_add_assumption_monomorphic(methodinfo *m, methodinfo *caller);
void method_break_assumption_monomorphic(methodinfo *m, method_worklist **wl);