src/share/vm/c1/c1_LIR.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8068945-8u-patched Sdiff src/share/vm/c1

src/share/vm/c1/c1_LIR.hpp

Print this page
rev 7386 : 8068945: Use RBP register as proper frame pointer in JIT compiled code on x86
Summary: Introduce the PreserveFramePointer flag to control if RBP is used as the frame pointer or as a general purpose register.
Reviewed-by: kvn, roland, dlong, enevill, shade


1199   , _receiver(receiver)
1200   , _method(method)
1201   , _method_handle_invoke_SP_save_opr(LIR_OprFact::illegalOpr)
1202   { assert(is_in_range(code, begin_opJavaCall, end_opJavaCall), "code check"); }
1203 
1204   LIR_OpJavaCall(LIR_Code code, ciMethod* method,
1205                  LIR_Opr receiver, LIR_Opr result, intptr_t vtable_offset,
1206                  LIR_OprList* arguments, CodeEmitInfo* info)
1207   : LIR_OpCall(code, (address)vtable_offset, result, arguments, info)
1208   , _receiver(receiver)
1209   , _method(method)
1210   , _method_handle_invoke_SP_save_opr(LIR_OprFact::illegalOpr)
1211   { assert(is_in_range(code, begin_opJavaCall, end_opJavaCall), "code check"); }
1212 
1213   LIR_Opr receiver() const                       { return _receiver; }
1214   ciMethod* method() const                       { return _method;   }
1215 
1216   // JSR 292 support.
1217   bool is_invokedynamic() const                  { return code() == lir_dynamic_call; }
1218   bool is_method_handle_invoke() const {
1219     return
1220       method()->is_compiled_lambda_form()  // Java-generated adapter
1221       ||
1222       method()->is_method_handle_intrinsic();  // JVM-generated MH intrinsic
1223   }
1224 
1225   intptr_t vtable_offset() const {
1226     assert(_code == lir_virtual_call, "only have vtable for real vcall");
1227     return (intptr_t) addr();
1228   }
1229 
1230   virtual void emit_code(LIR_Assembler* masm);
1231   virtual LIR_OpJavaCall* as_OpJavaCall() { return this; }
1232   virtual void print_instr(outputStream* out) const PRODUCT_RETURN;
1233 };
1234 
1235 // --------------------------------------------------
1236 // LIR_OpLabel
1237 // --------------------------------------------------
1238 // Location where a branch can continue
1239 class LIR_OpLabel: public LIR_Op {
1240  friend class LIR_OpVisitState;
1241 




1199   , _receiver(receiver)
1200   , _method(method)
1201   , _method_handle_invoke_SP_save_opr(LIR_OprFact::illegalOpr)
1202   { assert(is_in_range(code, begin_opJavaCall, end_opJavaCall), "code check"); }
1203 
1204   LIR_OpJavaCall(LIR_Code code, ciMethod* method,
1205                  LIR_Opr receiver, LIR_Opr result, intptr_t vtable_offset,
1206                  LIR_OprList* arguments, CodeEmitInfo* info)
1207   : LIR_OpCall(code, (address)vtable_offset, result, arguments, info)
1208   , _receiver(receiver)
1209   , _method(method)
1210   , _method_handle_invoke_SP_save_opr(LIR_OprFact::illegalOpr)
1211   { assert(is_in_range(code, begin_opJavaCall, end_opJavaCall), "code check"); }
1212 
1213   LIR_Opr receiver() const                       { return _receiver; }
1214   ciMethod* method() const                       { return _method;   }
1215 
1216   // JSR 292 support.
1217   bool is_invokedynamic() const                  { return code() == lir_dynamic_call; }
1218   bool is_method_handle_invoke() const {
1219     return method()->is_compiled_lambda_form() ||   // Java-generated lambda form


1220            method()->is_method_handle_intrinsic();  // JVM-generated MH intrinsic
1221   }
1222 
1223   intptr_t vtable_offset() const {
1224     assert(_code == lir_virtual_call, "only have vtable for real vcall");
1225     return (intptr_t) addr();
1226   }
1227 
1228   virtual void emit_code(LIR_Assembler* masm);
1229   virtual LIR_OpJavaCall* as_OpJavaCall() { return this; }
1230   virtual void print_instr(outputStream* out) const PRODUCT_RETURN;
1231 };
1232 
1233 // --------------------------------------------------
1234 // LIR_OpLabel
1235 // --------------------------------------------------
1236 // Location where a branch can continue
1237 class LIR_OpLabel: public LIR_Op {
1238  friend class LIR_OpVisitState;
1239 


src/share/vm/c1/c1_LIR.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File