< prev index next >

src/share/vm/opto/compile.cpp

Print this page

        

*** 594,604 **** n->as_MachBranch()->label_set(&fakeL, 0); } n->emit(buf, this->regalloc()); // Emitting into the scratch buffer should not fail ! assert (!failing(), err_msg_res("Must not have pending failure. Reason is: %s", failure_reason())); if (is_branch) // Restore label. n->as_MachBranch()->label_set(saveL, save_bnum); // End scratch_emit_size section. --- 594,604 ---- n->as_MachBranch()->label_set(&fakeL, 0); } n->emit(buf, this->regalloc()); // Emitting into the scratch buffer should not fail ! assert (!failing(), "Must not have pending failure. Reason is: %s", failure_reason()); if (is_branch) // Restore label. n->as_MachBranch()->label_set(saveL, save_bnum); // End scratch_emit_size section.
*** 1187,1197 **** * Return the 'StartNode'. We must not have a pending failure, since the ideal graph * can be in an inconsistent state, i.e., we can get segmentation faults when traversing * the ideal graph. */ StartNode* Compile::start() const { ! assert (!failing(), err_msg_res("Must not have pending failure. Reason is: %s", failure_reason())); for (DUIterator_Fast imax, i = root()->fast_outs(imax); i < imax; i++) { Node* start = root()->fast_out(i); if (start->is_Start()) { return start->as_Start(); } --- 1187,1197 ---- * Return the 'StartNode'. We must not have a pending failure, since the ideal graph * can be in an inconsistent state, i.e., we can get segmentation faults when traversing * the ideal graph. */ StartNode* Compile::start() const { ! assert (!failing(), "Must not have pending failure. Reason is: %s", failure_reason()); for (DUIterator_Fast imax, i = root()->fast_outs(imax); i < imax; i++) { Node* start = root()->fast_out(i); if (start->is_Start()) { return start->as_Start(); }
*** 3794,3804 **** } 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", (int) (constant_addr - _masm.code()->consts()->start()), (int)(con.offset()))); } } int Compile::ConstantTable::find_offset(Constant& con) const { int idx = _constants.find(con); --- 3794,3804 ---- } default: ShouldNotReachHere(); } assert(constant_addr, "consts section too small"); assert((constant_addr - _masm.code()->consts()->start()) == con.offset(), ! "must be: %d == %d", (int) (constant_addr - _masm.code()->consts()->start()), (int)(con.offset())); } } int Compile::ConstantTable::find_offset(Constant& con) const { int idx = _constants.find(con);
*** 3840,3850 **** case T_FLOAT: value.f = oper->constantF(); break; case T_DOUBLE: value.d = oper->constantD(); break; case T_OBJECT: case T_ADDRESS: value.l = (jobject) oper->constant(); break; case T_METADATA: return add((Metadata*)oper->constant()); break; ! default: guarantee(false, err_msg_res("unhandled type: %s", type2name(type))); } return add(n, type, value); } Compile::Constant Compile::ConstantTable::add_jump_table(MachConstantNode* n) { --- 3840,3850 ---- case T_FLOAT: value.f = oper->constantF(); break; case T_DOUBLE: value.d = oper->constantD(); break; case T_OBJECT: case T_ADDRESS: value.l = (jobject) oper->constant(); break; case T_METADATA: return add((Metadata*)oper->constant()); break; ! default: guarantee(false, "unhandled type: %s", type2name(type)); } return add(n, type, value); } Compile::Constant Compile::ConstantTable::add_jump_table(MachConstantNode* n) {
*** 3862,3872 **** 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(); --- 3862,3872 ---- 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(), "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();
*** 3874,3884 **** 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, p2i(*constant_addr), p2i(((address) n) + i))); *constant_addr = cb.consts()->target(*labels.at(i), (address) constant_addr); cb.consts()->relocate((address) constant_addr, relocInfo::internal_word_type); } } --- 3874,3884 ---- 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), "all jump-table entries must contain adjusted node pointer: " INTPTR_FORMAT " == " INTPTR_FORMAT, p2i(*constant_addr), p2i(((address) n) + i)); *constant_addr = cb.consts()->target(*labels.at(i), (address) constant_addr); cb.consts()->relocate((address) constant_addr, relocInfo::internal_word_type); } }
*** 4133,4143 **** int Compile::cmp_expensive_nodes(Node* n1, Node* n2) { if (n1->Opcode() < n2->Opcode()) return -1; else if (n1->Opcode() > n2->Opcode()) return 1; ! assert(n1->req() == n2->req(), err_msg_res("can't compare %s nodes: n1->req() = %d, n2->req() = %d", NodeClassNames[n1->Opcode()], n1->req(), n2->req())); for (uint i = 1; i < n1->req(); i++) { if (n1->in(i) < n2->in(i)) return -1; else if (n1->in(i) > n2->in(i)) return 1; } --- 4133,4143 ---- int Compile::cmp_expensive_nodes(Node* n1, Node* n2) { if (n1->Opcode() < n2->Opcode()) return -1; else if (n1->Opcode() > n2->Opcode()) return 1; ! assert(n1->req() == n2->req(), "can't compare %s nodes: n1->req() = %d, n2->req() = %d", NodeClassNames[n1->Opcode()], n1->req(), n2->req()); for (uint i = 1; i < n1->req(); i++) { if (n1->in(i) < n2->in(i)) return -1; else if (n1->in(i) > n2->in(i)) return 1; }
< prev index next >