< prev index next >

src/hotspot/share/opto/library_call.cpp

Print this page

        

@@ -2455,11 +2455,11 @@
       }
       base = vt->get_oop();
     } else {
       if (offset->is_Con()) {
         long off = find_long_con(offset, 0);
-        ciValueKlass* vk = _gvn.type(vt)->is_valuetype()->value_klass();
+        ciValueKlass* vk = vt->type()->value_klass();
         if ((long)(int)off != off || !vk->contains_field_offset(off)) {
           return false;
         }
 
         ciField* f = vk->get_non_flattened_field_by_offset((int)off);

@@ -2565,18 +2565,17 @@
       }
     } else if (adr_type->isa_aryptr()) {
       const Type* elem = adr_type->is_aryptr()->elem();
       if (!elem->isa_valuetype()) {
         mismatched = true;
-      } else if (elem->is_valuetype()->value_klass() != value_klass) {
+      } else if (elem->value_klass() != value_klass) {
         mismatched = true;
       }
     }
     if (is_store) {
       const Type* val_t = _gvn.type(val);
-      if (!val_t->isa_valuetype() ||
-          val_t->is_valuetype()->value_klass() != value_klass) {
+      if (!val_t->isa_valuetype() || val_t->value_klass() != value_klass) {
         return false;
       }
     }
   }
 

@@ -3529,12 +3528,11 @@
     return false;  // dead path
   }
 
   ciKlass* obj_klass = NULL;
   if (obj->is_ValueType()) {
-    const TypeValueType* tvt = _gvn.type(obj)->is_valuetype();
-    obj_klass = tvt->value_klass();
+    obj_klass = _gvn.type(obj)->value_klass();
   } else {
     const TypeOopPtr* tp = _gvn.type(obj)->isa_oopptr();
     if (tp != NULL) {
       obj_klass = tp->klass();
     }

@@ -3596,11 +3594,11 @@
     // TODO move this into do_checkcast?
     if (EnableValhalla && !obj->is_ValueType() && !is_val_type) {
       // Check if (mirror == value_mirror && obj == null)
       RegionNode* r = new RegionNode(3);
       Node* p = basic_plus_adr(mirror, java_lang_Class::value_mirror_offset_in_bytes());
-      Node* value_mirror = access_load_at(mirror, p, _gvn.type(p)->is_ptr(), TypeInstPtr::MIRROR, T_OBJECT, IN_HEAP);
+      Node* value_mirror = access_load_at(mirror, p, _gvn.type(p)->is_ptr(), TypeInstPtr::MIRROR->cast_to_ptr_type(TypePtr::BotPTR), T_OBJECT, IN_HEAP);
       Node* cmp = _gvn.transform(new CmpPNode(mirror, value_mirror));
       Node* bol = _gvn.transform(new BoolNode(cmp, BoolTest::ne));
       Node* if_ne = generate_fair_guard(bol, NULL);
       r->init_req(1, if_ne);
 

@@ -4324,11 +4322,11 @@
 //
 // Build special case code for calls to getClass on an object.
 bool LibraryCallKit::inline_native_getClass() {
   Node* obj = argument(0);
   if (obj->is_ValueType()) {
-    ciKlass* vk = _gvn.type(obj)->is_valuetype()->value_klass();
+    ciKlass* vk = _gvn.type(obj)->value_klass();
     set_result(makecon(TypeInstPtr::make(vk->java_mirror())));
     return true;
   }
   obj = null_check_receiver();
   if (stopped())  return true;

@@ -5205,17 +5203,17 @@
     top_src  = src_type->isa_aryptr();
 
     if (top_dest != NULL &&
         top_dest->elem()->make_oopptr() != NULL &&
         top_dest->elem()->make_oopptr()->can_be_value_type()) {
-      generate_valueArray_guard(load_object_klass(dest), slow_region);
+      generate_valueArray_guard(dest_klass, slow_region);
     }
 
     if (top_src != NULL &&
         top_src->elem()->make_oopptr() != NULL &&
         top_src->elem()->make_oopptr()->can_be_value_type()) {
-      generate_valueArray_guard(load_object_klass(src), slow_region);
+      generate_valueArray_guard(src_klass, slow_region);
     }
 
     {
       PreserveJVMState pjvms(this);
       set_control(_gvn.transform(slow_region));
< prev index next >