comparison src/share/vm/opto/escape.cpp @ 23431:3f47111161d7

8134031: Incorrect JIT compilation of complex code with inlining and escape analysis Summary: Bad rewiring of memory edges when we split unique types during EA Reviewed-by: kvn
author roland
date Mon, 31 Aug 2015 17:20:08 +0200
parents 6e8e0bf87bbe
children b5f3a471e646 daaf806995b3
comparison
equal deleted inserted replaced
23428:be740540f60c 23431:3f47111161d7
3181 // Note: we don't want to use MergeMemStream here because we only want to 3181 // Note: we don't want to use MergeMemStream here because we only want to
3182 // scan inputs which exist at the start, not ones we add during processing. 3182 // scan inputs which exist at the start, not ones we add during processing.
3183 // Note 2: MergeMem may already contains instance memory slices added 3183 // Note 2: MergeMem may already contains instance memory slices added
3184 // during find_inst_mem() call when memory nodes were processed above. 3184 // during find_inst_mem() call when memory nodes were processed above.
3185 igvn->hash_delete(nmm); 3185 igvn->hash_delete(nmm);
3186 uint nslices = nmm->req(); 3186 uint nslices = MIN2(nmm->req(), new_index_start);
3187 for (uint i = Compile::AliasIdxRaw+1; i < nslices; i++) { 3187 for (uint i = Compile::AliasIdxRaw+1; i < nslices; i++) {
3188 Node* mem = nmm->in(i); 3188 Node* mem = nmm->in(i);
3189 Node* cur = NULL; 3189 Node* cur = NULL;
3190 if (mem == NULL || mem->is_top()) 3190 if (mem == NULL || mem->is_top())
3191 continue; 3191 continue;