63 // address that composes the last_Java_frame will be in an accessible location 64 // so calls from Java to native store that pc (or one good enough to locate 65 // the oopmap) in the frame anchor. Since the frames that call from Java to 66 // native are never deoptimized we never need to patch the pc and so this 67 // is acceptable. 68 volatile address _last_Java_pc; 69 70 // tells whether the last Java frame is set 71 // It is important that when last_Java_sp != NULL that the rest of the frame 72 // anchor (including platform specific) all be valid. 73 74 bool has_last_Java_frame() const { return _last_Java_sp != NULL; } 75 // This is very dangerous unless sp == NULL 76 // Invalidate the anchor so that has_last_frame is false 77 // and no one should look at the other fields. 78 void zap(void) { _last_Java_sp = NULL; } 79 80 #ifdef TARGET_ARCH_x86 81 # include "javaFrameAnchor_x86.hpp" 82 #endif 83 #ifdef TARGET_ARCH_sparc 84 # include "javaFrameAnchor_sparc.hpp" 85 #endif 86 #ifdef TARGET_ARCH_zero 87 # include "javaFrameAnchor_zero.hpp" 88 #endif 89 #ifdef TARGET_ARCH_arm 90 # include "javaFrameAnchor_arm.hpp" 91 #endif 92 #ifdef TARGET_ARCH_ppc 93 # include "javaFrameAnchor_ppc.hpp" 94 #endif 95 96 97 public: 98 JavaFrameAnchor() { clear(); } 99 JavaFrameAnchor(JavaFrameAnchor *src) { copy(src); } 100 101 void set_last_Java_pc(address pc) { _last_Java_pc = pc; } 102 | 63 // address that composes the last_Java_frame will be in an accessible location 64 // so calls from Java to native store that pc (or one good enough to locate 65 // the oopmap) in the frame anchor. Since the frames that call from Java to 66 // native are never deoptimized we never need to patch the pc and so this 67 // is acceptable. 68 volatile address _last_Java_pc; 69 70 // tells whether the last Java frame is set 71 // It is important that when last_Java_sp != NULL that the rest of the frame 72 // anchor (including platform specific) all be valid. 73 74 bool has_last_Java_frame() const { return _last_Java_sp != NULL; } 75 // This is very dangerous unless sp == NULL 76 // Invalidate the anchor so that has_last_frame is false 77 // and no one should look at the other fields. 78 void zap(void) { _last_Java_sp = NULL; } 79 80 #ifdef TARGET_ARCH_x86 81 # include "javaFrameAnchor_x86.hpp" 82 #endif 83 #ifdef TARGET_ARCH_aarch64 84 # include "javaFrameAnchor_aarch64.hpp" 85 #endif 86 #ifdef TARGET_ARCH_sparc 87 # include "javaFrameAnchor_sparc.hpp" 88 #endif 89 #ifdef TARGET_ARCH_zero 90 # include "javaFrameAnchor_zero.hpp" 91 #endif 92 #ifdef TARGET_ARCH_arm 93 # include "javaFrameAnchor_arm.hpp" 94 #endif 95 #ifdef TARGET_ARCH_ppc 96 # include "javaFrameAnchor_ppc.hpp" 97 #endif 98 99 100 public: 101 JavaFrameAnchor() { clear(); } 102 JavaFrameAnchor(JavaFrameAnchor *src) { copy(src); } 103 104 void set_last_Java_pc(address pc) { _last_Java_pc = pc; } 105 |