equal
deleted
inserted
replaced
103 static void test() {} // override for testing |
103 static void test() {} // override for testing |
104 |
104 |
105 inline friend NativeInstruction* nativeInstruction_at(address address); |
105 inline friend NativeInstruction* nativeInstruction_at(address address); |
106 |
106 |
107 static bool is_adrp_at(address instr); |
107 static bool is_adrp_at(address instr); |
|
108 |
108 static bool is_ldr_literal_at(address instr); |
109 static bool is_ldr_literal_at(address instr); |
|
110 |
|
111 bool is_ldr_literal() { |
|
112 return is_ldr_literal_at(addr_at(0)); |
|
113 } |
|
114 |
109 static bool is_ldrw_to_zr(address instr); |
115 static bool is_ldrw_to_zr(address instr); |
110 |
116 |
111 static bool is_call_at(address instr) { |
117 static bool is_call_at(address instr) { |
112 const uint32_t insn = (*(uint32_t*)instr); |
118 const uint32_t insn = (*(uint32_t*)instr); |
113 return (insn >> 26) == 0b100101; |
119 return (insn >> 26) == 0b100101; |
114 } |
120 } |
|
121 |
115 bool is_call() { |
122 bool is_call() { |
116 return is_call_at(addr_at(0)); |
123 return is_call_at(addr_at(0)); |
117 } |
124 } |
118 |
125 |
119 static bool maybe_cpool_ref(address instr) { |
126 static bool maybe_cpool_ref(address instr) { |