< prev index next >

src/share/vm/opto/ifg.cpp

Print this page

        

*** 533,543 **** // they are not dead even when their result is not used. // For example, compareAndSwapL (and other CAS) and EncodeISOArray nodes. // The method add_input_to_liveout() keeps such nodes alive (put them on liveout list) // when it sees SCMemProj node in a block. Unfortunately SCMemProj node could be placed // in block in such order that KILL MachProj nodes are processed first. ! if (def->has_out_with(Op_SCMemProj)) { return false; } } b->remove_node(location); LRG& lrg = lrgs(lid); --- 533,543 ---- // they are not dead even when their result is not used. // For example, compareAndSwapL (and other CAS) and EncodeISOArray nodes. // The method add_input_to_liveout() keeps such nodes alive (put them on liveout list) // when it sees SCMemProj node in a block. Unfortunately SCMemProj node could be placed // in block in such order that KILL MachProj nodes are processed first. ! if (def->has_out_with(Op_SCMemProj) || def->has_out_with(Op_ShenandoahWBMemProj)) { return false; } } b->remove_node(location); LRG& lrg = lrgs(lid);
*** 681,691 **** */ void PhaseChaitin::add_input_to_liveout(Block* b, Node* n, IndexSet* liveout, double cost, Pressure& int_pressure, Pressure& float_pressure) { JVMState* jvms = n->jvms(); uint debug_start = jvms ? jvms->debug_start() : 999999; ! for (uint k = ((n->Opcode() == Op_SCMemProj) ? 0:1); k < n->req(); k++) { Node* def = n->in(k); uint lid = _lrg_map.live_range_id(def); if (!lid) { continue; } --- 681,691 ---- */ void PhaseChaitin::add_input_to_liveout(Block* b, Node* n, IndexSet* liveout, double cost, Pressure& int_pressure, Pressure& float_pressure) { JVMState* jvms = n->jvms(); uint debug_start = jvms ? jvms->debug_start() : 999999; ! for (uint k = ((n->Opcode() == Op_SCMemProj || n->Opcode() == Op_ShenandoahWBMemProj) ? 0:1); k < n->req(); k++) { Node* def = n->in(k); uint lid = _lrg_map.live_range_id(def); if (!lid) { continue; }
< prev index next >