39
40 // Metadata stored in the continuation entry frame
41 class ContinuationEntry {
42 ContinuationEntryPD _pd;
43 #ifdef ASSERT
44 private:
45 static const int COOKIE_VALUE = 0x1234;
46 int cookie;
47
48 public:
49 static int cookie_value() { return COOKIE_VALUE; }
50 static ByteSize cookie_offset() { return byte_offset_of(ContinuationEntry, cookie); }
51
52 void verify_cookie() {
53 assert(cookie == COOKIE_VALUE, "Bad cookie: %#x, expected: %#x", cookie, COOKIE_VALUE);
54 }
55 #endif
56
57 public:
58 static int _return_pc_offset; // friend gen_continuation_enter
59 static void set_enter_code(nmethod* nm, int interpreted_entry_offset);
60 static bool is_interpreted_call(address call_address);
61
62 private:
63 static address _return_pc;
64 static nmethod* _enter_special;
65 static int _interpreted_entry_offset;
66
67 private:
68 ContinuationEntry* _parent;
69 oopDesc* _cont;
70 oopDesc* _chunk;
71 int _flags;
72 // Size in words of the stack arguments of the bottom frame on stack if compiled 0 otherwise.
73 // The caller (if there is one) is the still frozen top frame in the StackChunk.
74 int _argsize;
75 intptr_t* _parent_cont_fastpath;
76 #ifdef _LP64
77 int64_t _parent_held_monitor_count;
78 #else
|
39
40 // Metadata stored in the continuation entry frame
41 class ContinuationEntry {
42 ContinuationEntryPD _pd;
43 #ifdef ASSERT
44 private:
45 static const int COOKIE_VALUE = 0x1234;
46 int cookie;
47
48 public:
49 static int cookie_value() { return COOKIE_VALUE; }
50 static ByteSize cookie_offset() { return byte_offset_of(ContinuationEntry, cookie); }
51
52 void verify_cookie() {
53 assert(cookie == COOKIE_VALUE, "Bad cookie: %#x, expected: %#x", cookie, COOKIE_VALUE);
54 }
55 #endif
56
57 public:
58 static int _return_pc_offset; // friend gen_continuation_enter
59 static int _thaw_call_pc_offset;
60 static address _thaw_call_pc;
61 static void set_enter_code(nmethod* nm, int interpreted_entry_offset);
62 static bool is_interpreted_call(address call_address);
63
64 private:
65 static address _return_pc;
66 static nmethod* _enter_special;
67 static int _interpreted_entry_offset;
68
69 private:
70 ContinuationEntry* _parent;
71 oopDesc* _cont;
72 oopDesc* _chunk;
73 int _flags;
74 // Size in words of the stack arguments of the bottom frame on stack if compiled 0 otherwise.
75 // The caller (if there is one) is the still frozen top frame in the StackChunk.
76 int _argsize;
77 intptr_t* _parent_cont_fastpath;
78 #ifdef _LP64
79 int64_t _parent_held_monitor_count;
80 #else
|