< prev index next >

src/hotspot/share/c1/c1_LIR.hpp

Print this page


1216 
1217   LIR_Opr receiver() const                       { return _receiver; }
1218   ciMethod* method() const                       { return _method;   }
1219 
1220   // JSR 292 support.
1221   bool is_invokedynamic() const                  { return code() == lir_dynamic_call; }
1222   bool is_method_handle_invoke() const {
1223     return method()->is_compiled_lambda_form() ||   // Java-generated lambda form
1224            method()->is_method_handle_intrinsic();  // JVM-generated MH intrinsic
1225   }
1226 
1227   intptr_t vtable_offset() const {
1228     assert(_code == lir_virtual_call, "only have vtable for real vcall");
1229     return (intptr_t) addr();
1230   }
1231 
1232   virtual void emit_code(LIR_Assembler* masm);
1233   virtual LIR_OpJavaCall* as_OpJavaCall() { return this; }
1234   virtual void print_instr(outputStream* out) const PRODUCT_RETURN;
1235 
1236   bool maybe_return_as_fields() const;
1237 };
1238 
1239 // --------------------------------------------------
1240 // LIR_OpLabel
1241 // --------------------------------------------------
1242 // Location where a branch can continue
1243 class LIR_OpLabel: public LIR_Op {
1244  friend class LIR_OpVisitState;
1245 
1246  private:
1247   Label* _label;
1248  public:
1249   LIR_OpLabel(Label* lbl)
1250    : LIR_Op(lir_label, LIR_OprFact::illegalOpr, NULL)
1251    , _label(lbl)                                 {}
1252   Label* label() const                           { return _label; }
1253 
1254   virtual void emit_code(LIR_Assembler* masm);
1255   virtual LIR_OpLabel* as_OpLabel() { return this; }
1256   virtual void print_instr(outputStream* out) const PRODUCT_RETURN;




1216 
1217   LIR_Opr receiver() const                       { return _receiver; }
1218   ciMethod* method() const                       { return _method;   }
1219 
1220   // JSR 292 support.
1221   bool is_invokedynamic() const                  { return code() == lir_dynamic_call; }
1222   bool is_method_handle_invoke() const {
1223     return method()->is_compiled_lambda_form() ||   // Java-generated lambda form
1224            method()->is_method_handle_intrinsic();  // JVM-generated MH intrinsic
1225   }
1226 
1227   intptr_t vtable_offset() const {
1228     assert(_code == lir_virtual_call, "only have vtable for real vcall");
1229     return (intptr_t) addr();
1230   }
1231 
1232   virtual void emit_code(LIR_Assembler* masm);
1233   virtual LIR_OpJavaCall* as_OpJavaCall() { return this; }
1234   virtual void print_instr(outputStream* out) const PRODUCT_RETURN;
1235 
1236   bool maybe_return_as_fields(ciValueKlass** vk = NULL) const;
1237 };
1238 
1239 // --------------------------------------------------
1240 // LIR_OpLabel
1241 // --------------------------------------------------
1242 // Location where a branch can continue
1243 class LIR_OpLabel: public LIR_Op {
1244  friend class LIR_OpVisitState;
1245 
1246  private:
1247   Label* _label;
1248  public:
1249   LIR_OpLabel(Label* lbl)
1250    : LIR_Op(lir_label, LIR_OprFact::illegalOpr, NULL)
1251    , _label(lbl)                                 {}
1252   Label* label() const                           { return _label; }
1253 
1254   virtual void emit_code(LIR_Assembler* masm);
1255   virtual LIR_OpLabel* as_OpLabel() { return this; }
1256   virtual void print_instr(outputStream* out) const PRODUCT_RETURN;


< prev index next >