src/share/vm/opto/idealKit.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8034812 Cdiff src/share/vm/opto/idealKit.cpp

src/share/vm/opto/idealKit.cpp

Print this page

        

*** 84,94 **** } else { bol = Bool(CmpP(left, right), relop); } // Delay gvn.tranform on if-nodes until construction is finished // to prevent a constant bool input from discarding a control output. ! IfNode* iff = delay_transform(new (C) IfNode(ctrl(), bol, prob, cnt))->as_If(); Node* then = IfTrue(iff); Node* elsen = IfFalse(iff); Node* else_cvstate = copy_cvstate(); else_cvstate->set_req(TypeFunc::Control, elsen); _pending_cvstates->push(else_cvstate); --- 84,94 ---- } else { bol = Bool(CmpP(left, right), relop); } // Delay gvn.tranform on if-nodes until construction is finished // to prevent a constant bool input from discarding a control output. ! IfNode* iff = delay_transform(new IfNode(ctrl(), bol, prob, cnt))->as_If(); Node* then = IfTrue(iff); Node* elsen = IfFalse(iff); Node* else_cvstate = copy_cvstate(); else_cvstate->set_req(TypeFunc::Control, elsen); _pending_cvstates->push(else_cvstate);
*** 203,213 **** // the number of precedessors.) Node* IdealKit::make_label(int goto_ct) { assert(_cvstate != NULL, "must declare variables before labels"); Node* lab = new_cvstate(); int sz = 1 + goto_ct + 1 /* fall thru */; ! Node* reg = delay_transform(new (C) RegionNode(sz)); lab->init_req(TypeFunc::Control, reg); return lab; } //-------------------------------bind------------------------------------- --- 203,213 ---- // the number of precedessors.) Node* IdealKit::make_label(int goto_ct) { assert(_cvstate != NULL, "must declare variables before labels"); Node* lab = new_cvstate(); int sz = 1 + goto_ct + 1 /* fall thru */; ! Node* reg = delay_transform(new RegionNode(sz)); lab->init_req(TypeFunc::Control, reg); return lab; } //-------------------------------bind-------------------------------------
*** 310,320 **** } //-----------------------------new_cvstate----------------------------------- Node* IdealKit::new_cvstate() { uint sz = _var_ct + first_var; ! return new (C) Node(sz); } //-----------------------------copy_cvstate----------------------------------- Node* IdealKit::copy_cvstate() { Node* ns = new_cvstate(); --- 310,320 ---- } //-----------------------------new_cvstate----------------------------------- Node* IdealKit::new_cvstate() { uint sz = _var_ct + first_var; ! return new Node(sz); } //-----------------------------copy_cvstate----------------------------------- Node* IdealKit::copy_cvstate() { Node* ns = new_cvstate();
*** 395,405 **** debug_only(adr_type = C->get_adr_type(adr_idx)); Node *mem = memory(adr_idx); // Add required edge to oop_store, optimizer does not support precedence edges. // Convert required edge to precedence edge before allocation. ! Node* st = new (C) StoreCMNode(ctl, mem, adr, adr_type, val, oop_store, oop_adr_idx); st = transform(st); set_memory(st, adr_idx); return st; --- 395,405 ---- debug_only(adr_type = C->get_adr_type(adr_idx)); Node *mem = memory(adr_idx); // Add required edge to oop_store, optimizer does not support precedence edges. // Convert required edge to precedence edge before allocation. ! Node* st = new StoreCMNode(ctl, mem, adr, adr_type, val, oop_store, oop_adr_idx); st = transform(st); set_memory(st, adr_idx); return st;
*** 495,505 **** // We only handle taking in RawMem and modifying RawMem const TypePtr* adr_type = TypeRawPtr::BOTTOM; uint adr_idx = C->get_alias_index(adr_type); // Slow-path leaf call ! CallNode *call = (CallNode*)new (C) CallLeafNode( slow_call_type, slow_call, leaf_name, adr_type); // Set fixed predefined input arguments call->init_req( TypeFunc::Control, ctrl() ); call->init_req( TypeFunc::I_O , top() ) ; // does no i/o // Narrow memory as only memory input --- 495,505 ---- // We only handle taking in RawMem and modifying RawMem const TypePtr* adr_type = TypeRawPtr::BOTTOM; uint adr_idx = C->get_alias_index(adr_type); // Slow-path leaf call ! CallNode *call = (CallNode*)new CallLeafNode( slow_call_type, slow_call, leaf_name, adr_type); // Set fixed predefined input arguments call->init_req( TypeFunc::Control, ctrl() ); call->init_req( TypeFunc::I_O , top() ) ; // does no i/o // Narrow memory as only memory input
*** 516,529 **** call = (CallNode *) _gvn.transform(call); Node *c = call; // dbx gets confused with call call->dump() // Slow leaf call has no side-effects, sets few values ! set_ctrl(transform( new (C) ProjNode(call,TypeFunc::Control) )); // Make memory for the call ! Node* mem = _gvn.transform( new (C) ProjNode(call, TypeFunc::Memory) ); // Set the RawPtr memory state only. set_memory(mem, adr_idx); assert(C->alias_type(call->adr_type()) == C->alias_type(adr_type), --- 516,529 ---- call = (CallNode *) _gvn.transform(call); Node *c = call; // dbx gets confused with call call->dump() // Slow leaf call has no side-effects, sets few values ! set_ctrl(transform( new ProjNode(call,TypeFunc::Control) )); // Make memory for the call ! Node* mem = _gvn.transform( new ProjNode(call, TypeFunc::Memory) ); // Set the RawPtr memory state only. set_memory(mem, adr_idx); assert(C->alias_type(call->adr_type()) == C->alias_type(adr_type),
*** 542,552 **** // We only handle taking in RawMem and modifying RawMem uint adr_idx = C->get_alias_index(adr_type); // Slow-path leaf call ! CallNode *call = (CallNode*)new (C) CallLeafNoFPNode( slow_call_type, slow_call, leaf_name, adr_type); // Set fixed predefined input arguments call->init_req( TypeFunc::Control, ctrl() ); call->init_req( TypeFunc::I_O , top() ) ; // does no i/o // Narrow memory as only memory input --- 542,552 ---- // We only handle taking in RawMem and modifying RawMem uint adr_idx = C->get_alias_index(adr_type); // Slow-path leaf call ! CallNode *call = (CallNode*)new CallLeafNoFPNode( slow_call_type, slow_call, leaf_name, adr_type); // Set fixed predefined input arguments call->init_req( TypeFunc::Control, ctrl() ); call->init_req( TypeFunc::I_O , top() ) ; // does no i/o // Narrow memory as only memory input
*** 563,576 **** call = (CallNode *) _gvn.transform(call); Node *c = call; // dbx gets confused with call call->dump() // Slow leaf call has no side-effects, sets few values ! set_ctrl(transform( new (C) ProjNode(call,TypeFunc::Control) )); // Make memory for the call ! Node* mem = _gvn.transform( new (C) ProjNode(call, TypeFunc::Memory) ); // Set the RawPtr memory state only. set_memory(mem, adr_idx); assert(C->alias_type(call->adr_type()) == C->alias_type(adr_type), --- 563,576 ---- call = (CallNode *) _gvn.transform(call); Node *c = call; // dbx gets confused with call call->dump() // Slow leaf call has no side-effects, sets few values ! set_ctrl(transform( new ProjNode(call,TypeFunc::Control) )); // Make memory for the call ! Node* mem = _gvn.transform( new ProjNode(call, TypeFunc::Memory) ); // Set the RawPtr memory state only. set_memory(mem, adr_idx); assert(C->alias_type(call->adr_type()) == C->alias_type(adr_type),
src/share/vm/opto/idealKit.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File