< prev index next >
src/hotspot/share/c1/c1_Optimizer.cpp
Print this page
*** 500,509 ****
--- 500,510 ----
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);
*** 648,657 ****
--- 649,659 ----
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);
*** 686,695 ****
--- 688,698 ----
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) {}
*** 860,870 ****
// 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());
--- 863,873 ----
// 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());
*** 1038,1047 ****
--- 1041,1057 ----
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 >