37 # include "jniTypes_sparc.hpp"
38 #endif
39 #ifdef TARGET_ARCH_zero
40 # include "jniTypes_zero.hpp"
41 #endif
42 #ifdef TARGET_ARCH_arm
43 # include "jniTypes_arm.hpp"
44 #endif
45 #ifdef TARGET_ARCH_ppc
46 # include "jniTypes_ppc.hpp"
47 #endif
48 #ifdef TARGET_OS_FAMILY_linux
49 # include "thread_linux.inline.hpp"
50 #endif
51 #ifdef TARGET_OS_FAMILY_solaris
52 # include "thread_solaris.inline.hpp"
53 #endif
54 #ifdef TARGET_OS_FAMILY_windows
55 # include "thread_windows.inline.hpp"
56 #endif
57
58 // A JavaCallWrapper is constructed before each JavaCall and destructed after the call.
59 // Its purpose is to allocate/deallocate a new handle block and to save/restore the last
60 // Java fp/sp. A pointer to the JavaCallWrapper is stored on the stack.
61
62 class JavaCallWrapper: StackObj {
63 friend class VMStructs;
64 private:
65 JavaThread* _thread; // the thread to which this call belongs
66 JNIHandleBlock* _handles; // the saved handle block
67 methodOop _callee_method; // to be able to collect arguments if entry frame is top frame
68 oop _receiver; // the receiver of the call (if a non-static call)
69
70 JavaFrameAnchor _anchor; // last thread anchor state that we must restore
71
72 JavaValue* _result; // result value
73
74 public:
75 // Construction/destruction
76 JavaCallWrapper(methodHandle callee_method, Handle receiver, JavaValue* result, TRAPS);
|
37 # include "jniTypes_sparc.hpp"
38 #endif
39 #ifdef TARGET_ARCH_zero
40 # include "jniTypes_zero.hpp"
41 #endif
42 #ifdef TARGET_ARCH_arm
43 # include "jniTypes_arm.hpp"
44 #endif
45 #ifdef TARGET_ARCH_ppc
46 # include "jniTypes_ppc.hpp"
47 #endif
48 #ifdef TARGET_OS_FAMILY_linux
49 # include "thread_linux.inline.hpp"
50 #endif
51 #ifdef TARGET_OS_FAMILY_solaris
52 # include "thread_solaris.inline.hpp"
53 #endif
54 #ifdef TARGET_OS_FAMILY_windows
55 # include "thread_windows.inline.hpp"
56 #endif
57 #ifdef TARGET_OS_FAMILY_bsd
58 # include "thread_bsd.inline.hpp"
59 #endif
60
61 // A JavaCallWrapper is constructed before each JavaCall and destructed after the call.
62 // Its purpose is to allocate/deallocate a new handle block and to save/restore the last
63 // Java fp/sp. A pointer to the JavaCallWrapper is stored on the stack.
64
65 class JavaCallWrapper: StackObj {
66 friend class VMStructs;
67 private:
68 JavaThread* _thread; // the thread to which this call belongs
69 JNIHandleBlock* _handles; // the saved handle block
70 methodOop _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)
72
73 JavaFrameAnchor _anchor; // last thread anchor state that we must restore
74
75 JavaValue* _result; // result value
76
77 public:
78 // Construction/destruction
79 JavaCallWrapper(methodHandle callee_method, Handle receiver, JavaValue* result, TRAPS);
|