< prev index next >

src/hotspot/share/interpreter/templateInterpreterGenerator.cpp

Print this page

        

@@ -101,10 +101,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

@@ -115,10 +132,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));
     }
   }
 

@@ -226,10 +244,18 @@
   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_jump)
+  method_entry(java_lang_continuation_runLevel)
+
 #undef method_entry
 
   // Bytecodes
   set_entry_points_for_all_bytes();
 

@@ -430,10 +456,24 @@
   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_jump
+                                           : entry_point = generate_Continuation_jump_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 >