mirror of
https://github.com/VSadov/Satori.git
synced 2025-06-08 03:27:04 +09:00
current
This commit is contained in:
parent
eb8d99299b
commit
2632c87cd1
4 changed files with 21 additions and 1 deletions
|
@ -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]
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue