< prev index next >

src/share/vm/opto/runtime.cpp

Print this page

        

@@ -1556,10 +1556,32 @@
   const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0,fields);
 
   return TypeFunc::make(domain,range);
 }
 
+const TypeFunc *OptoRuntime::heap_object_alloc_Type() {
+  // Keep it separate so that we don't have to worry if they change it.
+  // create input type (domain)
+  const Type **fields = TypeTuple::fields(3 LP64_ONLY( + 1));
+
+  // Thread-local storage
+  fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM;
+  // oop;    newly allocated object
+  fields[TypeFunc::Parms+1] = TypeInstPtr::NOTNULL;
+  // byte size of object
+  fields[TypeFunc::Parms+2] = TypeX_X;
+  // other half of long length
+  LP64_ONLY(fields[TypeFunc::Parms+3] = Type::HALF);
+
+  const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+4, fields);
+  // create result type (range)
+  fields = TypeTuple::fields(0);
+
+  const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields);
+
+  return TypeFunc::make(domain, range);
+}
 
 JRT_ENTRY_NO_ASYNC(void, OptoRuntime::register_finalizer(oopDesc* obj, JavaThread* thread))
   assert(obj->is_oop(), "must be a valid oop");
   assert(obj->klass()->has_finalizer(), "shouldn't be here otherwise");
   InstanceKlass::register_finalizer(instanceOop(obj), CHECK);
< prev index next >