summaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/js-heap-copy-reducer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/js-heap-copy-reducer.cc')
-rw-r--r--deps/v8/src/compiler/js-heap-copy-reducer.cc43
1 files changed, 34 insertions, 9 deletions
diff --git a/deps/v8/src/compiler/js-heap-copy-reducer.cc b/deps/v8/src/compiler/js-heap-copy-reducer.cc
index 0bcc662771..ca510d5054 100644
--- a/deps/v8/src/compiler/js-heap-copy-reducer.cc
+++ b/deps/v8/src/compiler/js-heap-copy-reducer.cc
@@ -7,6 +7,7 @@
#include "src/compiler/common-operator.h"
#include "src/compiler/js-heap-broker.h"
#include "src/compiler/js-operator.h"
+#include "src/compiler/node-properties.h"
#include "src/heap/factory-inl.h"
#include "src/objects/map.h"
#include "src/objects/scope-info.h"
@@ -25,7 +26,11 @@ JSHeapBroker* JSHeapCopyReducer::broker() { return broker_; }
Reduction JSHeapCopyReducer::Reduce(Node* node) {
switch (node->opcode()) {
case IrOpcode::kHeapConstant: {
- ObjectRef(broker(), HeapConstantOf(node->op()));
+ ObjectRef object(broker(), HeapConstantOf(node->op()));
+ if (object.IsJSFunction()) object.AsJSFunction().Serialize();
+ if (object.IsJSObject()) object.AsJSObject().SerializeObjectCreateMap();
+ if (object.IsModule()) object.AsModule().Serialize();
+ if (object.IsContext()) object.AsContext().Serialize();
break;
}
case IrOpcode::kJSCreateArray: {
@@ -34,6 +39,23 @@ Reduction JSHeapCopyReducer::Reduce(Node* node) {
if (p.site().ToHandle(&site)) AllocationSiteRef(broker(), site);
break;
}
+ case IrOpcode::kJSCreateArguments: {
+ Node* const frame_state = NodeProperties::GetFrameStateInput(node);
+ FrameStateInfo state_info = FrameStateInfoOf(frame_state->op());
+ SharedFunctionInfoRef shared(broker(),
+ state_info.shared_info().ToHandleChecked());
+ break;
+ }
+ case IrOpcode::kJSCreateBlockContext: {
+ ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
+ break;
+ }
+ case IrOpcode::kJSCreateBoundFunction: {
+ CreateBoundFunctionParameters const& p =
+ CreateBoundFunctionParametersOf(node->op());
+ MapRef(broker(), p.map());
+ break;
+ }
case IrOpcode::kJSCreateCatchContext: {
ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
break;
@@ -46,14 +68,8 @@ Reduction JSHeapCopyReducer::Reduce(Node* node) {
break;
}
case IrOpcode::kJSCreateEmptyLiteralArray: {
- // TODO(neis, jarin) Force serialization of the entire feedback vector
- // rather than just the one element.
FeedbackParameter const& p = FeedbackParameterOf(node->op());
- FeedbackVectorRef(broker(), p.feedback().vector());
- Handle<Object> feedback(
- p.feedback().vector()->Get(p.feedback().slot())->ToObject(),
- broker()->isolate());
- ObjectRef(broker(), feedback);
+ FeedbackVectorRef(broker(), p.feedback().vector()).SerializeSlots();
break;
}
case IrOpcode::kJSCreateFunctionContext: {
@@ -65,7 +81,16 @@ Reduction JSHeapCopyReducer::Reduce(Node* node) {
case IrOpcode::kJSCreateLiteralArray:
case IrOpcode::kJSCreateLiteralObject: {
CreateLiteralParameters const& p = CreateLiteralParametersOf(node->op());
- ObjectRef(broker(), p.feedback().vector());
+ FeedbackVectorRef(broker(), p.feedback().vector()).SerializeSlots();
+ break;
+ }
+ case IrOpcode::kJSCreateLiteralRegExp: {
+ CreateLiteralParameters const& p = CreateLiteralParametersOf(node->op());
+ FeedbackVectorRef(broker(), p.feedback().vector()).SerializeSlots();
+ break;
+ }
+ case IrOpcode::kJSCreateWithContext: {
+ ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
break;
}
case IrOpcode::kJSLoadNamed: