< prev index next >

src/hotspot/share/opto/escape.cpp

Print this page
rev 48500 : 8194988: 8 Null pointer dereference defect groups related to MultiNode::proj_out()

*** 364,374 **** } // Don't mark as processed since call's arguments have to be processed. delayed_worklist->push(n); // Check if a call returns an object. if ((n->as_Call()->returns_pointer() && ! n->as_Call()->proj_out(TypeFunc::Parms) != NULL) || (n->is_CallStaticJava() && n->as_CallStaticJava()->is_boxing_method())) { add_call_node(n->as_Call()); } } --- 364,374 ---- } // Don't mark as processed since call's arguments have to be processed. delayed_worklist->push(n); // Check if a call returns an object. if ((n->as_Call()->returns_pointer() && ! n->as_Call()->proj_out_or_null(TypeFunc::Parms) != NULL) || (n->is_CallStaticJava() && n->as_CallStaticJava()->is_boxing_method())) { add_call_node(n->as_Call()); } }
*** 2672,2682 **** return orig_mem; Compile* C = _compile; PhaseGVN* igvn = _igvn; const TypeOopPtr *toop = C->get_adr_type(alias_idx)->isa_oopptr(); bool is_instance = (toop != NULL) && toop->is_known_instance(); ! Node *start_mem = C->start()->proj_out(TypeFunc::Memory); Node *prev = NULL; Node *result = orig_mem; while (prev != result) { prev = result; if (result == start_mem) --- 2672,2682 ---- return orig_mem; Compile* C = _compile; PhaseGVN* igvn = _igvn; const TypeOopPtr *toop = C->get_adr_type(alias_idx)->isa_oopptr(); bool is_instance = (toop != NULL) && toop->is_known_instance(); ! Node *start_mem = C->start()->proj_out_or_null(TypeFunc::Memory); Node *prev = NULL; Node *result = orig_mem; while (prev != result) { prev = result; if (result == start_mem)
*** 3026,3036 **** } // An allocation may have an Initialize which has raw stores. Scan // the users of the raw allocation result and push AddP users // on alloc_worklist. ! Node *raw_result = alloc->proj_out(TypeFunc::Parms); assert (raw_result != NULL, "must have an allocation result"); for (DUIterator_Fast imax, i = raw_result->fast_outs(imax); i < imax; i++) { Node *use = raw_result->fast_out(i); if (use->is_AddP() && use->outcnt() > 0) { // Don't process dead nodes Node* addp2 = find_second_addp(use, raw_result); --- 3026,3036 ---- } // An allocation may have an Initialize which has raw stores. Scan // the users of the raw allocation result and push AddP users // on alloc_worklist. ! Node *raw_result = alloc->proj_out_or_null(TypeFunc::Parms); assert (raw_result != NULL, "must have an allocation result"); for (DUIterator_Fast imax, i = raw_result->fast_outs(imax); i < imax; i++) { Node *use = raw_result->fast_out(i); if (use->is_AddP() && use->outcnt() > 0) { // Don't process dead nodes Node* addp2 = find_second_addp(use, raw_result);
*** 3217,3227 **** continue; if (n->is_Phi() || n->is_ClearArray()) { // we don't need to do anything, but the users must be pushed } else if (n->is_MemBar()) { // Initialize, MemBar nodes // we don't need to do anything, but the users must be pushed ! n = n->as_MemBar()->proj_out(TypeFunc::Memory); if (n == NULL) continue; } else if (n->Opcode() == Op_StrCompressedCopy || n->Opcode() == Op_EncodeISOArray) { // get the memory projection --- 3217,3227 ---- continue; if (n->is_Phi() || n->is_ClearArray()) { // we don't need to do anything, but the users must be pushed } else if (n->is_MemBar()) { // Initialize, MemBar nodes // we don't need to do anything, but the users must be pushed ! n = n->as_MemBar()->proj_out_or_null(TypeFunc::Memory); if (n == NULL) continue; } else if (n->Opcode() == Op_StrCompressedCopy || n->Opcode() == Op_EncodeISOArray) { // get the memory projection
< prev index next >