159 Register arg_1, Register arg_2, Register arg_3);
160
161 // Generate a subtype check: branch to ok_is_subtype if sub_klass is
162 // a subtype of super_klass.
163 void gen_subtype_check( Register sub_klass, Label &ok_is_subtype );
164
165 // Dispatching
166 void dispatch_prolog(TosState state, int step = 0);
167 void dispatch_epilog(TosState state, int step = 0);
168 // dispatch via ebx (assume ebx is loaded already)
169 void dispatch_only(TosState state);
170 // dispatch normal table via ebx (assume ebx is loaded already)
171 void dispatch_only_normal(TosState state);
172 void dispatch_only_noverify(TosState state);
173 // load ebx from [esi + step] and dispatch via ebx
174 void dispatch_next(TosState state, int step = 0);
175 // load ebx from [esi] and dispatch via ebx and table
176 void dispatch_via (TosState state, address* table);
177
178 // jump to an invoked target
179 void jump_from_interpreted(Register method, Register temp);
180
181
182 // Returning from interpreted functions
183 //
184 // Removes the current activation (incl. unlocking of monitors)
185 // and sets up the return address. This code is also used for
186 // exception unwindwing. In that case, we do not want to throw
187 // IllegalMonitorStateExceptions, since that might get us into an
188 // infinite rethrow exception loop.
189 // Additionally this code is used for popFrame and earlyReturn.
190 // In popFrame case we want to skip throwing an exception,
191 // installing an exception, and notifying jvmdi.
192 // In earlyReturn case we only want to skip throwing an exception
193 // and installing an exception.
194 void remove_activation(TosState state, Register ret_addr,
195 bool throw_monitor_exception = true,
196 bool install_monitor_exception = true,
197 bool notify_jvmdi = true);
198 #endif // CC_INTERP
|
159 Register arg_1, Register arg_2, Register arg_3);
160
161 // Generate a subtype check: branch to ok_is_subtype if sub_klass is
162 // a subtype of super_klass.
163 void gen_subtype_check( Register sub_klass, Label &ok_is_subtype );
164
165 // Dispatching
166 void dispatch_prolog(TosState state, int step = 0);
167 void dispatch_epilog(TosState state, int step = 0);
168 // dispatch via ebx (assume ebx is loaded already)
169 void dispatch_only(TosState state);
170 // dispatch normal table via ebx (assume ebx is loaded already)
171 void dispatch_only_normal(TosState state);
172 void dispatch_only_noverify(TosState state);
173 // load ebx from [esi + step] and dispatch via ebx
174 void dispatch_next(TosState state, int step = 0);
175 // load ebx from [esi] and dispatch via ebx and table
176 void dispatch_via (TosState state, address* table);
177
178 // jump to an invoked target
179 void prepare_to_jump_from_interpreted();
180 void jump_from_interpreted(Register method, Register temp);
181
182
183 // Returning from interpreted functions
184 //
185 // Removes the current activation (incl. unlocking of monitors)
186 // and sets up the return address. This code is also used for
187 // exception unwindwing. In that case, we do not want to throw
188 // IllegalMonitorStateExceptions, since that might get us into an
189 // infinite rethrow exception loop.
190 // Additionally this code is used for popFrame and earlyReturn.
191 // In popFrame case we want to skip throwing an exception,
192 // installing an exception, and notifying jvmdi.
193 // In earlyReturn case we only want to skip throwing an exception
194 // and installing an exception.
195 void remove_activation(TosState state, Register ret_addr,
196 bool throw_monitor_exception = true,
197 bool install_monitor_exception = true,
198 bool notify_jvmdi = true);
199 #endif // CC_INTERP
|