Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions src/pal/inc/unixasmmacrosx86.inc
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,31 @@ C_FUNC(\Name\()_End):
.macro ESP_PROLOG_BEG
.endm

.macro ESP_PROLOG_PUSH Reg
PROLOG_PUSH \Reg
.endm

.macro ESP_PROLOG_ALLOC Size
sub esp, \Size
.cfi_adjust_cfa_offset \Size
.endm

.macro ESP_PROLOG_END
.cfi_def_cfa_register esp
.endm

.macro ESP_EPILOG_BEG
.endm

.macro ESP_EPILOG_POP Reg
EPILOG_POP \Reg
.endm

.macro ESP_EPILOG_FREE Size
add esp, \Size
.cfi_adjust_cfa_offset -\Size
.endm

.macro ESP_EPILOG_END
.endm

Expand Down
43 changes: 24 additions & 19 deletions src/vm/i386/ehhelpers.S
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,15 @@
NESTED_ENTRY CallEHFunclet, _TEXT, NoHandler

ESP_PROLOG_BEG
PROLOG_PUSH ebp
mov ebp, esp
PROLOG_PUSH ebx
PROLOG_PUSH esi
PROLOG_PUSH edi
ESP_PROLOG_PUSH ebp
ESP_PROLOG_PUSH ebx
ESP_PROLOG_PUSH esi
ESP_PROLOG_PUSH edi
ESP_PROLOG_ALLOC 12
ESP_PROLOG_END

lea ebp, [esp + 3*4 + 12]

// On entry:
//
// [ebp+ 8] = throwable
Expand All @@ -43,10 +45,11 @@ NESTED_ENTRY CallEHFunclet, _TEXT, NoHandler
call edx

ESP_EPILOG_BEG
EPILOG_POP edi
EPILOG_POP esi
EPILOG_POP ebx
EPILOG_POP ebp
ESP_EPILOG_FREE 12
ESP_EPILOG_POP edi
ESP_EPILOG_POP esi
ESP_EPILOG_POP ebx
ESP_EPILOG_POP ebp
ESP_EPILOG_END

ret 16
Expand All @@ -58,13 +61,15 @@ NESTED_END CallEHFunclet, _TEXT
NESTED_ENTRY CallEHFilterFunclet, _TEXT, NoHandler

ESP_PROLOG_BEG
PROLOG_PUSH ebp
mov ebp, esp
PROLOG_PUSH ebx
PROLOG_PUSH esi
PROLOG_PUSH edi
ESP_PROLOG_PUSH ebp
ESP_PROLOG_PUSH ebx
ESP_PROLOG_PUSH esi
ESP_PROLOG_PUSH edi
ESP_PROLOG_ALLOC 12
ESP_PROLOG_END

lea ebp, [esp + 3*4 + 12]

// On entry:
//
// [ebp+ 8] = throwable
Expand All @@ -86,13 +91,13 @@ NESTED_ENTRY CallEHFilterFunclet, _TEXT, NoHandler
call edx

ESP_EPILOG_BEG
EPILOG_POP edi
EPILOG_POP esi
EPILOG_POP ebx
EPILOG_POP ebp
ESP_EPILOG_FREE 12
ESP_EPILOG_POP edi
ESP_EPILOG_POP esi
ESP_EPILOG_POP ebx
ESP_EPILOG_POP ebp
ESP_EPILOG_END

ret 16

NESTED_END CallEHFunclet, _TEXT