src/cpu/x86/vm/templateInterpreter_x86_64.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Wed Dec  2 16:26:43 2009
--- new/src/cpu/x86/vm/templateInterpreter_x86_64.cpp	Wed Dec  2 16:26:42 2009

*** 447,458 **** --- 447,462 ---- // Add stack base to locals and subtract stack size __ addptr(rax, stack_base); __ subptr(rax, stack_size); + // Use the maximum number of pages we might bang. + const int max_pages = StackShadowPages > (StackRedPages+StackYellowPages) ? StackShadowPages : + (StackRedPages+StackYellowPages); + // add in the red and yellow zone sizes ! __ addptr(rax, (StackRedPages + StackYellowPages) * page_size); ! __ addptr(rax, max_pages * page_size); // check against the current stack bottom __ cmpptr(rsp, rax); __ jcc(Assembler::above, after_frame_check);
*** 1500,1511 **** --- 1504,1517 ---- (callee_locals - callee_param_count)*Interpreter::stackElementWords() + moncount * frame::interpreter_frame_monitor_size() + tempcount* Interpreter::stackElementWords() + popframe_extra_args; if (interpreter_frame != NULL) { #ifdef ASSERT assert(caller->unextended_sp() == interpreter_frame->interpreter_frame_sender_sp(), "Frame not properly walkable"); + if (!EnableMethodHandles) + // @@@ FIXME: Should we correct interpreter_frame_sender_sp in the calling sequences? + // Probably, since deoptimization doesn't work yet. + assert(caller->unextended_sp() == interpreter_frame->interpreter_frame_sender_sp(), "Frame not properly walkable"); assert(caller->sp() == interpreter_frame->sender_sp(), "Frame not properly walkable(2)"); #endif interpreter_frame->interpreter_frame_set_method(method); // NOTE the difference in using sender_sp and

src/cpu/x86/vm/templateInterpreter_x86_64.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File