8162540: Crash in C2 escape analysis with assert: "node should be registered"

Thu, 17 May 2018 16:45:13 -0700

author
vlivanov
date
Thu, 17 May 2018 16:45:13 -0700
changeset 9319
77603437bcee
parent 9318
576949777967
child 9321
64fe89b445cd

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          }

mercurial