< prev index next >

src/hotspot/share/runtime/stubRoutines.hpp

Print this page

        

@@ -159,11 +159,12 @@
   static jint    _mxcsr_std;
   static jint    _fpu_subnormal_bias1[3];
   static jint    _fpu_subnormal_bias2[3];
 
   static BufferBlob* _code1;                               // code buffer for initial routines
-  static BufferBlob* _code2;                               // code buffer for all other routines
+  static BufferBlob* _code2;
+  static BufferBlob* _code3;                               // code buffer for all other routines
 
   // Leaf routines which implement arraycopy and their addresses
   // arraycopy operands aligned on element type boundary
   static address _jbyte_arraycopy;
   static address _jshort_arraycopy;

@@ -245,10 +246,20 @@
   static address _dlibm_sin_cos_huge;
   static address _dlibm_reduce_pi04l;
   static address _dlibm_tan_cot_huge;
   static address _dtan;
 
+  static RuntimeStub* _cont_doYield_stub;
+  static address _cont_doYield;
+  static address _cont_jump_from_sp;
+  static address _cont_jump;
+  static address _cont_thaw;
+  static address _cont_returnBarrier;
+  static address _cont_returnBarrierExc;  
+  static address _cont_getSP;
+  static address _cont_getPC;
+
   // Safefetch stubs.
   static address _safefetch32_entry;
   static address _safefetch32_fault_pc;
   static address _safefetch32_continuation_pc;
   static address _safefetchN_entry;

@@ -257,10 +268,11 @@
 
  public:
   // Initialization/Testing
   static void    initialize1();                            // must happen before universe::genesis
   static void    initialize2();                            // must happen after  universe::genesis
+  static void    initializeContinuationStubs();            // must happen after  universe::genesis
 
   static bool is_stub_code(address addr)                   { return contains(addr); }
 
   static bool contains(address addr) {
     return

@@ -268,10 +280,11 @@
       (_code2 != NULL && _code2->blob_contains(addr)) ;
   }
 
   static RuntimeBlob* code1() { return _code1; }
   static RuntimeBlob* code2() { return _code2; }
+  static RuntimeBlob* code3() { return _code3; }
 
   // Debugging
   static jint    verify_oop_count()                        { return _verify_oop_count; }
   static jint*   verify_oop_count_addr()                   { return &_verify_oop_count; }
   // a subroutine for debugging the GC

@@ -410,10 +423,24 @@
   static address dlibm_reduce_pi04l()  { return _dlibm_reduce_pi04l; }
   static address dlibm_sin_cos_huge()  { return _dlibm_sin_cos_huge; }
   static address dlibm_tan_cot_huge()  { return _dlibm_tan_cot_huge; }
   static address dtan()                { return _dtan; }
 
+  typedef void (*cont_jump_from_sp_t)();
+
+  static RuntimeStub* cont_doYield_stub() { return _cont_doYield_stub; }
+  static address cont_doYield()        { return _cont_doYield; }
+  static address cont_jump_from_sp()   { return _cont_jump_from_sp; }
+  static address cont_jump()           { return _cont_jump; }
+  static address cont_thaw()           { return _cont_thaw; }
+  static address cont_returnBarrier()  { return _cont_returnBarrier; }
+  static address cont_returnBarrierExc(){return _cont_returnBarrierExc; }
+  static address cont_getSP()          { return _cont_getSP; }
+  static address cont_getPC()          { return _cont_getPC; }
+  static cont_jump_from_sp_t  cont_jump_from_sp_C() { return CAST_TO_FN_PTR(cont_jump_from_sp_t, _cont_jump_from_sp); }
+
+
   static address select_fill_function(BasicType t, bool aligned, const char* &name);
 
   static address zero_aligned_words()  { return _zero_aligned_words; }
 
   //
< prev index next >