1
0
Fork 0
mirror of https://github.com/VSadov/Satori.git synced 2025-06-08 03:27:04 +09:00
This commit is contained in:
vsadov 2025-06-04 15:46:27 -07:00
parent eb8d99299b
commit 2632c87cd1
4 changed files with 21 additions and 1 deletions

View file

@ -627,6 +627,9 @@ ALTERNATE_ENTRY RhpAssignRefAVLocation
stp x12,x13, [sp, 16 * 7]
stp x14,x15, [sp, 16 * 8]
// save Q0 just in case c++ code uses it to clear stack
str q0, [sp, #-16]!
// void SatoriRegion::EscapeFn(SatoriObject** dst, SatoriObject* src, SatoriRegion* region)
// mov x0, x14 EscapeFn does not use dst, it is just to avoid arg shuffle on x64
mov x1, x15
@ -634,6 +637,8 @@ ALTERNATE_ENTRY RhpAssignRefAVLocation
ldr x12, [x16, #8] // EscapeFn address
blr x12
ldr q0, [sp], #16
ldp x0, x1, [sp, 16 * 1]
ldp x2, x3, [sp, 16 * 2]
ldp x4, x5, [sp, 16 * 3]

View file

@ -613,13 +613,18 @@ RecordEscape
stp x12,x13, [sp, 16 * 7]
stp x14,x15, [sp, 16 * 8]
;; save Q0 just in case c++ code uses it to clear stack
str q0, [sp, #-16]!
;; void SatoriRegion::EscapeFn(SatoriObject** dst, SatoriObject* src, SatoriRegion* region)
;; mov x0, x14 EscapeFn does not use dst, it is just to avoid arg shuffle on x64
mov x1, x15
mov x2, x16 ;; source region
ldr x12, [x16, #8] ;; EscapeFn address
ldr x12, [x16, #8] ;; EscapeFn address
blr x12
ldr q0, [sp], #16
ldp x0, x1, [sp, 16 * 1]
ldp x2, x3, [sp, 16 * 2]
ldp x4, x5, [sp, 16 * 3]

View file

@ -396,6 +396,9 @@ WRITE_BARRIER_ENTRY JIT_WriteBarrier
stp x12,x13, [sp, 16 * 7]
stp x14,x15, [sp, 16 * 8]
;; save Q0 just in case c++ code uses it to clear stack
str q0, [sp, #-16]!
// void SatoriRegion::EscapeFn(SatoriObject** dst, SatoriObject* src, SatoriRegion* region)
// mov x0, x14 EscapeFn does not use dst, it is just to avoid arg shuffle on x64
mov x1, x15
@ -403,6 +406,8 @@ WRITE_BARRIER_ENTRY JIT_WriteBarrier
ldr x12, [x16, #8] // EscapeFn address
blr x12
ldr q0, [sp], #16
ldp x0, x1, [sp, 16 * 1]
ldp x2, x3, [sp, 16 * 2]
ldp x4, x5, [sp, 16 * 3]

View file

@ -419,6 +419,9 @@ RecordEscape
stp x12,x13, [sp, 16 * 7]
stp x14,x15, [sp, 16 * 8]
;; save Q0 just in case c++ code uses it to clear stack
str q0, [sp, #-16]!
; void SatoriRegion::EscapeFn(SatoriObject** dst, SatoriObject* src, SatoriRegion* region)
; mov x0, x14 EscapeFn does not use dst, it is just to avoid arg shuffle on x64
mov x1, x15
@ -426,6 +429,8 @@ RecordEscape
ldr x12, [x16, #8] ; EscapeFn address
blr x12
ldr q0, [sp], #16
ldp x0, x1, [sp, 16 * 1]
ldp x2, x3, [sp, 16 * 2]
ldp x4, x5, [sp, 16 * 3]