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

src/share/vm/opto/graphKit.cpp

Print this page

        

*** 331,340 **** --- 331,341 ---- JVMState* ex_jvms = ex_map->_jvms; assert(ex_jvms->same_calls_as(phi_map->_jvms), "consistent call chains"); assert(ex_jvms->stkoff() == phi_map->_jvms->stkoff(), "matching locals"); assert(ex_jvms->sp() == phi_map->_jvms->sp(), "matching stack sizes"); assert(ex_jvms->monoff() == phi_map->_jvms->monoff(), "matching JVMS"); + assert(ex_jvms->scloff() == phi_map->_jvms->scloff(), "matching scalar replaced objects"); assert(ex_map->req() == phi_map->req(), "matching maps"); uint tos = ex_jvms->stkoff() + ex_jvms->sp(); Node* hidden_merge_mark = root(); Node* region = phi_map->control(); MergeMemNode* phi_mem = phi_map->merged_memory();
*** 407,417 **** phi_map->set_req(i, dst); // Prepare to append interesting stuff onto the new phi: while (dst->req() > orig_width) dst->del_req(dst->req()-1); } else { assert(dst->is_Phi(), "nobody else uses a hidden region"); ! phi = (PhiNode*)dst; } if (add_multiple && src->in(0) == ex_control) { // Both are phis. add_n_reqs(dst, src); } else { --- 408,418 ---- phi_map->set_req(i, dst); // Prepare to append interesting stuff onto the new phi: while (dst->req() > orig_width) dst->del_req(dst->req()-1); } else { assert(dst->is_Phi(), "nobody else uses a hidden region"); ! phi = dst->as_Phi(); } if (add_multiple && src->in(0) == ex_control) { // Both are phis. add_n_reqs(dst, src); } else {
*** 1436,1446 **** if (require_atomic_access && bt == T_LONG) { ld = LoadLNode::make_atomic(C, ctl, mem, adr, adr_type, t); } else { ld = LoadNode::make(_gvn, ctl, mem, adr, adr_type, t, bt); } ! return _gvn.transform(ld); } Node* GraphKit::store_to_memory(Node* ctl, Node* adr, Node *val, BasicType bt, int adr_idx, bool require_atomic_access) { --- 1437,1452 ---- if (require_atomic_access && bt == T_LONG) { ld = LoadLNode::make_atomic(C, ctl, mem, adr, adr_type, t); } else { ld = LoadNode::make(_gvn, ctl, mem, adr, adr_type, t, bt); } ! ld = _gvn.transform(ld); ! if ((bt == T_OBJECT) && C->do_escape_analysis() || C->eliminate_boxing()) { ! // Improve graph before escape analysis and boxing elimination. ! record_for_igvn(ld); ! } ! return ld; } Node* GraphKit::store_to_memory(Node* ctl, Node* adr, Node *val, BasicType bt, int adr_idx, bool require_atomic_access) {
*** 3142,3152 **** // since GC and deoptimization can happened. Node *mem = reset_memory(); set_all_memory(mem); // Create new memory state AllocateNode* alloc ! = new (C) AllocateNode(C, AllocateNode::alloc_type(), control(), mem, i_o(), size, klass_node, initial_slow_test); return set_output_for_allocation(alloc, oop_type); --- 3148,3158 ---- // since GC and deoptimization can happened. Node *mem = reset_memory(); set_all_memory(mem); // Create new memory state AllocateNode* alloc ! = new (C) AllocateNode(C, AllocateNode::alloc_type(Type::TOP), control(), mem, i_o(), size, klass_node, initial_slow_test); return set_output_for_allocation(alloc, oop_type);
*** 3283,3293 **** Node *mem = reset_memory(); set_all_memory(mem); // Create new memory state // Create the AllocateArrayNode and its result projections AllocateArrayNode* alloc ! = new (C) AllocateArrayNode(C, AllocateArrayNode::alloc_type(), control(), mem, i_o(), size, klass_node, initial_slow_test, length); --- 3289,3299 ---- Node *mem = reset_memory(); set_all_memory(mem); // Create new memory state // Create the AllocateArrayNode and its result projections AllocateArrayNode* alloc ! = new (C) AllocateArrayNode(C, AllocateArrayNode::alloc_type(TypeInt::INT), control(), mem, i_o(), size, klass_node, initial_slow_test, length);
*** 3324,3337 **** // Given an oop pointer or raw pointer, see if it feeds from an AllocateNode. AllocateNode* AllocateNode::Ideal_allocation(Node* ptr, PhaseTransform* phase) { if (ptr == NULL) { // reduce dumb test in callers return NULL; } ! if (ptr->is_CheckCastPP()) { // strip a raw-to-oop cast ! ptr = ptr->in(1); if (ptr == NULL) return NULL; ! } if (ptr->is_Proj()) { Node* allo = ptr->in(0); if (allo != NULL && allo->is_Allocate()) { return allo->as_Allocate(); } --- 3330,3342 ---- // Given an oop pointer or raw pointer, see if it feeds from an AllocateNode. AllocateNode* AllocateNode::Ideal_allocation(Node* ptr, PhaseTransform* phase) { if (ptr == NULL) { // reduce dumb test in callers return NULL; } ! ptr = ptr->uncast(); // strip a raw-to-oop cast if (ptr == NULL) return NULL; ! if (ptr->is_Proj()) { Node* allo = ptr->in(0); if (allo != NULL && allo->is_Allocate()) { return allo->as_Allocate(); }
*** 3372,3394 **** } } return NULL; } - // Trace Allocate -> Proj[Parm] -> MemBarStoreStore - MemBarStoreStoreNode* AllocateNode::storestore() { - ProjNode* rawoop = proj_out(AllocateNode::RawAddress); - if (rawoop == NULL) return NULL; - for (DUIterator_Fast imax, i = rawoop->fast_outs(imax); i < imax; i++) { - Node* storestore = rawoop->fast_out(i); - if (storestore->is_MemBarStoreStore()) { - return storestore->as_MemBarStoreStore(); - } - } - return NULL; - } - //----------------------------- loop predicates --------------------------- //------------------------------add_predicate_impl---------------------------- void GraphKit::add_predicate_impl(Deoptimization::DeoptReason reason, int nargs) { // Too many traps seen? --- 3377,3386 ----
src/share/vm/opto/graphKit.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File