--- old/src/hotspot/share/runtime/stubRoutines.hpp 2018-04-20 00:47:22.000000000 +0100 +++ new/src/hotspot/share/runtime/stubRoutines.hpp 2018-04-20 00:47:22.000000000 +0100 @@ -121,7 +121,8 @@ 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 @@ -206,6 +207,13 @@ static address _dlibm_tan_cot_huge; static address _dtan; + static address _cont_doYield; + static address _cont_thaw2; + static address _cont_thaw1; + static address _cont_returnBarrier; + static address _cont_getSP; + static address _cont_getPC; + // These are versions of the java.lang.Math methods which perform // the same operations as the intrinsic version. They are used for // constant folding in the compiler to ensure equivalence. If the @@ -230,6 +238,7 @@ // 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); } @@ -241,6 +250,7 @@ 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; } @@ -381,6 +391,14 @@ static address dlibm_tan_cot_huge() { return _dlibm_tan_cot_huge; } static address dtan() { return _dtan; } + static address cont_doYield() { return _cont_doYield; } + static address cont_thaw(int frames) { if (frames == 2) return _cont_thaw2; + if (frames == 1) return _cont_thaw1; + return NULL; } + static address cont_returnBarrier() { return _cont_returnBarrier; } + static address cont_getSP() { return _cont_getSP; } + static address cont_getPC() { return _cont_getPC; } + static address select_fill_function(BasicType t, bool aligned, const char* &name); static address zero_aligned_words() { return _zero_aligned_words; }