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;
|