55 NativeGeneralJump* nativeGeneralJump_at(address address);
56 #endif
57 NativeInstruction* nativeInstruction_at(address address);
58
59 // We have interface for the following instructions:
60 // - NativeInstruction
61 // - NativeCall
62 // - NativeFarCall
63 // - NativeMovConstReg
64 // - NativeMovRegMem
65 // - NativeJump
66 // - NativeGeneralJump
67 // - NativeIllegalInstruction
68 // The base class for different kinds of native instruction abstractions.
69 // Provides the primitive operations to manipulate code relative to this.
70
71 //-------------------------------------
72 // N a t i v e I n s t r u c t i o n
73 //-------------------------------------
74
75 class NativeInstruction VALUE_OBJ_CLASS_SPEC {
76 friend class Relocation;
77
78 public:
79
80 enum z_specific_constants {
81 nop_instruction_size = 2
82 };
83
84 bool is_illegal();
85
86 // Bcrl is currently the only accepted instruction here.
87 bool is_jump();
88
89 // We use an illtrap for marking a method as not_entrant or zombie.
90 bool is_sigill_zombie_not_entrant();
91
92 bool is_safepoint_poll() {
93 // Is the current instruction a POTENTIAL read access to the polling page?
94 // The instruction's current arguments are not checked!
95 return MacroAssembler::is_load_from_polling_page(addr_at(0));
|
55 NativeGeneralJump* nativeGeneralJump_at(address address);
56 #endif
57 NativeInstruction* nativeInstruction_at(address address);
58
59 // We have interface for the following instructions:
60 // - NativeInstruction
61 // - NativeCall
62 // - NativeFarCall
63 // - NativeMovConstReg
64 // - NativeMovRegMem
65 // - NativeJump
66 // - NativeGeneralJump
67 // - NativeIllegalInstruction
68 // The base class for different kinds of native instruction abstractions.
69 // Provides the primitive operations to manipulate code relative to this.
70
71 //-------------------------------------
72 // N a t i v e I n s t r u c t i o n
73 //-------------------------------------
74
75 class NativeInstruction {
76 friend class Relocation;
77
78 public:
79
80 enum z_specific_constants {
81 nop_instruction_size = 2
82 };
83
84 bool is_illegal();
85
86 // Bcrl is currently the only accepted instruction here.
87 bool is_jump();
88
89 // We use an illtrap for marking a method as not_entrant or zombie.
90 bool is_sigill_zombie_not_entrant();
91
92 bool is_safepoint_poll() {
93 // Is the current instruction a POTENTIAL read access to the polling page?
94 // The instruction's current arguments are not checked!
95 return MacroAssembler::is_load_from_polling_page(addr_at(0));
|