diff options
Diffstat (limited to 'deps/v8/src/compiler/js-heap-copy-reducer.cc')
-rw-r--r-- | deps/v8/src/compiler/js-heap-copy-reducer.cc | 43 |
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: |