Differences From Artifact [9312a70bd8]:
- File src/invocation/invoke-x86_64.m — part of check-in [0509d7a844] at 2019-01-03 19:13:03 on branch trunk — Update copyright (user: js, size: 11301) [annotate] [blame] [check-ins using]
To Artifact [47d3793287]:
- File
src/invocation/invoke-x86_64.m
— part of check-in
[780d096371]
at
2019-02-18 01:37:36
on branch trunk
— invocation: Make all offsets constants
This makes the assembly much more readable.
No difference between disassembled .o file before and after. (user: js, size: 11223) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
27 28 29 30 31 32 33 | #import "OFInvalidFormatException.h" #import "OFOutOfMemoryException.h" #import "invoke-x86_64.h" #import "macros.h" | < < < < < | | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #import "OFInvalidFormatException.h" #import "OFOutOfMemoryException.h" #import "invoke-x86_64.h" #import "macros.h" struct call_context { uint64_t GPR[NUM_GPR_IN + NUM_GPR_OUT]; __m128 SSE[NUM_SSE_INOUT]; long double X87[NUM_X87_OUT]; uint8_t numSSEUsed; uint8_t returnType; uint64_t stackSize; uint64_t stack[]; }; |
︙ | ︙ | |||
72 73 74 75 76 77 78 | static void pushDouble(struct call_context **context, uint_fast8_t *currentSSE, double value) { struct call_context *newContext; | | | 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | static void pushDouble(struct call_context **context, uint_fast8_t *currentSSE, double value) { struct call_context *newContext; if (*currentSSE < NUM_SSE_INOUT) { (*context)->SSE[(*currentSSE)++] = (__m128)_mm_set_sd(value); (*context)->numSSEUsed++; return; } if ((newContext = realloc(*context, sizeof(**context) + ((*context)->stackSize + 1) * 8)) == NULL) { |
︙ | ︙ | |||
97 98 99 100 101 102 103 | static void pushQuad(struct call_context **context, uint_fast8_t *currentSSE, double low, double high) { size_t stackSize; struct call_context *newContext; | | | 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | static void pushQuad(struct call_context **context, uint_fast8_t *currentSSE, double low, double high) { size_t stackSize; struct call_context *newContext; if (*currentSSE + 1 < NUM_SSE_INOUT) { (*context)->SSE[(*currentSSE)++] = (__m128)_mm_set_sd(low); (*context)->SSE[(*currentSSE)++] = (__m128)_mm_set_sd(high); (*context)->numSSEUsed += 2; return; } stackSize = (*context)->stackSize + 2; |
︙ | ︙ |