src/cpu/x86/vm/c1_LIRAssembler_x86.cpp

Print this page

        

*** 343,355 **** Register ic_klass = IC_Klass; const int ic_cmp_size = LP64_ONLY(10) NOT_LP64(9); const bool do_post_padding = VerifyOops || UseCompressedClassPointers; if (!do_post_padding) { // insert some nops so that the verified entry point is aligned on CodeEntryAlignment ! while ((__ offset() + ic_cmp_size) % CodeEntryAlignment != 0) { ! __ nop(); ! } } int offset = __ offset(); __ inline_cache_check(receiver, IC_Klass); assert(__ offset() % CodeEntryAlignment == 0 || do_post_padding, "alignment must be correct"); if (do_post_padding) { --- 343,353 ---- Register ic_klass = IC_Klass; const int ic_cmp_size = LP64_ONLY(10) NOT_LP64(9); const bool do_post_padding = VerifyOops || UseCompressedClassPointers; if (!do_post_padding) { // insert some nops so that the verified entry point is aligned on CodeEntryAlignment ! __ align(CodeEntryAlignment, __ offset() + ic_cmp_size); } int offset = __ offset(); __ inline_cache_check(receiver, IC_Klass); assert(__ offset() % CodeEntryAlignment == 0 || do_post_padding, "alignment must be correct"); if (do_post_padding) {
*** 2859,2871 **** offset += NativeCall::displacement_offset + NativeMovConstReg::instruction_size; break; case lir_virtual_call: // currently, sparc-specific for niagara default: ShouldNotReachHere(); } ! while (offset++ % BytesPerWord != 0) { ! __ nop(); ! } } } void LIR_Assembler::call(LIR_OpJavaCall* op, relocInfo::relocType rtype) { --- 2857,2867 ---- offset += NativeCall::displacement_offset + NativeMovConstReg::instruction_size; break; case lir_virtual_call: // currently, sparc-specific for niagara default: ShouldNotReachHere(); } ! __ align(BytesPerWord, offset); } } void LIR_Assembler::call(LIR_OpJavaCall* op, relocInfo::relocType rtype) {
*** 2900,2913 **** } int start = __ offset(); if (os::is_MP()) { // make sure that the displacement word of the call ends up word aligned ! int offset = __ offset() + NativeMovConstReg::instruction_size + NativeCall::displacement_offset; ! while (offset++ % BytesPerWord != 0) { ! __ nop(); ! } } __ relocate(static_stub_Relocation::spec(call_pc)); __ mov_metadata(rbx, (Metadata*)NULL); // must be set to -1 at code generation time assert(!os::is_MP() || ((__ offset() + 1) % BytesPerWord) == 0, "must be aligned on MP"); --- 2896,2906 ---- } int start = __ offset(); if (os::is_MP()) { // make sure that the displacement word of the call ends up word aligned ! __ align(BytesPerWord, __ offset() + NativeMovConstReg::instruction_size + NativeCall::displacement_offset); } __ relocate(static_stub_Relocation::spec(call_pc)); __ mov_metadata(rbx, (Metadata*)NULL); // must be set to -1 at code generation time assert(!os::is_MP() || ((__ offset() + 1) % BytesPerWord) == 0, "must be aligned on MP");