diff options
| author | Mike Pall <mike> | 2023-09-09 14:15:18 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2023-09-09 14:15:18 +0200 |
| commit | 4651ff2fbc30a8326bcfc8e9d719fbf30856f5e2 (patch) | |
| tree | 354463b823dec57a607766e7b24d5316ceb21d42 /src | |
| parent | 9daf9f9003ff29551ef3b6fe19f4abf868bfd414 (diff) | |
| download | luajit-4651ff2fbc30a8326bcfc8e9d719fbf30856f5e2.tar.gz luajit-4651ff2fbc30a8326bcfc8e9d719fbf30856f5e2.tar.bz2 luajit-4651ff2fbc30a8326bcfc8e9d719fbf30856f5e2.zip | |
ARM64: Inline only use of emit_loada.
Thanks to Peter Cawley. #1065
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_asm_arm64.h | 9 | ||||
| -rw-r--r-- | src/lj_emit_arm64.h | 2 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/lj_asm_arm64.h b/src/lj_asm_arm64.h index 5e690308..a575269b 100644 --- a/src/lj_asm_arm64.h +++ b/src/lj_asm_arm64.h | |||
| @@ -831,10 +831,13 @@ static void asm_href(ASMState *as, IRIns *ir, IROp merge) | |||
| 831 | /* Key not found in chain: jump to exit (if merged) or load niltv. */ | 831 | /* Key not found in chain: jump to exit (if merged) or load niltv. */ |
| 832 | l_end = emit_label(as); | 832 | l_end = emit_label(as); |
| 833 | as->invmcp = NULL; | 833 | as->invmcp = NULL; |
| 834 | if (merge == IR_NE) | 834 | if (merge == IR_NE) { |
| 835 | asm_guardcc(as, CC_AL); | 835 | asm_guardcc(as, CC_AL); |
| 836 | else if (destused) | 836 | } else if (destused) { |
| 837 | emit_loada(as, dest, niltvg(J2G(as->J))); | 837 | uint32_t k12 = emit_isk12(offsetof(global_State, nilnode.val)); |
| 838 | lj_assertA(k12 != 0, "Cannot k12 encode niltv(L)"); | ||
| 839 | emit_dn(as, A64I_ADDx^k12, dest, RID_GL); | ||
| 840 | } | ||
| 838 | 841 | ||
| 839 | /* Follow hash chain until the end. */ | 842 | /* Follow hash chain until the end. */ |
| 840 | l_loop = --as->mcp; | 843 | l_loop = --as->mcp; |
diff --git a/src/lj_emit_arm64.h b/src/lj_emit_arm64.h index 7205ce78..73df508c 100644 --- a/src/lj_emit_arm64.h +++ b/src/lj_emit_arm64.h | |||
| @@ -230,8 +230,6 @@ static void emit_loadk(ASMState *as, Reg rd, uint64_t u64, int is64) | |||
| 230 | /* Load a 64 bit constant into a GPR. */ | 230 | /* Load a 64 bit constant into a GPR. */ |
| 231 | #define emit_loadu64(as, rd, i) emit_loadk(as, rd, i, A64I_X) | 231 | #define emit_loadu64(as, rd, i) emit_loadk(as, rd, i, A64I_X) |
| 232 | 232 | ||
| 233 | #define emit_loada(as, r, addr) emit_loadu64(as, (r), (uintptr_t)(addr)) | ||
| 234 | |||
| 235 | #define glofs(as, k) \ | 233 | #define glofs(as, k) \ |
| 236 | ((intptr_t)((uintptr_t)(k) - (uintptr_t)&J2GG(as->J)->g)) | 234 | ((intptr_t)((uintptr_t)(k) - (uintptr_t)&J2GG(as->J)->g)) |
| 237 | #define mcpofs(as, k) \ | 235 | #define mcpofs(as, k) \ |
