summaryrefslogtreecommitdiff
path: root/chromium/v8/src/deoptimizer/deoptimizer.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/v8/src/deoptimizer/deoptimizer.cc
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/v8/src/deoptimizer/deoptimizer.cc')
-rw-r--r--chromium/v8/src/deoptimizer/deoptimizer.cc25
1 files changed, 25 insertions, 0 deletions
diff --git a/chromium/v8/src/deoptimizer/deoptimizer.cc b/chromium/v8/src/deoptimizer/deoptimizer.cc
index 44c92f55704..066be821162 100644
--- a/chromium/v8/src/deoptimizer/deoptimizer.cc
+++ b/chromium/v8/src/deoptimizer/deoptimizer.cc
@@ -26,6 +26,7 @@
#include "src/objects/heap-number-inl.h"
#include "src/objects/smi.h"
#include "src/tracing/trace-event.h"
+#include "torque-generated/exported-class-definitions-tq.h"
// Has to be the last include (doesn't have include guards)
#include "src/objects/object-macros.h"
@@ -911,9 +912,19 @@ void Deoptimizer::DoComputeInterpretedFrame(TranslatedFrame* translated_frame,
frame_writer.PushRawObject(roots.the_hole_value(), "padding\n");
}
+#ifdef V8_REVERSE_JSARGS
+ std::vector<TranslatedFrame::iterator> parameters;
+ for (int i = 0; i < parameters_count; ++i, ++value_iterator) {
+ parameters.push_back(value_iterator);
+ }
+ for (auto& parameter : base::Reversed(parameters)) {
+ frame_writer.PushTranslatedValue(parameter, "stack parameter");
+ }
+#else
for (int i = 0; i < parameters_count; ++i, ++value_iterator) {
frame_writer.PushTranslatedValue(value_iterator, "stack parameter");
}
+#endif
DCHECK_EQ(output_frame->GetLastArgumentSlotOffset(),
frame_writer.top_offset());
@@ -3461,6 +3472,7 @@ void TranslatedState::InitializeCapturedObjectAt(
case STRING_TABLE_TYPE:
case PROPERTY_ARRAY_TYPE:
case SCRIPT_CONTEXT_TABLE_TYPE:
+ case SLOPPY_ARGUMENTS_ELEMENTS_TYPE:
InitializeObjectWithTaggedFieldsAt(frame, &value_index, slot, map,
no_allocation);
break;
@@ -3625,6 +3637,19 @@ void TranslatedState::EnsureCapturedObjectAllocatedAt(
&value_index, worklist);
}
+ case SLOPPY_ARGUMENTS_ELEMENTS_TYPE: {
+ // Verify that the arguments size is correct.
+ int args_length = frame->values_[value_index].GetSmiValue();
+ int args_size = SloppyArgumentsElements::SizeFor(args_length);
+ CHECK_EQ(args_size, slot->GetChildrenCount() * kTaggedSize);
+
+ slot->set_storage(AllocateStorageFor(slot));
+
+ // Make sure all the remaining children (after the map) are allocated.
+ return EnsureChildrenAllocated(slot->GetChildrenCount() - 1, frame,
+ &value_index, worklist);
+ }
+
case PROPERTY_ARRAY_TYPE: {
// Check we have the right size.
int length_or_hash = frame->values_[value_index].GetSmiValue();