1 /* |
1 /* |
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
24 |
24 |
25 #ifndef SHARE_VM_RUNTIME_JAVACALLS_HPP |
25 #ifndef SHARE_VM_RUNTIME_JAVACALLS_HPP |
26 #define SHARE_VM_RUNTIME_JAVACALLS_HPP |
26 #define SHARE_VM_RUNTIME_JAVACALLS_HPP |
27 |
27 |
28 #include "memory/allocation.hpp" |
28 #include "memory/allocation.hpp" |
29 #include "oops/methodOop.hpp" |
29 #include "oops/method.hpp" |
30 #include "runtime/handles.hpp" |
30 #include "runtime/handles.hpp" |
31 #include "runtime/javaFrameAnchor.hpp" |
31 #include "runtime/javaFrameAnchor.hpp" |
32 #include "runtime/vmThread.hpp" |
32 #include "runtime/vmThread.hpp" |
33 #ifdef TARGET_ARCH_x86 |
33 #ifdef TARGET_ARCH_x86 |
34 # include "jniTypes_x86.hpp" |
34 # include "jniTypes_x86.hpp" |
65 class JavaCallWrapper: StackObj { |
65 class JavaCallWrapper: StackObj { |
66 friend class VMStructs; |
66 friend class VMStructs; |
67 private: |
67 private: |
68 JavaThread* _thread; // the thread to which this call belongs |
68 JavaThread* _thread; // the thread to which this call belongs |
69 JNIHandleBlock* _handles; // the saved handle block |
69 JNIHandleBlock* _handles; // the saved handle block |
70 methodOop _callee_method; // to be able to collect arguments if entry frame is top frame |
70 Method* _callee_method; // to be able to collect arguments if entry frame is top frame |
71 oop _receiver; // the receiver of the call (if a non-static call) |
71 oop _receiver; // the receiver of the call (if a non-static call) |
72 |
72 |
73 JavaFrameAnchor _anchor; // last thread anchor state that we must restore |
73 JavaFrameAnchor _anchor; // last thread anchor state that we must restore |
74 |
74 |
75 JavaValue* _result; // result value |
75 JavaValue* _result; // result value |
85 |
85 |
86 JavaFrameAnchor* anchor(void) { return &_anchor; } |
86 JavaFrameAnchor* anchor(void) { return &_anchor; } |
87 |
87 |
88 JavaValue* result() const { return _result; } |
88 JavaValue* result() const { return _result; } |
89 // GC support |
89 // GC support |
90 methodOop callee_method() { return _callee_method; } |
90 Method* callee_method() { return _callee_method; } |
91 oop receiver() { return _receiver; } |
91 oop receiver() { return _receiver; } |
92 void oops_do(OopClosure* f); |
92 void oops_do(OopClosure* f); |
93 |
93 |
94 }; |
94 }; |
95 |
95 |