src/cpu/x86/vm/x86_32.ad
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/cpu/x86/vm/x86_32.ad	Thu Mar 20 11:28:56 2014
--- new/src/cpu/x86/vm/x86_32.ad	Thu Mar 20 11:28:56 2014

*** 510,527 **** --- 510,528 ---- //============================================================================= #ifndef PRODUCT void MachPrologNode::format(PhaseRegAlloc* ra_, outputStream* st) const { Compile* C = ra_->C; ! int framesize = C->frame_slots() << LogBytesPerInt; ! int framesize = C->frame_size_in_bytes(); + int bangsize = C->bang_size_in_bytes(); assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned"); // Remove wordSize for return addr which is already pushed. framesize -= wordSize; ! if (C->need_stack_bang(framesize)) { ! if (C->need_stack_bang(bangsize)) { framesize -= wordSize; ! st->print("# stack bang (%d bytes)", bangsize); st->print("\n\t"); st->print("PUSH EBP\t# Save EBP"); if (framesize) { st->print("\n\t"); st->print("SUB ESP, #%d\t# Create frame",framesize);
*** 561,573 **** --- 562,575 ---- void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const { Compile* C = ra_->C; MacroAssembler _masm(&cbuf); ! int framesize = C->frame_slots() << LogBytesPerInt; ! int framesize = C->frame_size_in_bytes(); + int bangsize = C->bang_size_in_bytes(); ! __ verified_entry(framesize, C->need_stack_bang(framesize), C->in_24_bit_fp_mode()); ! __ verified_entry(framesize, C->need_stack_bang(bangsize)?bangsize:0, C->in_24_bit_fp_mode()); C->set_frame_complete(cbuf.insts_size()); if (C->has_mach_constant_base_node()) { // NOTE: We set the table base offset here because users might be
*** 587,597 **** --- 589,599 ---- //============================================================================= #ifndef PRODUCT void MachEpilogNode::format( PhaseRegAlloc *ra_, outputStream* st ) const { Compile *C = ra_->C; ! int framesize = C->frame_slots() << LogBytesPerInt; ! int framesize = C->frame_size_in_bytes(); assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned"); // Remove two words for return addr and rbp, framesize -= 2*wordSize; if (C->max_vector_size() > 16) {
*** 627,637 **** --- 629,639 ---- if (C->in_24_bit_fp_mode()) { MacroAssembler masm(&cbuf); masm.fldcw(ExternalAddress(StubRoutines::addr_fpu_cntrl_wrd_std())); } ! int framesize = C->frame_slots() << LogBytesPerInt; ! int framesize = C->frame_size_in_bytes(); assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned"); // Remove two words for return addr and rbp, framesize -= 2*wordSize; // Note that VerifyStackAtCalls' Majik cookie does not change the frame size popped here
*** 661,671 **** --- 663,673 ---- // If method set FPU control word, restore to standard control word int size = C->in_24_bit_fp_mode() ? 6 : 0; if (C->max_vector_size() > 16) size += 3; // vzeroupper if (do_polling() && C->is_method_compilation()) size += 6; ! int framesize = C->frame_slots() << LogBytesPerInt; ! int framesize = C->frame_size_in_bytes(); assert((framesize & (StackAlignmentInBytes-1)) == 0, "frame size not aligned"); // Remove two words for return addr and rbp, framesize -= 2*wordSize; size++; // popl rbp,

src/cpu/x86/vm/x86_32.ad
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File