comparison src/share/vm/runtime/deoptimization.hpp @ 2338:4f148718983e

7025485: leverage shared x86-only deoptimization code Summary: removed an ifdef IA32 around harmless code useful for some ports Reviewed-by: chrisphi, never
author bdelsart
date Thu, 10 Mar 2011 17:44:32 +0100
parents f95d63e2154a
children 1d1603768966
comparison
equal deleted inserted replaced
2336:df1347358fe6 2338:4f148718983e
134 int _total_frame_sizes; // Total of number*sizes frames 134 int _total_frame_sizes; // Total of number*sizes frames
135 intptr_t* _frame_sizes; // Array of frame sizes, in bytes, for unrolling the stack 135 intptr_t* _frame_sizes; // Array of frame sizes, in bytes, for unrolling the stack
136 address* _frame_pcs; // Array of frame pc's, in bytes, for unrolling the stack 136 address* _frame_pcs; // Array of frame pc's, in bytes, for unrolling the stack
137 intptr_t* _register_block; // Block for storing callee-saved registers. 137 intptr_t* _register_block; // Block for storing callee-saved registers.
138 BasicType _return_type; // Tells if we have to restore double or long return value 138 BasicType _return_type; // Tells if we have to restore double or long return value
139 intptr_t _initial_fp; // FP of the sender frame
139 // The following fields are used as temps during the unpacking phase 140 // The following fields are used as temps during the unpacking phase
140 // (which is tight on registers, especially on x86). They really ought 141 // (which is tight on registers, especially on x86). They really ought
141 // to be PD variables but that involves moving this class into its own 142 // to be PD variables but that involves moving this class into its own
142 // file to use the pd include mechanism. Maybe in a later cleanup ... 143 // file to use the pd include mechanism. Maybe in a later cleanup ...
143 intptr_t _counter_temp; // SHOULD BE PD VARIABLE (x86 frame count temp) 144 intptr_t _counter_temp; // SHOULD BE PD VARIABLE (x86 frame count temp)
144 intptr_t _initial_fp; // SHOULD BE PD VARIABLE (x86/c2 initial ebp)
145 intptr_t _unpack_kind; // SHOULD BE PD VARIABLE (x86 unpack kind) 145 intptr_t _unpack_kind; // SHOULD BE PD VARIABLE (x86 unpack kind)
146 intptr_t _sender_sp_temp; // SHOULD BE PD VARIABLE (x86 sender_sp) 146 intptr_t _sender_sp_temp; // SHOULD BE PD VARIABLE (x86 sender_sp)
147 public: 147 public:
148 // Constructor 148 // Constructor
149 UnrollBlock(int size_of_deoptimized_frame, 149 UnrollBlock(int size_of_deoptimized_frame,
162 int number_of_frames() const { return _number_of_frames; } 162 int number_of_frames() const { return _number_of_frames; }
163 address* frame_pcs() const { return _frame_pcs ; } 163 address* frame_pcs() const { return _frame_pcs ; }
164 164
165 // Returns the total size of frames 165 // Returns the total size of frames
166 int size_of_frames() const; 166 int size_of_frames() const;
167
168 void set_initial_fp(intptr_t fp) { _initial_fp = fp; }
167 169
168 // Accessors used by the code generator for the unpack stub. 170 // Accessors used by the code generator for the unpack stub.
169 static int size_of_deoptimized_frame_offset_in_bytes() { return offset_of(UnrollBlock, _size_of_deoptimized_frame); } 171 static int size_of_deoptimized_frame_offset_in_bytes() { return offset_of(UnrollBlock, _size_of_deoptimized_frame); }
170 static int caller_adjustment_offset_in_bytes() { return offset_of(UnrollBlock, _caller_adjustment); } 172 static int caller_adjustment_offset_in_bytes() { return offset_of(UnrollBlock, _caller_adjustment); }
171 static int number_of_frames_offset_in_bytes() { return offset_of(UnrollBlock, _number_of_frames); } 173 static int number_of_frames_offset_in_bytes() { return offset_of(UnrollBlock, _number_of_frames); }