< prev index next >

src/hotspot/share/opto/runtime.cpp

Print this page

        

*** 101,110 **** --- 101,111 ---- address OptoRuntime::_monitor_notifyAll_Java = NULL; address OptoRuntime::_rethrow_Java = NULL; address OptoRuntime::_slow_arraycopy_Java = NULL; address OptoRuntime::_register_finalizer_Java = NULL; + address OptoRuntime::_continuation_getFP_Java = NULL; ExceptionBlob* OptoRuntime::_exception_blob; // This should be called in an assertion at the start of OptoRuntime routines // which are entered from compiled code (all of them)
*** 144,153 **** --- 145,155 ---- gen(env, _monitor_notifyAll_Java , monitor_notify_Type , monitor_notifyAll_C , 0 , false, false, false); gen(env, _rethrow_Java , rethrow_Type , rethrow_C , 2 , true , false, true ); gen(env, _slow_arraycopy_Java , slow_arraycopy_Type , SharedRuntime::slow_arraycopy_C , 0 , false, false, false); gen(env, _register_finalizer_Java , register_finalizer_Type , register_finalizer , 0 , false, false, false); + gen(env, _continuation_getFP_Java , void_long_Type , SharedRuntime::continuation_getFP, 0 , false, false, false); return true; } #undef gen
*** 690,699 **** --- 692,741 ---- const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+2, fields); return TypeFunc::make(domain, range); } + const TypeFunc* OptoRuntime::void_void_Type() { + // create input type (domain) + const Type **fields = TypeTuple::fields(0); + const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+0, fields); + + // create result type (range) + fields = TypeTuple::fields(0); + const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields); + return TypeFunc::make(domain, range); + } + + const TypeFunc* OptoRuntime::continuation_doYield_Type() { + const Type**fields = TypeTuple::fields(1); + fields[TypeFunc::Parms+0] = TypeInt::INT; + const TypeTuple *args = TypeTuple::make(TypeFunc::Parms+1, fields); + + fields = TypeTuple::fields(1); + fields[TypeFunc::Parms+0] = TypeInt::INT; + const TypeTuple *result = TypeTuple::make(TypeFunc::Parms+1, fields); + + return TypeFunc::make(args, result); + } + + const TypeFunc* OptoRuntime::continuation_jump_Type() { + // create input type (domain) + const Type **fields = TypeTuple::fields(6); + fields[TypeFunc::Parms+0] = TypeLong::LONG; + fields[TypeFunc::Parms+1] = Type::HALF; + fields[TypeFunc::Parms+2] = TypeLong::LONG; + fields[TypeFunc::Parms+3] = Type::HALF; + fields[TypeFunc::Parms+4] = TypeLong::LONG; + fields[TypeFunc::Parms+5] = Type::HALF; + const TypeTuple *domain = TypeTuple::make(TypeFunc::Parms+6, fields); + + // create result type (range) + fields = TypeTuple::fields(0); + const TypeTuple *range = TypeTuple::make(TypeFunc::Parms+0, fields); + return TypeFunc::make(domain, range); + } + // arraycopy stub variations: enum ArrayCopyType { ac_fast, // void(ptr, ptr, size_t) ac_checkcast, // int(ptr, ptr, size_t, size_t, ptr) ac_slow, // void(ptr, int, ptr, int, int)
< prev index next >