aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/c1/c1_Instruction.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/vm/c1/c1_Instruction.hpp')
-rw-r--r--src/share/vm/c1/c1_Instruction.hpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/share/vm/c1/c1_Instruction.hpp b/src/share/vm/c1/c1_Instruction.hpp
index 466d814c6..19490bbc9 100644
--- a/src/share/vm/c1/c1_Instruction.hpp
+++ b/src/share/vm/c1/c1_Instruction.hpp
@@ -107,6 +107,7 @@ class UnsafePrefetch;
class UnsafePrefetchRead;
class UnsafePrefetchWrite;
class ProfileCall;
+class ProfileReturnType;
class ProfileInvoke;
class RuntimeCall;
class MemBar;
@@ -211,6 +212,7 @@ class InstructionVisitor: public StackObj {
virtual void do_UnsafePrefetchRead (UnsafePrefetchRead* x) = 0;
virtual void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) = 0;
virtual void do_ProfileCall (ProfileCall* x) = 0;
+ virtual void do_ProfileReturnType (ProfileReturnType* x) = 0;
virtual void do_ProfileInvoke (ProfileInvoke* x) = 0;
virtual void do_RuntimeCall (RuntimeCall* x) = 0;
virtual void do_MemBar (MemBar* x) = 0;
@@ -2518,6 +2520,38 @@ LEAF(ProfileCall, Instruction)
}
};
+LEAF(ProfileReturnType, Instruction)
+ private:
+ ciMethod* _method;
+ ciMethod* _callee;
+ int _bci_of_invoke;
+ Value _ret;
+
+ public:
+ ProfileReturnType(ciMethod* method, int bci, ciMethod* callee, Value ret)
+ : Instruction(voidType)
+ , _method(method)
+ , _callee(callee)
+ , _bci_of_invoke(bci)
+ , _ret(ret)
+ {
+ set_needs_null_check(true);
+ // The ProfileType has side-effects and must occur precisely where located
+ pin();
+ }
+
+ ciMethod* method() const { return _method; }
+ ciMethod* callee() const { return _callee; }
+ int bci_of_invoke() const { return _bci_of_invoke; }
+ Value ret() const { return _ret; }
+
+ virtual void input_values_do(ValueVisitor* f) {
+ if (_ret != NULL) {
+ f->visit(&_ret);
+ }
+ }
+};
+
// Call some C runtime function that doesn't safepoint,
// optionally passing the current thread as the first argument.
LEAF(RuntimeCall, Instruction)