56 bool _reexecute; // whether sould we reexecute this bytecode |
56 bool _reexecute; // whether sould we reexecute this bytecode |
57 Method* _method; // the method for this vframe |
57 Method* _method; // the method for this vframe |
58 MonitorChunk* _monitors; // active monitors for this vframe |
58 MonitorChunk* _monitors; // active monitors for this vframe |
59 StackValueCollection* _locals; |
59 StackValueCollection* _locals; |
60 StackValueCollection* _expressions; |
60 StackValueCollection* _expressions; |
|
61 #ifdef ASSERT |
|
62 bool _removed_monitors; |
|
63 #endif |
61 |
64 |
62 public: |
65 public: |
63 |
66 |
64 frame* iframe(void) { return &_frame; } |
67 frame* iframe(void) { return &_frame; } |
65 |
68 |
76 |
79 |
77 StackValueCollection* locals(void) const { return _locals; } |
80 StackValueCollection* locals(void) const { return _locals; } |
78 |
81 |
79 StackValueCollection* expressions(void) const { return _expressions; } |
82 StackValueCollection* expressions(void) const { return _expressions; } |
80 |
83 |
81 void fill_in(compiledVFrame* vf); |
84 void fill_in(compiledVFrame* vf, bool realloc_failures); |
82 |
85 |
83 // Formerly part of deoptimizedVFrame |
86 // Formerly part of deoptimizedVFrame |
84 |
87 |
85 |
88 |
86 // Returns the on stack word size for this frame |
89 // Returns the on stack word size for this frame |
158 |
167 |
159 // Accessores for instance variable |
168 // Accessores for instance variable |
160 int frames() const { return _frames; } |
169 int frames() const { return _frames; } |
161 |
170 |
162 static vframeArray* allocate(JavaThread* thread, int frame_size, GrowableArray<compiledVFrame*>* chunk, |
171 static vframeArray* allocate(JavaThread* thread, int frame_size, GrowableArray<compiledVFrame*>* chunk, |
163 RegisterMap* reg_map, frame sender, frame caller, frame self); |
172 RegisterMap* reg_map, frame sender, frame caller, frame self, |
|
173 bool realloc_failures); |
164 |
174 |
165 |
175 |
166 vframeArrayElement* element(int index) { assert(is_within_bounds(index), "Bad index"); return &_elements[index]; } |
176 vframeArrayElement* element(int index) { assert(is_within_bounds(index), "Bad index"); return &_elements[index]; } |
167 |
177 |
168 // Allocates a new vframe in the array and fills the array with vframe information in chunk |
178 // Allocates a new vframe in the array and fills the array with vframe information in chunk |
169 void fill_in(JavaThread* thread, int frame_size, GrowableArray<compiledVFrame*>* chunk, const RegisterMap *reg_map); |
179 void fill_in(JavaThread* thread, int frame_size, GrowableArray<compiledVFrame*>* chunk, const RegisterMap *reg_map, bool realloc_failures); |
170 |
180 |
171 // Returns the owner of this vframeArray |
181 // Returns the owner of this vframeArray |
172 JavaThread* owner_thread() const { return _owner_thread; } |
182 JavaThread* owner_thread() const { return _owner_thread; } |
173 |
183 |
174 // Accessors for next |
184 // Accessors for next |