src/cpu/x86/vm/interpreter_x86_32.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6817525 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/interpreter_x86_32.cpp

Print this page




 216 
 217   // abstract method entry
 218 
 219   //  pop return address, reset last_sp to NULL
 220   __ empty_expression_stack();
 221   __ restore_bcp();      // rsi must be correct for exception handler   (was destroyed)
 222   __ restore_locals();   // make sure locals pointer is correct as well (was destroyed)
 223 
 224   // throw exception
 225   __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError));
 226   // the call_VM checks for exception, so we should never return here.
 227   __ should_not_reach_here();
 228 
 229   return entry_point;
 230 }
 231 
 232 
 233 // Method handle invoker
 234 // Dispatch a method of the form java.lang.invoke.MethodHandles::invoke(...)
 235 address InterpreterGenerator::generate_method_handle_entry(void) {
 236   if (!EnableMethodHandles) {
 237     return generate_abstract_entry();
 238   }
 239 
 240   address entry_point = MethodHandles::generate_method_handle_interpreter_entry(_masm);
 241 
 242   return entry_point;
 243 }
 244 
 245 
 246 // This method tells the deoptimizer how big an interpreted frame must be:
 247 int AbstractInterpreter::size_activation(methodOop method,
 248                                          int tempcount,
 249                                          int popframe_extra_args,
 250                                          int moncount,
 251                                          int callee_param_count,
 252                                          int callee_locals,
 253                                          bool is_top_frame) {
 254   return layout_activation(method,
 255                            tempcount,
 256                            popframe_extra_args,




 216 
 217   // abstract method entry
 218 
 219   //  pop return address, reset last_sp to NULL
 220   __ empty_expression_stack();
 221   __ restore_bcp();      // rsi must be correct for exception handler   (was destroyed)
 222   __ restore_locals();   // make sure locals pointer is correct as well (was destroyed)
 223 
 224   // throw exception
 225   __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_AbstractMethodError));
 226   // the call_VM checks for exception, so we should never return here.
 227   __ should_not_reach_here();
 228 
 229   return entry_point;
 230 }
 231 
 232 
 233 // Method handle invoker
 234 // Dispatch a method of the form java.lang.invoke.MethodHandles::invoke(...)
 235 address InterpreterGenerator::generate_method_handle_entry(void) {
 236   if (!EnableInvokeDynamic) {
 237     return generate_abstract_entry();
 238   }
 239 
 240   address entry_point = MethodHandles::generate_method_handle_interpreter_entry(_masm);
 241 
 242   return entry_point;
 243 }
 244 
 245 
 246 // This method tells the deoptimizer how big an interpreted frame must be:
 247 int AbstractInterpreter::size_activation(methodOop method,
 248                                          int tempcount,
 249                                          int popframe_extra_args,
 250                                          int moncount,
 251                                          int callee_param_count,
 252                                          int callee_locals,
 253                                          bool is_top_frame) {
 254   return layout_activation(method,
 255                            tempcount,
 256                            popframe_extra_args,


src/cpu/x86/vm/interpreter_x86_32.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File