summaryrefslogtreecommitdiff
path: root/deps/v8/src/execution/ppc
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2020-11-13 12:51:53 +0100
committerMichaël Zasso <targos@protonmail.com>2020-11-15 16:46:54 +0100
commit48db20f6f53060e38b2272566b014741eb4f519f (patch)
treee2f9b4c7f69d2e4597b73b4c3c09f4371d5cc963 /deps/v8/src/execution/ppc
parent79916428a48df937aa5b2b69c061d2d42181a76b (diff)
downloadnode-new-48db20f6f53060e38b2272566b014741eb4f519f.tar.gz
deps: update V8 to 8.7.220
PR-URL: https://github.com/nodejs/node/pull/35700 Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Shelley Vohr <codebytere@gmail.com>
Diffstat (limited to 'deps/v8/src/execution/ppc')
-rw-r--r--deps/v8/src/execution/ppc/frame-constants-ppc.h4
-rw-r--r--deps/v8/src/execution/ppc/simulator-ppc.cc8
2 files changed, 8 insertions, 4 deletions
diff --git a/deps/v8/src/execution/ppc/frame-constants-ppc.h b/deps/v8/src/execution/ppc/frame-constants-ppc.h
index 24ef585031..0931ffe101 100644
--- a/deps/v8/src/execution/ppc/frame-constants-ppc.h
+++ b/deps/v8/src/execution/ppc/frame-constants-ppc.h
@@ -14,8 +14,8 @@ namespace internal {
class EntryFrameConstants : public AllStatic {
public:
- static constexpr int kCallerFPOffset =
- -(StandardFrameConstants::kFixedFrameSizeFromFp + kSystemPointerSize);
+ // Need to take constant pool into account.
+ static constexpr int kCallerFPOffset = -4 * kSystemPointerSize;
};
class WasmCompileLazyFrameConstants : public TypedFrameConstants {
diff --git a/deps/v8/src/execution/ppc/simulator-ppc.cc b/deps/v8/src/execution/ppc/simulator-ppc.cc
index f845739e75..8e7070e5dc 100644
--- a/deps/v8/src/execution/ppc/simulator-ppc.cc
+++ b/deps/v8/src/execution/ppc/simulator-ppc.cc
@@ -2216,7 +2216,9 @@ void Simulator::ExecuteGeneric(Instruction* instr) {
int32_t ra_val = (get_register(ra) & 0xFFFFFFFF);
int32_t rb_val = (get_register(rb) & 0xFFFFFFFF);
int64_t alu_out = (int64_t)ra_val * (int64_t)rb_val;
- alu_out >>= 32;
+ // High 32 bits of the result is undefined,
+ // Which is simulated here by adding random bits.
+ alu_out = (alu_out >> 32) | 0x421000000000000;
set_register(rt, alu_out);
if (instr->Bit(0)) { // RC bit set
SetCR0(static_cast<intptr_t>(alu_out));
@@ -2230,7 +2232,9 @@ void Simulator::ExecuteGeneric(Instruction* instr) {
uint32_t ra_val = (get_register(ra) & 0xFFFFFFFF);
uint32_t rb_val = (get_register(rb) & 0xFFFFFFFF);
uint64_t alu_out = (uint64_t)ra_val * (uint64_t)rb_val;
- alu_out >>= 32;
+ // High 32 bits of the result is undefined,
+ // Which is simulated here by adding random bits.
+ alu_out = (alu_out >> 32) | 0x421000000000000;
set_register(rt, alu_out);
if (instr->Bit(0)) { // RC bit set
SetCR0(static_cast<intptr_t>(alu_out));