1031 // -------------------------------------------------- |
1031 // -------------------------------------------------- |
1032 class LIR_OpJavaCall: public LIR_OpCall { |
1032 class LIR_OpJavaCall: public LIR_OpCall { |
1033 friend class LIR_OpVisitState; |
1033 friend class LIR_OpVisitState; |
1034 |
1034 |
1035 private: |
1035 private: |
1036 ciMethod* _method; |
1036 ciMethod* _method; |
1037 LIR_Opr _receiver; |
1037 LIR_Opr _receiver; |
|
1038 LIR_Opr _method_handle_invoke_SP_save_opr; // Used in LIR_OpVisitState::visit to store the reference to FrameMap::method_handle_invoke_SP_save_opr. |
1038 |
1039 |
1039 public: |
1040 public: |
1040 LIR_OpJavaCall(LIR_Code code, ciMethod* method, |
1041 LIR_OpJavaCall(LIR_Code code, ciMethod* method, |
1041 LIR_Opr receiver, LIR_Opr result, |
1042 LIR_Opr receiver, LIR_Opr result, |
1042 address addr, LIR_OprList* arguments, |
1043 address addr, LIR_OprList* arguments, |
1043 CodeEmitInfo* info) |
1044 CodeEmitInfo* info) |
1044 : LIR_OpCall(code, addr, result, arguments, info) |
1045 : LIR_OpCall(code, addr, result, arguments, info) |
1045 , _receiver(receiver) |
1046 , _receiver(receiver) |
1046 , _method(method) { assert(is_in_range(code, begin_opJavaCall, end_opJavaCall), "code check"); } |
1047 , _method(method) |
|
1048 , _method_handle_invoke_SP_save_opr(LIR_OprFact::illegalOpr) |
|
1049 { assert(is_in_range(code, begin_opJavaCall, end_opJavaCall), "code check"); } |
1047 |
1050 |
1048 LIR_OpJavaCall(LIR_Code code, ciMethod* method, |
1051 LIR_OpJavaCall(LIR_Code code, ciMethod* method, |
1049 LIR_Opr receiver, LIR_Opr result, intptr_t vtable_offset, |
1052 LIR_Opr receiver, LIR_Opr result, intptr_t vtable_offset, |
1050 LIR_OprList* arguments, CodeEmitInfo* info) |
1053 LIR_OprList* arguments, CodeEmitInfo* info) |
1051 : LIR_OpCall(code, (address)vtable_offset, result, arguments, info) |
1054 : LIR_OpCall(code, (address)vtable_offset, result, arguments, info) |
1052 , _receiver(receiver) |
1055 , _receiver(receiver) |
1053 , _method(method) { assert(is_in_range(code, begin_opJavaCall, end_opJavaCall), "code check"); } |
1056 , _method(method) |
|
1057 , _method_handle_invoke_SP_save_opr(LIR_OprFact::illegalOpr) |
|
1058 { assert(is_in_range(code, begin_opJavaCall, end_opJavaCall), "code check"); } |
1054 |
1059 |
1055 LIR_Opr receiver() const { return _receiver; } |
1060 LIR_Opr receiver() const { return _receiver; } |
1056 ciMethod* method() const { return _method; } |
1061 ciMethod* method() const { return _method; } |
1057 |
1062 |
1058 // JSR 292 support. |
1063 // JSR 292 support. |