fix stack offset calulation for multianewarray

This commit is contained in:
Joel Dice 2009-03-01 10:49:37 -07:00
parent 117c89b9ee
commit 412348d938

View File

@ -3427,13 +3427,9 @@ compile(MyThread* t, Frame* initialFrame, unsigned ip,
if (UNLIKELY(t->exception)) return; if (UNLIKELY(t->exception)) return;
PROTECT(t, class_); PROTECT(t, class_);
unsigned offset = alignedFrameSize(t, context->method) unsigned offset = localOffset
- t->arch->frameHeaderSize() (t, localSize(t, context->method) + c->index(c->top()),
- (localSize(t, context->method) context->method) / BytesPerWord;
- methodParameterFootprint(t, context->method)
- 1)
+ t->arch->frameReturnAddressSize()
- c->index(c->top());
Compiler::Operand* result = c->call Compiler::Operand* result = c->call
(c->constant(getThunk(t, makeMultidimensionalArrayThunk)), (c->constant(getThunk(t, makeMultidimensionalArrayThunk)),
@ -4185,11 +4181,11 @@ finish(MyThread* t, Allocator* allocator, Context* context)
strcmp strcmp
(reinterpret_cast<const char*> (reinterpret_cast<const char*>
(&byteArrayBody(t, className(t, methodClass(t, context->method)), 0)), (&byteArrayBody(t, className(t, methodClass(t, context->method)), 0)),
"Arrays") == 0 and "java/lang/Throwable") == 0 and
strcmp strcmp
(reinterpret_cast<const char*> (reinterpret_cast<const char*>
(&byteArrayBody(t, methodName(t, context->method), 0)), (&byteArrayBody(t, methodName(t, context->method), 0)),
"main") == 0) "printStackTrace") == 0)
{ {
#ifdef __POWERPC__ #ifdef __POWERPC__
asm("trap"); asm("trap");