< prev index next >
src/hotspot/share/interpreter/templateInterpreterGenerator.cpp
Print this page
rev 50307 : [mq]: cont
@@ -100,10 +100,27 @@
generate_return_entry_for(ftos, i, index_size),
generate_return_entry_for(dtos, i, index_size),
generate_return_entry_for(vtos, i, index_size)
);
}
+ Interpreter::_return_entryX[0] = EntryPoint();
+ for (int i = 1; i < Interpreter::number_of_return_entries; i++) {
+ address return_itos = generate_return_entry_for(itos, i, index_size, true);
+ Interpreter::_return_entryX[i] =
+ EntryPoint(
+ return_itos,
+ return_itos,
+ return_itos,
+ return_itos,
+ generate_return_entry_for(atos, i, index_size, true),
+ return_itos,
+ generate_return_entry_for(ltos, i, index_size, true),
+ generate_return_entry_for(ftos, i, index_size, true),
+ generate_return_entry_for(dtos, i, index_size, true),
+ generate_return_entry_for(vtos, i, index_size, true)
+ );
+ }
}
{ CodeletMark cm(_masm, "invoke return entry points");
// These states are in order specified in TosState, except btos/ztos/ctos/stos are
// really the same as itos since there is no top of stack optimization for these types
@@ -114,10 +131,11 @@
for (int i = 0; i < Interpreter::number_of_return_addrs; i++) {
TosState state = states[i];
assert(state != ilgl, "states array is wrong above");
Interpreter::_invoke_return_entry[i] = generate_return_entry_for(state, invoke_length, sizeof(u2));
+ Interpreter::_invoke_return_entryX[i] = generate_return_entry_for(state, invoke_length, sizeof(u2), true);
Interpreter::_invokeinterface_return_entry[i] = generate_return_entry_for(state, invokeinterface_length, sizeof(u2));
Interpreter::_invokedynamic_return_entry[i] = generate_return_entry_for(state, invokedynamic_length, sizeof(u4));
}
}
@@ -225,10 +243,17 @@
method_entry(java_lang_Float_intBitsToFloat);
method_entry(java_lang_Float_floatToRawIntBits);
method_entry(java_lang_Double_longBitsToDouble);
method_entry(java_lang_Double_doubleToRawLongBits);
+ method_entry(java_lang_continuation_getSP)
+ method_entry(java_lang_continuation_getFP)
+ method_entry(java_lang_continuation_getPC)
+ method_entry(java_lang_continuation_doContinue)
+ method_entry(java_lang_continuation_doYield)
+ method_entry(java_lang_continuation_runLevel)
+
#undef method_entry
// Bytecodes
set_entry_points_for_all_bytes();
@@ -429,10 +454,22 @@
case Interpreter::java_lang_math_exp : // fall thru
case Interpreter::java_lang_math_fmaD : // fall thru
case Interpreter::java_lang_math_fmaF : entry_point = generate_math_entry(kind); break;
case Interpreter::java_lang_ref_reference_get
: entry_point = generate_Reference_get_entry(); break;
+ case Interpreter::java_lang_continuation_getSP
+ : entry_point = generate_Continuation_getSP_entry(); break;
+ case Interpreter::java_lang_continuation_getFP
+ : entry_point = generate_Continuation_getFP_entry(); break;
+ case Interpreter::java_lang_continuation_getPC
+ : entry_point = generate_Continuation_getPC_entry(); break;
+ case Interpreter::java_lang_continuation_doContinue
+ : entry_point = generate_Continuation_doContinue_entry(); break;
+ case Interpreter::java_lang_continuation_doYield
+ : entry_point = generate_Continuation_doYield_entry(); break;
+ case Interpreter::java_lang_continuation_runLevel
+ : entry_point = generate_Continuation_runLevel_entry(); break;
case Interpreter::java_util_zip_CRC32_update
: native = true; entry_point = generate_CRC32_update_entry(); break;
case Interpreter::java_util_zip_CRC32_updateBytes
: // fall thru
case Interpreter::java_util_zip_CRC32_updateByteBuffer
< prev index next >