Mercurial > hg > graal-compiler
comparison src/share/vm/runtime/deoptimization.hpp @ 3369:3d2ab563047a
7043461: VM crashes in void LinkResolver::runtime_resolve_virtual_method
Reviewed-by: kvn, coleenp
author | never |
---|---|
date | Thu, 12 May 2011 10:29:02 -0700 |
parents | bad7ecd0b6ed |
children | be4ca325525a 5432047c7db7 |
comparison
equal
deleted
inserted
replaced
3365:3cfb240033d1 | 3369:3d2ab563047a |
---|---|
136 intptr_t* _frame_sizes; // Array of frame sizes, in bytes, for unrolling the stack | 136 intptr_t* _frame_sizes; // Array of frame sizes, in bytes, for unrolling the stack |
137 address* _frame_pcs; // Array of frame pc's, in bytes, for unrolling the stack | 137 address* _frame_pcs; // Array of frame pc's, in bytes, for unrolling the stack |
138 intptr_t* _register_block; // Block for storing callee-saved registers. | 138 intptr_t* _register_block; // Block for storing callee-saved registers. |
139 BasicType _return_type; // Tells if we have to restore double or long return value | 139 BasicType _return_type; // Tells if we have to restore double or long return value |
140 intptr_t _initial_fp; // FP of the sender frame | 140 intptr_t _initial_fp; // FP of the sender frame |
141 int _caller_actual_parameters; // The number of actual arguments at the | |
142 // interpreted caller of the deoptimized frame | |
143 | |
141 // The following fields are used as temps during the unpacking phase | 144 // The following fields are used as temps during the unpacking phase |
142 // (which is tight on registers, especially on x86). They really ought | 145 // (which is tight on registers, especially on x86). They really ought |
143 // to be PD variables but that involves moving this class into its own | 146 // to be PD variables but that involves moving this class into its own |
144 // file to use the pd include mechanism. Maybe in a later cleanup ... | 147 // file to use the pd include mechanism. Maybe in a later cleanup ... |
145 intptr_t _counter_temp; // SHOULD BE PD VARIABLE (x86 frame count temp) | 148 intptr_t _counter_temp; // SHOULD BE PD VARIABLE (x86 frame count temp) |
147 intptr_t _sender_sp_temp; // SHOULD BE PD VARIABLE (x86 sender_sp) | 150 intptr_t _sender_sp_temp; // SHOULD BE PD VARIABLE (x86 sender_sp) |
148 public: | 151 public: |
149 // Constructor | 152 // Constructor |
150 UnrollBlock(int size_of_deoptimized_frame, | 153 UnrollBlock(int size_of_deoptimized_frame, |
151 int caller_adjustment, | 154 int caller_adjustment, |
155 int caller_actual_parameters, | |
152 int number_of_frames, | 156 int number_of_frames, |
153 intptr_t* frame_sizes, | 157 intptr_t* frame_sizes, |
154 address* frames_pcs, | 158 address* frames_pcs, |
155 BasicType return_type); | 159 BasicType return_type); |
156 ~UnrollBlock(); | 160 ~UnrollBlock(); |
165 | 169 |
166 // Returns the total size of frames | 170 // Returns the total size of frames |
167 int size_of_frames() const; | 171 int size_of_frames() const; |
168 | 172 |
169 void set_initial_fp(intptr_t fp) { _initial_fp = fp; } | 173 void set_initial_fp(intptr_t fp) { _initial_fp = fp; } |
174 | |
175 int caller_actual_parameters() const { return _caller_actual_parameters; } | |
170 | 176 |
171 // Accessors used by the code generator for the unpack stub. | 177 // Accessors used by the code generator for the unpack stub. |
172 static int size_of_deoptimized_frame_offset_in_bytes() { return offset_of(UnrollBlock, _size_of_deoptimized_frame); } | 178 static int size_of_deoptimized_frame_offset_in_bytes() { return offset_of(UnrollBlock, _size_of_deoptimized_frame); } |
173 static int caller_adjustment_offset_in_bytes() { return offset_of(UnrollBlock, _caller_adjustment); } | 179 static int caller_adjustment_offset_in_bytes() { return offset_of(UnrollBlock, _caller_adjustment); } |
174 static int number_of_frames_offset_in_bytes() { return offset_of(UnrollBlock, _number_of_frames); } | 180 static int number_of_frames_offset_in_bytes() { return offset_of(UnrollBlock, _number_of_frames); } |