20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_VM_RUNTIME_FRAME_HPP 26 #define SHARE_VM_RUNTIME_FRAME_HPP 27 28 #include "oops/method.hpp" 29 #include "runtime/basicLock.hpp" 30 #include "runtime/monitorChunk.hpp" 31 #include "runtime/registerMap.hpp" 32 #include "utilities/top.hpp" 33 #ifdef COMPILER2 34 #if defined ADGLOBALS_MD_HPP 35 # include ADGLOBALS_MD_HPP 36 #elif defined TARGET_ARCH_MODEL_x86_32 37 # include "adfiles/adGlobals_x86_32.hpp" 38 #elif defined TARGET_ARCH_MODEL_x86_64 39 # include "adfiles/adGlobals_x86_64.hpp" 40 #elif defined TARGET_ARCH_MODEL_sparc 41 # include "adfiles/adGlobals_sparc.hpp" 42 #elif defined TARGET_ARCH_MODEL_zero 43 # include "adfiles/adGlobals_zero.hpp" 44 #elif defined TARGET_ARCH_MODEL_ppc_64 45 # include "adfiles/adGlobals_ppc_64.hpp" 46 #endif 47 #endif // COMPILER2 48 #ifdef TARGET_ARCH_zero 49 # include "stack_zero.hpp" 50 #endif 51 52 typedef class BytecodeInterpreter* interpreterState; 53 54 class CodeBlob; 55 class FrameValues; 56 class vframeArray; 57 58 59 // A frame represents a physical stack frame (an activation). Frames 469 470 public: 471 // Zapping 472 void zap_dead_locals (JavaThread* thread, const RegisterMap* map); 473 void zap_dead_interpreted_locals(JavaThread* thread, const RegisterMap* map); 474 void zap_dead_compiled_locals (JavaThread* thread, const RegisterMap* map); 475 void zap_dead_entry_locals (JavaThread* thread, const RegisterMap* map); 476 void zap_dead_deoptimized_locals(JavaThread* thread, const RegisterMap* map); 477 # endif 478 // Verification 479 void verify(const RegisterMap* map); 480 static bool verify_return_pc(address x); 481 static bool is_bci(intptr_t bcx); 482 // Usage: 483 // assert(frame::verify_return_pc(return_address), "must be a return pc"); 484 485 int pd_oop_map_offset_adjustment() const; 486 487 #ifdef TARGET_ARCH_x86 488 # include "frame_x86.hpp" 489 #endif 490 #ifdef TARGET_ARCH_sparc 491 # include "frame_sparc.hpp" 492 #endif 493 #ifdef TARGET_ARCH_zero 494 # include "frame_zero.hpp" 495 #endif 496 #ifdef TARGET_ARCH_arm 497 # include "frame_arm.hpp" 498 #endif 499 #ifdef TARGET_ARCH_ppc 500 # include "frame_ppc.hpp" 501 #endif 502 503 }; 504 505 #ifndef PRODUCT 506 // A simple class to describe a location on the stack 507 class FrameValue VALUE_OBJ_CLASS_SPEC { 508 public: | 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 * 23 */ 24 25 #ifndef SHARE_VM_RUNTIME_FRAME_HPP 26 #define SHARE_VM_RUNTIME_FRAME_HPP 27 28 #include "oops/method.hpp" 29 #include "runtime/basicLock.hpp" 30 #include "runtime/monitorChunk.hpp" 31 #include "runtime/registerMap.hpp" 32 #include "utilities/top.hpp" 33 #ifdef COMPILER2 34 #if defined ADGLOBALS_MD_HPP 35 # include ADGLOBALS_MD_HPP 36 #elif defined TARGET_ARCH_MODEL_x86_32 37 # include "adfiles/adGlobals_x86_32.hpp" 38 #elif defined TARGET_ARCH_MODEL_x86_64 39 # include "adfiles/adGlobals_x86_64.hpp" 40 #elif defined TARGET_ARCH_MODEL_aarch64 41 # include "adfiles/adGlobals_aarch64.hpp" 42 #elif defined TARGET_ARCH_MODEL_sparc 43 # include "adfiles/adGlobals_sparc.hpp" 44 #elif defined TARGET_ARCH_MODEL_zero 45 # include "adfiles/adGlobals_zero.hpp" 46 #elif defined TARGET_ARCH_MODEL_ppc_64 47 # include "adfiles/adGlobals_ppc_64.hpp" 48 #endif 49 #endif // COMPILER2 50 #ifdef TARGET_ARCH_zero 51 # include "stack_zero.hpp" 52 #endif 53 54 typedef class BytecodeInterpreter* interpreterState; 55 56 class CodeBlob; 57 class FrameValues; 58 class vframeArray; 59 60 61 // A frame represents a physical stack frame (an activation). Frames 471 472 public: 473 // Zapping 474 void zap_dead_locals (JavaThread* thread, const RegisterMap* map); 475 void zap_dead_interpreted_locals(JavaThread* thread, const RegisterMap* map); 476 void zap_dead_compiled_locals (JavaThread* thread, const RegisterMap* map); 477 void zap_dead_entry_locals (JavaThread* thread, const RegisterMap* map); 478 void zap_dead_deoptimized_locals(JavaThread* thread, const RegisterMap* map); 479 # endif 480 // Verification 481 void verify(const RegisterMap* map); 482 static bool verify_return_pc(address x); 483 static bool is_bci(intptr_t bcx); 484 // Usage: 485 // assert(frame::verify_return_pc(return_address), "must be a return pc"); 486 487 int pd_oop_map_offset_adjustment() const; 488 489 #ifdef TARGET_ARCH_x86 490 # include "frame_x86.hpp" 491 #endif 492 #ifdef TARGET_ARCH_aarch64 493 # include "frame_aarch64.hpp" 494 #endif 495 #ifdef TARGET_ARCH_sparc 496 # include "frame_sparc.hpp" 497 #endif 498 #ifdef TARGET_ARCH_zero 499 # include "frame_zero.hpp" 500 #endif 501 #ifdef TARGET_ARCH_arm 502 # include "frame_arm.hpp" 503 #endif 504 #ifdef TARGET_ARCH_ppc 505 # include "frame_ppc.hpp" 506 #endif 507 508 }; 509 510 #ifndef PRODUCT 511 // A simple class to describe a location on the stack 512 class FrameValue VALUE_OBJ_CLASS_SPEC { 513 public: |