| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent b7fab70 commit ce0f498
6 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -38,7 +38,7 @@ | |||
| 38 | 38 | ||
| 39 | 39 | # Reset this number to 0 on major V8 upgrades. | |
| 40 | 40 | # Increment by one for each non-official patch applied to deps/v8. | |
| 41 | - 'v8_embedder_string': '-node.17', | ||
| 41 | + 'v8_embedder_string': '-node.18', | ||
| 42 | 42 | ||
| 43 | 43 | ##### V8 defaults for Node.js ##### | |
| 44 | 44 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1627,7 +1627,7 @@ config("toolchain") { | |||
| 1627 | 1627 | if (v8_current_cpu == "ppc64") { | |
| 1628 | 1628 | defines += [ "V8_TARGET_ARCH_PPC64" ] | |
| 1629 | 1629 | cflags += [ "-ffp-contract=off" ] | |
| 1630 | - if (current_os == "aix") { | ||
| 1630 | + if (current_os == "aix" && !is_clang) { | ||
| 1631 | 1631 | cflags += [ | |
| 1632 | 1632 | # Work around AIX ceil, trunc and round oddities. | |
| 1633 | 1633 | "-mcpu=power5+", | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -4201,6 +4201,19 @@ void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, | |||
| 4201 | 4201 | ||
| 4202 | 4202 | // If return value is on the stack, pop it to registers. | |
| 4203 | 4203 | if (needs_return_buffer) { | |
| 4204 | + Label done; | ||
| 4205 | + if (switch_to_central_stack) { | ||
| 4206 | + Label no_stack_change; | ||
| 4207 | + __ CmpU64(kOldSPRegister, Operand(0), r0); | ||
| 4208 | + __ beq(&no_stack_change); | ||
| 4209 | + __ addi(r3, kOldSPRegister, | ||
| 4210 | + Operand((kStackFrameExtraParamSlot + 1) * kSystemPointerSize)); | ||
| 4211 | + __ b(&done); | ||
| 4212 | + __ bind(&no_stack_change); | ||
| 4213 | + } | ||
| 4214 | + __ addi(r3, sp, | ||
| 4215 | + Operand((kStackFrameExtraParamSlot + 1) * kSystemPointerSize)); | ||
| 4216 | + __ bind(&done); | ||
| 4204 | 4217 | __ LoadU64(r4, MemOperand(r3, kSystemPointerSize)); | |
| 4205 | 4218 | __ LoadU64(r3, MemOperand(r3)); | |
| 4206 | 4219 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -525,7 +525,7 @@ class InputsRepFactory { | |||
| 525 | 525 | }; | |
| 526 | 526 | }; | |
| 527 | 527 | ||
| 528 | - struct EffectDimensions { | ||
| 528 | + struct __attribute__((packed)) EffectDimensions { | ||
| 529 | 529 | // Produced by loads, consumed by operations that should not move before loads | |
| 530 | 530 | // because they change memory. | |
| 531 | 531 | bool load_heap_memory : 1; | |
@@ -620,7 +620,7 @@ static_assert(sizeof(EffectDimensions) == sizeof(EffectDimensions::Bits)); | |||
| 620 | 620 | // they become more restricted in their movement. Note that calls are not the | |
| 621 | 621 | // most side-effectful operations, as they do not leave the heap in an | |
| 622 | 622 | // inconsistent state, so they do not need to be marked as raw heap access. | |
| 623 | - struct OpEffects { | ||
| 623 | + struct __attribute__((packed)) OpEffects { | ||
| 624 | 624 | EffectDimensions produces; | |
| 625 | 625 | EffectDimensions consumes; | |
| 626 | 626 | ||
@@ -2904,7 +2904,7 @@ struct ConstantOp : FixedArityOperationT<0, ConstantOp> { | |||
| 2904 | 2904 | // When result_rep is RegisterRepresentation::Compressed(), then the load does | |
| 2905 | 2905 | // not decompress the value. | |
| 2906 | 2906 | struct LoadOp : OperationT<LoadOp> { | |
| 2907 | - struct Kind { | ||
| 2907 | + struct __attribute__((packed)) Kind { | ||
| 2908 | 2908 | // The `base` input is a tagged pointer to a HeapObject. | |
| 2909 | 2909 | bool tagged_base : 1; | |
| 2910 | 2910 | // The effective address might be unaligned. This is only set to true if | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -199,13 +199,17 @@ class GeneratedCode { | |||
| 199 | 199 | return fn(args...); | |
| 200 | 200 | #else | |
| 201 | 201 | // AIX ABI requires function descriptors (FD). Artificially create a pseudo | |
| 202 | - // FD to ensure correct dispatch to generated code. The 'volatile' | ||
| 203 | - // declaration is required to avoid the compiler from not observing the | ||
| 204 | - // alias of the pseudo FD to the function pointer, and hence, optimizing the | ||
| 205 | - // pseudo FD declaration/initialization away. | ||
| 206 | - volatile Address function_desc[] = {reinterpret_cast<Address>(fn_ptr_), 0, | ||
| 207 | - 0}; | ||
| 208 | - Signature* fn = reinterpret_cast<Signature*>(function_desc); | ||
| 202 | + // FD to ensure correct dispatch to generated code. | ||
| 203 | + void* function_desc[3]; | ||
| 204 | + Signature* fn; | ||
| 205 | + asm("std %1, 0(%2)\n\t" | ||
| 206 | + "li 0, 0\n\t" | ||
| 207 | + "std 0, 8(%2)\n\t" | ||
| 208 | + "std 0, 16(%2)\n\t" | ||
| 209 | + "mr %0, %2\n\t" | ||
| 210 | + : "=r"(fn) | ||
| 211 | + : "r"(fn_ptr_), "r"(function_desc) | ||
| 212 | + : "memory", "0"); | ||
| 209 | 213 | return fn(args...); | |
| 210 | 214 | #endif // V8_OS_ZOS | |
| 211 | 215 | #else | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -24,7 +24,11 @@ namespace v8 { | |||
| 24 | 24 | namespace internal { | |
| 25 | 25 | namespace trap_handler { | |
| 26 | 26 | ||
| 27 | + #if defined(V8_OS_AIX) | ||
| 28 | + __thread bool TrapHandlerGuard::is_active_ = 0; | ||
| 29 | + #else | ||
| 27 | 30 | thread_local bool TrapHandlerGuard::is_active_ = 0; | |
| 31 | + #endif | ||
| 28 | 32 | ||
| 29 | 33 | size_t gNumCodeObjects = 0; | |
| 30 | 34 | CodeProtectionInfoListEntry* gCodeObjects = nullptr; | |
| Back | FazBrowse Home | New Git URL |
0 commit comments