diff --git a/CHANGELOG.md b/CHANGELOG.md
index 59918d5efa37..cedac6106bdf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -40,7 +40,8 @@ release.
-24.22.1
+24.22.2
+24.22.1
24.22.0
24.21.0
24.20.0
diff --git a/common.gypi b/common.gypi
index b4161293343c..685e03628195 100644
--- a/common.gypi
+++ b/common.gypi
@@ -42,7 +42,7 @@
# Reset this number to 0 on major V8 upgrades.
# Increment by one for each non-official patch applied to deps/v8.
- 'v8_embedder_string': '-node.58',
+ 'v8_embedder_string': '-node.63',
##### V8 defaults for Node.js #####
diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS
index 148600dd569a..ca430f8fd4a0 100644
--- a/deps/v8/AUTHORS
+++ b/deps/v8/AUTHORS
@@ -123,6 +123,7 @@ Douglas Crosher
Dusan Milosavljevic
Eden Wang
Edoardo Marangoni
+Eliau Elkouby
Elisha Hollander
Eric Rannaud
Erich Ocean
diff --git a/deps/v8/src/deoptimizer/translated-state.cc b/deps/v8/src/deoptimizer/translated-state.cc
index 020fbcf72f10..80ced80a6881 100644
--- a/deps/v8/src/deoptimizer/translated-state.cc
+++ b/deps/v8/src/deoptimizer/translated-state.cc
@@ -1875,12 +1875,37 @@ Address TranslatedState::DecompressIfNeeded(intptr_t value) {
static_cast(value) <= std::numeric_limits::max()) {
#endif
return V8HeapCompressionScheme::DecompressTagged(
- isolate(), static_cast(value));
+ V8HeapCompressionScheme::base(), static_cast(value));
} else {
return value;
}
}
+// static
+std::optional> TranslatedState::TryResolveTaggedValue(
+ DeoptTranslationIterator* it, Address fp,
+ Tagged literals) {
+ TranslationOpcode opcode = it->NextOpcode();
+ switch (opcode) {
+ case TranslationOpcode::LITERAL: {
+ int literal_index = it->NextOperand();
+ return literals->get(literal_index);
+ }
+ case TranslationOpcode::TAGGED_STACK_SLOT: {
+ int slot_offset =
+ OptimizedJSFrame::StackSlotOffsetRelativeToFp(it->NextOperand());
+ intptr_t value = *reinterpret_cast(fp + slot_offset);
+ return Tagged |