< prev index next >

src/hotspot/share/c1/c1_Optimizer.cpp

Print this page

        

*** 506,515 **** --- 506,516 ---- void do_Convert (Convert* x); void do_NullCheck (NullCheck* x); void do_TypeCast (TypeCast* x); void do_Invoke (Invoke* x); void do_NewInstance (NewInstance* x); + void do_NewValueTypeInstance(NewValueTypeInstance* x); void do_NewTypeArray (NewTypeArray* x); void do_NewObjectArray (NewObjectArray* x); void do_NewMultiArray (NewMultiArray* x); void do_CheckCast (CheckCast* x); void do_InstanceOf (InstanceOf* x);
*** 654,663 **** --- 655,665 ---- void handle_LoadIndexed (LoadIndexed* x); void handle_StoreIndexed (StoreIndexed* x); void handle_NullCheck (NullCheck* x); void handle_Invoke (Invoke* x); void handle_NewInstance (NewInstance* x); + void handle_NewValueTypeInstance(NewValueTypeInstance* x); void handle_NewArray (NewArray* x); void handle_AccessMonitor (AccessMonitor* x); void handle_Intrinsic (Intrinsic* x); void handle_ExceptionObject (ExceptionObject* x); void handle_Phi (Phi* x);
*** 692,701 **** --- 694,704 ---- void NullCheckVisitor::do_Convert (Convert* x) {} void NullCheckVisitor::do_NullCheck (NullCheck* x) { nce()->handle_NullCheck(x); } void NullCheckVisitor::do_TypeCast (TypeCast* x) {} void NullCheckVisitor::do_Invoke (Invoke* x) { nce()->handle_Invoke(x); } void NullCheckVisitor::do_NewInstance (NewInstance* x) { nce()->handle_NewInstance(x); } + void NullCheckVisitor::do_NewValueTypeInstance(NewValueTypeInstance* x) { nce()->handle_NewValueTypeInstance(x); } void NullCheckVisitor::do_NewTypeArray (NewTypeArray* x) { nce()->handle_NewArray(x); } void NullCheckVisitor::do_NewObjectArray (NewObjectArray* x) { nce()->handle_NewArray(x); } void NullCheckVisitor::do_NewMultiArray (NewMultiArray* x) { nce()->handle_NewArray(x); } void NullCheckVisitor::do_CheckCast (CheckCast* x) { nce()->clear_last_explicit_null_check(); } void NullCheckVisitor::do_InstanceOf (InstanceOf* x) {}
*** 866,876 **** // the non-null map ciField* field = x->field(); if (field->is_constant()) { ciConstant field_val = field->constant_value(); BasicType field_type = field_val.basic_type(); ! if (field_type == T_OBJECT || field_type == T_ARRAY) { ciObject* obj_val = field_val.as_object(); if (!obj_val->is_null_object()) { if (PrintNullCheckElimination) { tty->print_cr("AccessField %d proven non-null by static final non-null oop check", x->id()); --- 869,879 ---- // the non-null map ciField* field = x->field(); if (field->is_constant()) { ciConstant field_val = field->constant_value(); BasicType field_type = field_val.basic_type(); ! if (field_type == T_OBJECT || field_type == T_ARRAY || field_type == T_VALUETYPE) { ciObject* obj_val = field_val.as_object(); if (!obj_val->is_null_object()) { if (PrintNullCheckElimination) { tty->print_cr("AccessField %d proven non-null by static final non-null oop check", x->id());
*** 1044,1053 **** --- 1047,1063 ---- if (PrintNullCheckElimination) { tty->print_cr("NewInstance %d is non-null", x->id()); } } + void NullCheckEliminator::handle_NewValueTypeInstance(NewValueTypeInstance* x) { + set_put(x); + if (PrintNullCheckElimination) { + tty->print_cr("NewValueTypeInstance %d is non-null", x->id()); + } + } + void NullCheckEliminator::handle_NewArray(NewArray* x) { set_put(x); if (PrintNullCheckElimination) { tty->print_cr("NewArray %d is non-null", x->id());
< prev index next >