--- old/src/share/vm/opto/runtime.cpp 2017-04-04 15:20:33.084080708 -0700 +++ new/src/share/vm/opto/runtime.cpp 2017-04-04 15:20:32.964081205 -0700 @@ -1558,6 +1558,24 @@ 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(2); + // Thread-local storage + fields[TypeFunc::Parms+0] = TypeRawPtr::BOTTOM; + // oop; newly allocated object + fields[TypeFunc::Parms+1] = TypeInstPtr::NOTNULL; + + const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+2, 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");