comparison src/share/vm/runtime/deoptimization.hpp @ 22717:ba7846fcb814

Fix ppc and x86_32 after fetch_unroll_info_helper changes Changes in 3c1edc9c60d8 only included x86_64 and sparc. This change also reuses the existing unpack_kind instead of a new field in UnrollBlock.
author Gilles Duboscq <gilles.m.duboscq@oracle.com>
date Mon, 02 Nov 2015 15:33:53 +0100
parents 3c1edc9c60d8
children 3ef45d0a6d77
comparison
equal deleted inserted replaced
22716:f536aaa5a5d5 22717:ba7846fcb814
171 intptr_t* _register_block; // Block for storing callee-saved registers. 171 intptr_t* _register_block; // Block for storing callee-saved registers.
172 BasicType _return_type; // Tells if we have to restore double or long return value 172 BasicType _return_type; // Tells if we have to restore double or long return value
173 intptr_t _initial_info; // Platform dependent data for the sender frame (was FP on x86) 173 intptr_t _initial_info; // Platform dependent data for the sender frame (was FP on x86)
174 int _caller_actual_parameters; // The number of actual arguments at the 174 int _caller_actual_parameters; // The number of actual arguments at the
175 // interpreted caller of the deoptimized frame 175 // interpreted caller of the deoptimized frame
176 int _exec_mode; // exec_mode that can be changed during fetch_unroll_info 176 int _unpack_kind; // exec_mode that can be changed during fetch_unroll_info
177 177
178 // The following fields are used as temps during the unpacking phase 178 // The following fields are used as temps during the unpacking phase
179 // (which is tight on registers, especially on x86). They really ought 179 // (which is tight on registers, especially on x86). They really ought
180 // to be PD variables but that involves moving this class into its own 180 // to be PD variables but that involves moving this class into its own
181 // file to use the pd include mechanism. Maybe in a later cleanup ... 181 // file to use the pd include mechanism. Maybe in a later cleanup ...
182 intptr_t _counter_temp; // SHOULD BE PD VARIABLE (x86 frame count temp) 182 intptr_t _counter_temp; // SHOULD BE PD VARIABLE (x86 frame count temp)
183 intptr_t _unpack_kind; // SHOULD BE PD VARIABLE (x86 unpack kind)
184 intptr_t _sender_sp_temp; // SHOULD BE PD VARIABLE (x86 sender_sp) 183 intptr_t _sender_sp_temp; // SHOULD BE PD VARIABLE (x86 sender_sp)
185 public: 184 public:
186 // Constructor 185 // Constructor
187 UnrollBlock(int size_of_deoptimized_frame, 186 UnrollBlock(int size_of_deoptimized_frame,
188 int caller_adjustment, 187 int caller_adjustment,
189 int caller_actual_parameters, 188 int caller_actual_parameters,
190 int number_of_frames, 189 int number_of_frames,
191 intptr_t* frame_sizes, 190 intptr_t* frame_sizes,
192 address* frames_pcs, 191 address* frames_pcs,
193 BasicType return_type, 192 BasicType return_type,
194 int exec_mode); 193 int unpack_kind);
195 ~UnrollBlock(); 194 ~UnrollBlock();
196 195
197 // Returns where a register is located. 196 // Returns where a register is located.
198 intptr_t* value_addr_at(int register_number) const; 197 intptr_t* value_addr_at(int register_number) const;
199 198
200 // Accessors 199 // Accessors
201 intptr_t* frame_sizes() const { return _frame_sizes; } 200 intptr_t* frame_sizes() const { return _frame_sizes; }
202 int number_of_frames() const { return _number_of_frames; } 201 int number_of_frames() const { return _number_of_frames; }
203 address* frame_pcs() const { return _frame_pcs ; } 202 address* frame_pcs() const { return _frame_pcs ; }
204 int exec_mode() const { return _exec_mode ; } 203 int unpack_kind() const { return _unpack_kind; }
205 204
206 // Returns the total size of frames 205 // Returns the total size of frames
207 int size_of_frames() const; 206 int size_of_frames() const;
208 207
209 void set_initial_info(intptr_t info) { _initial_info = info; } 208 void set_initial_info(intptr_t info) { _initial_info = info; }
221 static int return_type_offset_in_bytes() { return offset_of(UnrollBlock, _return_type); } 220 static int return_type_offset_in_bytes() { return offset_of(UnrollBlock, _return_type); }
222 static int counter_temp_offset_in_bytes() { return offset_of(UnrollBlock, _counter_temp); } 221 static int counter_temp_offset_in_bytes() { return offset_of(UnrollBlock, _counter_temp); }
223 static int initial_info_offset_in_bytes() { return offset_of(UnrollBlock, _initial_info); } 222 static int initial_info_offset_in_bytes() { return offset_of(UnrollBlock, _initial_info); }
224 static int unpack_kind_offset_in_bytes() { return offset_of(UnrollBlock, _unpack_kind); } 223 static int unpack_kind_offset_in_bytes() { return offset_of(UnrollBlock, _unpack_kind); }
225 static int sender_sp_temp_offset_in_bytes() { return offset_of(UnrollBlock, _sender_sp_temp); } 224 static int sender_sp_temp_offset_in_bytes() { return offset_of(UnrollBlock, _sender_sp_temp); }
226 static int exec_mode_offset_in_bytes() { return offset_of(UnrollBlock, _exec_mode); }
227 225
228 BasicType return_type() const { return _return_type; } 226 BasicType return_type() const { return _return_type; }
229 void print(); 227 void print();
230 }; 228 };
231 229