src/share/vm/opto/matcher.cpp

changeset 598
885ed790ecf0
parent 548
ba764ed4b6f2
child 599
c436414a719e
     1.1 --- a/src/share/vm/opto/matcher.cpp	Tue May 20 06:32:58 2008 -0700
     1.2 +++ b/src/share/vm/opto/matcher.cpp	Wed May 21 10:45:07 2008 -0700
     1.3 @@ -880,7 +880,7 @@
     1.4          Node *m = n->in(i);          // Get input
     1.5          int op = m->Opcode();
     1.6          assert((op == Op_BoxLock) == jvms->is_monitor_use(i), "boxes only at monitor sites");
     1.7 -        if( op == Op_ConI || op == Op_ConP ||
     1.8 +        if( op == Op_ConI || op == Op_ConP || op == Op_ConN ||
     1.9              op == Op_ConF || op == Op_ConD || op == Op_ConL
    1.10              // || op == Op_BoxLock  // %%%% enable this and remove (+++) in chaitin.cpp
    1.11              ) {
    1.12 @@ -1726,6 +1726,14 @@
    1.13          }
    1.14          break;
    1.15        }
    1.16 +      case Op_ConN: {  // Convert narrow pointers above the centerline to NUL
    1.17 +        TypeNode *tn = n->as_Type(); // Constants derive from type nodes
    1.18 +        const TypePtr* tp = tn->type()->is_narrowoop()->make_oopptr();
    1.19 +        if (tp->_ptr == TypePtr::AnyNull) {
    1.20 +          tn->set_type(TypeNarrowOop::NULL_PTR);
    1.21 +        }
    1.22 +        break;
    1.23 +      }
    1.24        case Op_Binary:         // These are introduced in the Post_Visit state.
    1.25          ShouldNotReachHere();
    1.26          break;

mercurial