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++) {
|