Overview
Comment: | invoke-x86_64.m: Fix compilation with GCC |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
2379608969e26ebb4562d59893c6c74c |
User & Date: | js on 2017-09-16 20:05:42 |
Other Links: | manifest | tags |
Context
2017-09-16
| ||
20:20 | invoke-x86_64.m: Correctly align __int128 for GCC check-in: c14dfdc8e5 user: js tags: trunk | |
20:05 | invoke-x86_64.m: Fix compilation with GCC check-in: 2379608969 user: js tags: trunk | |
19:11 | OFInvocation: Support for invoking on x86_64/ELF check-in: 6d2f81aea9 user: js tags: trunk | |
Changes
Modified src/invocation/invoke-x86_64.m from [75aba7c79f] to [03bcbc3b9d].
︙ | |||
75 76 77 78 79 80 81 | 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | - + | static void pushDouble(struct call_context **context, size_t *currentSSE, double value) { struct call_context *newContext; if (*currentSSE < NUM_SSE_IN) { |
︙ | |||
271 272 273 274 275 276 277 | 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 | - + | case 'f':; float floatTmp; _mm_store_ss(&floatTmp, context->sse[0]); [invocation setReturnValue: &floatTmp]; break; case 'd':; double doubleTmp; |
︙ |
Modified tests/OFInvocationTests.m from [943b8e059c] to [23dbe050f2].
︙ | |||
100 101 102 103 104 105 106 107 108 109 110 111 112 113 | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | + | : (long double)d16 { return (d1 + d2 + d3 + d4 + d5 + d6 + d7 + d8 + d9 + d10 + d11 + d12 + d13 + d14 + d15 + d16) / 16; } #ifdef __SIZEOF_INT128__ __extension__ - (__int128)invocationTestMethod5: (__int128)i1 : (__int128)i2 : (int)i3 /* to check alignment */ : (__int128)i4 : (__int128)i5 : (__int128)i6 : (__int128)i7 |
︙ | |||
272 273 274 275 276 277 278 | 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 | - + - + - + + | [invocation setArgument: &self atIndex: 0]; [invocation setArgument: &selector atIndex: 1]; for (int i = 1; i <= 16; i++) { |