src/share/vm/opto/compile.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7187454 Cdiff src/share/vm/opto/compile.cpp

src/share/vm/opto/compile.cpp

Print this page

        

*** 3136,3146 **** break; } default: ShouldNotReachHere(); } assert(constant_addr, "consts section too small"); ! assert((constant_addr - _masm.code()->consts()->start()) == con.offset(), err_msg("must be: %d == %d", constant_addr - _masm.code()->consts()->start(), con.offset())); } } int Compile::ConstantTable::find_offset(Constant& con) const { int idx = _constants.find(con); --- 3136,3146 ---- break; } default: ShouldNotReachHere(); } assert(constant_addr, "consts section too small"); ! assert((constant_addr - _masm.code()->consts()->start()) == con.offset(), err_msg_res("must be: %d == %d", constant_addr - _masm.code()->consts()->start(), con.offset())); } } int Compile::ConstantTable::find_offset(Constant& con) const { int idx = _constants.find(con);
*** 3197,3207 **** void Compile::ConstantTable::fill_jump_table(CodeBuffer& cb, MachConstantNode* n, GrowableArray<Label*> labels) const { // If called from Compile::scratch_emit_size do nothing. if (Compile::current()->in_scratch_emit_size()) return; assert(labels.is_nonempty(), "must be"); ! assert((uint) labels.length() == n->outcnt(), err_msg("must be equal: %d == %d", labels.length(), n->outcnt())); // Since MachConstantNode::constant_offset() also contains // table_base_offset() we need to subtract the table_base_offset() // to get the plain offset into the constant table. int offset = n->constant_offset() - table_base_offset(); --- 3197,3207 ---- void Compile::ConstantTable::fill_jump_table(CodeBuffer& cb, MachConstantNode* n, GrowableArray<Label*> labels) const { // If called from Compile::scratch_emit_size do nothing. if (Compile::current()->in_scratch_emit_size()) return; assert(labels.is_nonempty(), "must be"); ! assert((uint) labels.length() == n->outcnt(), err_msg_res("must be equal: %d == %d", labels.length(), n->outcnt())); // Since MachConstantNode::constant_offset() also contains // table_base_offset() we need to subtract the table_base_offset() // to get the plain offset into the constant table. int offset = n->constant_offset() - table_base_offset();
*** 3209,3218 **** MacroAssembler _masm(&cb); address* jump_table_base = (address*) (_masm.code()->consts()->start() + offset); for (uint i = 0; i < n->outcnt(); i++) { address* constant_addr = &jump_table_base[i]; ! assert(*constant_addr == (((address) n) + i), err_msg("all jump-table entries must contain adjusted node pointer: " INTPTR_FORMAT " == " INTPTR_FORMAT, *constant_addr, (((address) n) + i))); *constant_addr = cb.consts()->target(*labels.at(i), (address) constant_addr); cb.consts()->relocate((address) constant_addr, relocInfo::internal_word_type); } } --- 3209,3218 ---- MacroAssembler _masm(&cb); address* jump_table_base = (address*) (_masm.code()->consts()->start() + offset); for (uint i = 0; i < n->outcnt(); i++) { address* constant_addr = &jump_table_base[i]; ! assert(*constant_addr == (((address) n) + i), err_msg_res("all jump-table entries must contain adjusted node pointer: " INTPTR_FORMAT " == " INTPTR_FORMAT, *constant_addr, (((address) n) + i))); *constant_addr = cb.consts()->target(*labels.at(i), (address) constant_addr); cb.consts()->relocate((address) constant_addr, relocInfo::internal_word_type); } }
src/share/vm/opto/compile.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File