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;