summaryrefslogtreecommitdiffstats
path: root/libjava/interpret.cc
diff options
context:
space:
mode:
authorgreen <green@138bc75d-0d04-0410-961f-82ee72b054a4>1999-08-10 05:32:23 +0000
committergreen <green@138bc75d-0d04-0410-961f-82ee72b054a4>1999-08-10 05:32:23 +0000
commitdc9f8d59effacbdd8d1193cf000393dd8561206b (patch)
tree9c08b881a7b585b2167568feb299be46b2919659 /libjava/interpret.cc
parent7ce928ee23a784a5aeea6324e26f990e5da02a0c (diff)
downloadppe42-gcc-dc9f8d59effacbdd8d1193cf000393dd8561206b.tar.gz
ppe42-gcc-dc9f8d59effacbdd8d1193cf000393dd8561206b.zip
Mon Aug 9 18:33:38 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* Makefile: Rebuilt. * Makefile.am (toolexeclibdir): Add $(MULTISUBDIR) even for native builds. * java/net/natPlainSocketImpl.cc: Include <sys/select.h> only if present. * configure: Rebuilt. * configure.in: Properly align --help output, fix capitalization and punctuation. * acinclude.m4: Likewise. 1999-08-09 Kresten Krab Thorup <krab@gnu.org> * include/javaprims.h (_Jv_word, _Jv_word2): New types. * include/java-interp.h (_Jv_InterpMethodInvocation): Use _Jv_word. (_Jv_callInterpretedMethod): Unused. Remove. (_Jv_InterpMethod::run,run_normal,run_synch_object,run_synch_class): Use ffi_raw. * include/java-cpool.h (_Jv_get, _Jv_put): Remove. (_Jv_{store,load}{Indexes,Int,Float,Long,Double}): Use _Jv_word. * boehm.cc (_Jv_MarkObj): Use _Jv_word. * interpret.cc: use _Jv_word. * defineclass.cc: use_Jv_word. * resolve.cc: Use _Jv_word. (_Jv_ResolvePoolEntry): Return _Jv_word. * java/lang/Class.h (_Jv_Constants): Use _Jv_word for cpool. * java/lang/natClassLoader.cc (_Jv_InternClassStrings): Use _Jv_word. * interpret.cc (gnu::gcj::runtime::MethodInvocation::continue1): Change comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28641 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/interpret.cc')
-rw-r--r--libjava/interpret.cc169
1 files changed, 84 insertions, 85 deletions
diff --git a/libjava/interpret.cc b/libjava/interpret.cc
index 1b9b8006da7..6ca6f0da606 100644
--- a/libjava/interpret.cc
+++ b/libjava/interpret.cc
@@ -47,7 +47,7 @@ details. */
#include <gnu/gcj/runtime/MethodInvocation.h>
-/* this is the exception handler hack, for the interpreter */
+/* This should never happen. */
void
gnu::gcj::runtime::MethodInvocation::continue1 (gnu::gcj::RawData *,
gnu::gcj::RawData *)
@@ -89,7 +89,7 @@ static void throw_arithmetic_exception ()
#endif
-static inline void dupx (void **&sp, int n, int x)
+static inline void dupx (_Jv_word *&sp, int n, int x)
{
// first "slide" n+x elements n to the right
int top = n-1;
@@ -110,36 +110,43 @@ static inline void dupx (void **&sp, int n, int x)
#define PUSHA(V) \
- ({ jobject __v=(V); *(jobject*)sp++ = __v; })
+ ({ jobject __v=(V); (sp++)->o = __v; })
#define PUSHI(V) \
- ({ jint __v=(V); *(jint*)sp++ = __v; })
+ ({ jint __v=(V); (sp++)->i = __v; })
#define PUSHF(V) \
- ({ jfloat __v=(V); *(jfloat*)sp++ = __v; })
+ ({ jfloat __v=(V); (sp++)->f = __v; })
#define PUSHL(V) \
- ({ jlong __v=(V); memcpy ((void*)sp, (void*)&__v, 8); sp+=2; })
+ ({ jlong __v=(V); _Jv_storeLong(sp,__v); sp+=2; })
#define PUSHD(V) \
- ({ jdouble __v=(V); memcpy ((void*)sp, (void*)&__v, 8); sp+=2; })
-
-#define POPA() (*(jobject*)--sp)
-#define POPI() (*(jint*)--sp)
-#define POPF() (*(jfloat*)--sp)
-#define POPL() ({ jlong __r; sp-=2; memcpy ((void*)&__r, sp, 8); __r; })
-#define POPD() ({ jdouble __r; sp-=2; memcpy ((void*)&__r, sp, 8); __r; })
-
-#define LOADA(I) *sp++ = locals[I]
-#define LOADI(I) *sp++ = locals[I]
-#define LOADF(I) *sp++ = locals[I]
-#define LOADL(I) ({ memcpy (sp, locals+(I), 8); sp+=2; })
-#define LOADD(I) ({ memcpy (sp, locals+(I), 8); sp+=2; })
-
-#define STOREA(I) locals[I] = *--sp
-#define STOREI(I) locals[I] = *--sp
-#define STOREF(I) locals[I] = *--sp
-#define STOREL(I) ({ sp-=2; memcpy (locals+(I), sp, 8); })
-#define STORED(I) ({ sp-=2; memcpy (locals+(I), sp, 8); })
-
-#define PEEKI(I) (*(jint*) (locals+(I)))
-#define PEEKA(I) (*(jobject*) (locals+(I)))
+ ({ jdouble __v=(V); _Jv_storeDouble(sp,__v); sp+=2; })
+
+#define POPA() ((--sp)->o)
+#define POPI() ((jint) (--sp)->i) // cast since it may be promoted
+#define POPF() ((jfloat) (--sp)->f)
+#define POPL() ({ sp-=2; _Jv_loadLong (sp); })
+#define POPD() ({ sp-=2; _Jv_loadDouble (sp); })
+
+#define LOADA(I) (sp++)->o = locals[I].o
+#define LOADI(I) (sp++)->i = locals[I].i
+#define LOADF(I) (sp++)->f = locals[I].f
+#define LOADL(I) ({ jint __idx = (I); \
+ (sp++)->ia[0] = locals[__idx].ia[0]; \
+ (sp++)->ia[0] = locals[__idx+1].ia[0]; \
+ })
+#define LOADD(I) LOADL(I)
+
+
+#define STOREA(I) locals[I].o = (--sp)->o
+#define STOREI(I) locals[I].i = (--sp)->i
+#define STOREF(I) locals[I].f = (--sp)->f
+#define STOREL(I) ({ jint __idx = (I); \
+ locals[__idx+1].ia[0] = (--sp)->ia[0]; \
+ locals[__idx].ia[0] = (--sp)->ia[0]; \
+ })
+#define STORED(I) STOREL(I)
+
+#define PEEKI(I) (locals+(I))->i
+#define PEEKA(I) (locals+(I))->o
#define POKEI(I,V) (*(jint*) (locals+(I)) = (V))
@@ -215,16 +222,16 @@ static jint get4(unsigned char* loc) {
inline jobject
_Jv_InterpMethod::run (ffi_cif* cif,
void *retp,
- void**args,
+ ffi_raw *args,
_Jv_InterpMethodInvocation *inv)
{
inv->running = this;
inv->pc = bytecode ();
inv->sp = inv->stack_base ();
- void **locals = inv->local_base ();
+ _Jv_word *locals = inv->local_base ();
/* Go straight at it! the ffi raw format matches the internal
- stack representation exactly!
+ stack representation exactly. At leat, that's the idea.
*/
memcpy ((void*) locals, (void*) args, args_raw_size);
@@ -237,7 +244,7 @@ _Jv_InterpMethod::run (ffi_cif* cif,
if (ex == 0) // no exception...
{
/* define sp locally, so the POP? macros will pick it up */
- void **sp = (void**)inv->sp;
+ _Jv_word *sp = inv->sp;
int rtype = cif->rtype->type;
if (rtype == FFI_TYPE_POINTER)
@@ -320,9 +327,8 @@ bool _Jv_InterpMethod::find_exception (jobject ex,
jclass handler;
if (exc[i].handler_type != 0)
- handler = (jclass)
- _Jv_ResolvePoolEntry (defining_class,
- exc[i].handler_type);
+ handler = (_Jv_ResolvePoolEntry (defining_class,
+ exc[i].handler_type)).clazz;
else
handler = NULL;
@@ -330,7 +336,7 @@ bool _Jv_InterpMethod::find_exception (jobject ex,
{
inv->pc = bytecode () + exc[i].handler_pc;
inv->sp = inv->stack_base (); // reset stack
- *(jobject*) (inv->sp ++) = ex;
+ (inv->sp++)->o = ex; // push exception
return true;
}
}
@@ -340,7 +346,7 @@ bool _Jv_InterpMethod::find_exception (jobject ex,
void _Jv_InterpMethod::run_normal (ffi_cif* cif,
void* ret,
- void** args,
+ ffi_raw * args,
void* __this)
{
_Jv_InterpMethod* _this = (_Jv_InterpMethod*)__this;
@@ -350,7 +356,7 @@ void _Jv_InterpMethod::run_normal (ffi_cif* cif,
int storage_size = _this->max_stack+_this->max_locals;
_Jv_InterpMethodInvocation* inv = (_Jv_InterpMethodInvocation*)
alloca (sizeof (_Jv_InterpMethodInvocation)
- + storage_size * sizeof (void*));
+ + storage_size * sizeof (_Jv_word));
jobject ex = _this->run (cif, ret, args, inv);
if (ex != 0) _Jv_Throw (ex);
@@ -358,16 +364,16 @@ void _Jv_InterpMethod::run_normal (ffi_cif* cif,
void _Jv_InterpMethod::run_synch_object (ffi_cif* cif,
void* ret,
- void** args,
+ ffi_raw * args,
void* __this)
{
_Jv_InterpMethod* _this = (_Jv_InterpMethod*)__this;
- jobject rcv = (jobject)args[0];
+ jobject rcv = (jobject)args[0].ptr;
int storage_size = _this->max_stack+_this->max_locals;
_Jv_InterpMethodInvocation* inv = (_Jv_InterpMethodInvocation*)
alloca (sizeof (_Jv_InterpMethodInvocation)
- + storage_size * sizeof (void*));
+ + storage_size * sizeof (_Jv_word));
_Jv_MonitorEnter (rcv);
jobject ex = _this->run (cif, ret, args, inv);
@@ -378,7 +384,7 @@ void _Jv_InterpMethod::run_synch_object (ffi_cif* cif,
void _Jv_InterpMethod::run_synch_class (ffi_cif* cif,
void* ret,
- void** args,
+ ffi_raw * args,
void* __this)
{
_Jv_InterpMethod* _this = (_Jv_InterpMethod*)__this;
@@ -387,7 +393,7 @@ void _Jv_InterpMethod::run_synch_class (ffi_cif* cif,
int storage_size = _this->max_stack+_this->max_locals;
_Jv_InterpMethodInvocation* inv = (_Jv_InterpMethodInvocation*)
alloca (sizeof (_Jv_InterpMethodInvocation)
- + storage_size * sizeof (void*));
+ + storage_size * sizeof (_Jv_word));
_Jv_MonitorEnter (sync);
jobject ex = _this->run (cif, ret, args, inv);
@@ -461,13 +467,13 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
* gcc, why isn't there a -fpack-stack, allowing reuse of stack
* locations? */
- void** sp = inv->sp;
+ _Jv_word *sp = inv->sp;
unsigned char *pc = inv->pc;
- void** locals = inv->local_base ();
+ _Jv_word *locals = inv->local_base ();
int opcode;
jclass defining_class = this->defining_class;
- void **pool_data = defining_class->constants.data;
+ _Jv_word *pool_data = defining_class->constants.data;
/* these two are used in the invokeXXX instructions */
void (*fun)(...);
@@ -581,8 +587,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
* JV_CONSTANT_ResolvedFlag in the tag directly. For now, I
* don't think it is worth it. */
- rmeth = (_Jv_ResolvedMethod*)
- _Jv_ResolvePoolEntry (defining_class, index);
+ rmeth = (_Jv_ResolvePoolEntry (defining_class, index)).rmethod;
sp -= rmeth->stack_item_count;
NULLCHECK(sp[0]);
@@ -595,7 +600,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
}
else
{
- jobject rcv = (jobject)sp[0];
+ jobject rcv = sp[0].o;
_Jv_VTable *table = *(_Jv_VTable**)rcv;
fun = (void (*) (...))table->method[rmeth->vtable_index];
}
@@ -606,12 +611,12 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
{
/* here goes the magic again... */
ffi_cif *cif = &rmeth->cif;
- void **raw = sp;
+ ffi_raw *raw = (ffi_raw*) sp;
jdouble rvalue;
TIME_SUSPEND;
- ffi_raw_call (cif, fun, (void*)&rvalue, (ffi_raw*) raw);
+ ffi_raw_call (cif, fun, (void*)&rvalue, raw);
TIME_RESUME;
int rtype = cif->rtype->type;
@@ -717,21 +722,21 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
case op_ldc:
{
int index = get1u (pc++);
- PUSHA((jobject) pool_data[index]);
+ PUSHA(pool_data[index].o);
}
goto next_insn;
case op_ldc_w:
{
int index = get2u (pc); pc += 2;
- PUSHA((jobject) pool_data[index]);
+ PUSHA(pool_data[index].o);
}
goto next_insn;
case op_ldc2_w:
{
int index = get2u (pc); pc += 2;
- memcpy (sp, &pool_data[index], 8);
+ memcpy (sp, &pool_data[index], 2*sizeof (_Jv_word));
sp += 2;
}
goto next_insn;
@@ -1715,7 +1720,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
unsigned char *base_pc = pc-1;
jint fieldref_index = get2u (pc); pc += 2;
_Jv_ResolvePoolEntry (defining_class, fieldref_index);
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
if ((field->flags & STATIC) == 0)
throw_incompatible_class_change_error
@@ -1761,7 +1766,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
unsigned char *base_pc = pc-1;
jint fieldref_index = get2u (pc); pc += 2;
_Jv_ResolvePoolEntry (defining_class, fieldref_index);
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
if ((field->flags & STATIC) != 0)
throw_incompatible_class_change_error
@@ -1813,7 +1818,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
unsigned char* base_pc = pc-1;
jint fieldref_index = get2u (pc); pc += 2;
_Jv_ResolvePoolEntry (defining_class, fieldref_index);
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
jclass type = field->type;
@@ -1862,7 +1867,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
unsigned char* base_pc = pc-1;
jint fieldref_index = get2u (pc); pc += 2;
_Jv_ResolvePoolEntry (defining_class, fieldref_index);
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
jclass type = field->type;
@@ -1947,7 +1952,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
case op_getstatic_1:
{
jint fieldref_index = get2u (pc); pc += 2;
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
PUSHI (*(jbyte*) (field->u.addr));
}
goto next_insn;
@@ -1955,7 +1960,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
case op_getstatic_2s:
{
jint fieldref_index = get2u (pc); pc += 2;
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
PUSHI(*(jshort*) (field->u.addr));
}
goto next_insn;
@@ -1963,7 +1968,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
case op_getstatic_2u:
{
jint fieldref_index = get2u (pc); pc += 2;
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
PUSHI(*(jchar*) (field->u.addr));
}
goto next_insn;
@@ -1971,7 +1976,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
case op_getstatic_4:
{
jint fieldref_index = get2u (pc); pc += 2;
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
PUSHI(*(jint*) (field->u.addr));
}
goto next_insn;
@@ -1979,7 +1984,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
case op_getstatic_8:
{
jint fieldref_index = get2u (pc); pc += 2;
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
PUSHL(*(jlong*) (field->u.addr));
}
goto next_insn;
@@ -1987,7 +1992,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
case op_getstatic_a:
{
jint fieldref_index = get2u (pc); pc += 2;
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
PUSHA(*(jobject*) (field->u.addr));
}
goto next_insn;
@@ -2046,7 +2051,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
{
jint value = POPI();
jint fieldref_index = get2u (pc); pc += 2;
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
*(jbyte*) (field->u.addr) = value;
}
goto next_insn;
@@ -2055,7 +2060,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
{
jint value = POPI();
jint fieldref_index = get2u (pc); pc += 2;
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
*(jchar*) (field->u.addr) = value;
}
goto next_insn;
@@ -2064,7 +2069,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
{
jint value = POPI();
jint fieldref_index = get2u (pc); pc += 2;
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
*(jint*) (field->u.addr) = value;
}
goto next_insn;
@@ -2073,7 +2078,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
{
jlong value = POPL();
jint fieldref_index = get2u (pc); pc += 2;
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
*(jlong*) (field->u.addr) = value;
}
goto next_insn;
@@ -2082,7 +2087,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
{
jobject value = POPA();
jint fieldref_index = get2u (pc); pc += 2;
- _Jv_Field *field = (_Jv_Field*) pool_data[fieldref_index];
+ _Jv_Field *field = pool_data[fieldref_index].field;
*(jobject*) (field->u.addr) = value;
}
goto next_insn;
@@ -2091,8 +2096,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
{
int index = get2u (pc); pc += 2;
- rmeth = (_Jv_ResolvedMethod*)
- _Jv_ResolvePoolEntry (defining_class, index);
+ rmeth = (_Jv_ResolvePoolEntry (defining_class, index)).rmethod;
sp -= rmeth->stack_item_count;
@@ -2106,8 +2110,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
{
int index = get2u (pc); pc += 2;
- rmeth = (_Jv_ResolvedMethod*)
- _Jv_ResolvePoolEntry (defining_class, index);
+ rmeth = (_Jv_ResolvePoolEntry (defining_class, index)).rmethod;
sp -= rmeth->stack_item_count;
@@ -2123,13 +2126,12 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
// invokeinterface has two unused bytes...
pc += 2;
- rmeth = (_Jv_ResolvedMethod*)
- _Jv_ResolvePoolEntry (defining_class, index);
+ rmeth = (_Jv_ResolvePoolEntry (defining_class, index)).rmethod;
sp -= rmeth->stack_item_count;
NULLCHECK(sp[0]);
- jobject rcv = (jobject)sp[0];
+ jobject rcv = sp[0].o;
fun = (void (*) (...))
_Jv_LookupInterfaceMethod (rcv->getClass (),
@@ -2142,8 +2144,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
case op_new:
{
int index = get2u (pc); pc += 2;
- jclass klass = (jclass) _Jv_ResolvePoolEntry (defining_class,
- index);
+ jclass klass = (_Jv_ResolvePoolEntry (defining_class, index)).clazz;
_Jv_InitClass (klass);
jobject res = _Jv_AllocObject (klass, klass->size_in_bytes);
PUSHA (res);
@@ -2162,7 +2163,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
case op_anewarray:
{
int index = get2u (pc); pc += 2;
- jclass klass = (jclass) _Jv_ResolvePoolEntry (defining_class, index);
+ jclass klass = (_Jv_ResolvePoolEntry (defining_class, index)).clazz;
int size = POPI();
_Jv_InitClass (klass);
jobject result = _Jv_NewObjectArray (size, klass, 0);
@@ -2189,8 +2190,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
{
jobject value = POPA();
jint index = get2u (pc); pc += 2;
- jclass to = (jclass)_Jv_ResolvePoolEntry (defining_class,
- index);
+ jclass to = (_Jv_ResolvePoolEntry (defining_class, index)).clazz;
if (value != NULL && ! to->isInstance (value))
{
@@ -2207,8 +2207,7 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
{
jobject value = POPA();
jint index = get2u (pc); pc += 2;
- jclass to = (jclass)_Jv_ResolvePoolEntry (defining_class,
- index);
+ jclass to = (_Jv_ResolvePoolEntry (defining_class, index)).clazz;
PUSHI (to->isInstance (value));
}
goto next_insn;
@@ -2315,8 +2314,8 @@ void _Jv_InterpMethod::continue1 (_Jv_InterpMethodInvocation *inv)
int kind_index = get2u (pc); pc += 2;
int dim = get1u (pc); pc += 1;
- jclass type = (jclass) _Jv_ResolvePoolEntry (defining_class,
- kind_index);
+ jclass type
+ = (_Jv_ResolvePoolEntry (defining_class, kind_index)).clazz;
_Jv_InitClass (type);
jint *sizes = (jint*) alloca (sizeof (jint)*dim);
OpenPOWER on IntegriCloud