< prev index next >

src/hotspot/share/c1/c1_Optimizer.cpp

Print this page

@@ -500,10 +500,11 @@
   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,10 +649,11 @@
   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,10 +688,11 @@
 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,11 +863,11 @@
       // 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) {
+        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,10 +1041,17 @@
   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 >