< 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 >