Thu, 17 May 2018 16:45:13 -0700
8162540: Crash in C2 escape analysis with assert: "node should be registered"
Reviewed-by: kvn, thartmann
src/share/vm/opto/escape.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/share/vm/opto/escape.cpp Tue Sep 06 13:01:27 2016 +0200 1.2 +++ b/src/share/vm/opto/escape.cpp Thu May 17 16:45:13 2018 -0700 1.3 @@ -2016,8 +2016,10 @@ 1.4 // Check for unsafe oop field access 1.5 for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax; i++) { 1.6 int opcode = n->fast_out(i)->Opcode(); 1.7 - if (opcode == Op_StoreP || opcode == Op_LoadP || 1.8 - opcode == Op_StoreN || opcode == Op_LoadN) { 1.9 + if (opcode == Op_StoreP || opcode == Op_StoreN || 1.10 + opcode == Op_LoadP || opcode == Op_LoadN || 1.11 + opcode == Op_GetAndSetP || opcode == Op_GetAndSetN || 1.12 + opcode == Op_CompareAndSwapP || opcode == Op_CompareAndSwapN) { 1.13 bt = T_OBJECT; 1.14 (*unsafe) = true; 1.15 break; 1.16 @@ -2037,8 +2039,10 @@ 1.17 // Allocation initialization, ThreadLocal field access, unsafe access 1.18 for (DUIterator_Fast imax, i = n->fast_outs(imax); i < imax; i++) { 1.19 int opcode = n->fast_out(i)->Opcode(); 1.20 - if (opcode == Op_StoreP || opcode == Op_LoadP || 1.21 - opcode == Op_StoreN || opcode == Op_LoadN) { 1.22 + if (opcode == Op_StoreP || opcode == Op_StoreN || 1.23 + opcode == Op_LoadP || opcode == Op_LoadN || 1.24 + opcode == Op_GetAndSetP || opcode == Op_GetAndSetN || 1.25 + opcode == Op_CompareAndSwapP || opcode == Op_CompareAndSwapN) { 1.26 bt = T_OBJECT; 1.27 break; 1.28 }