[turbofan] Clean-up the heap copy reducer phase
Bug: v8:7790 Change-Id: I798555bb6fbbee2ce2a3dc4bb22a84ff881792f0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1784294 Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#63589}
This commit is contained in:
parent
3aa21bbb3b
commit
4253936c59
@ -27,172 +27,130 @@ JSHeapBroker* JSHeapCopyReducer::broker() { return broker_; }
|
||||
Reduction JSHeapCopyReducer::Reduce(Node* node) {
|
||||
switch (node->opcode()) {
|
||||
case IrOpcode::kHeapConstant: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
ObjectRef object(broker(), HeapConstantOf(node->op()));
|
||||
if (object.IsJSFunction()) object.AsJSFunction().Serialize();
|
||||
if (object.IsJSObject()) {
|
||||
object.AsJSObject().SerializeObjectCreateMap();
|
||||
}
|
||||
if (object.IsSourceTextModule()) {
|
||||
object.AsSourceTextModule().Serialize();
|
||||
}
|
||||
ObjectRef object(broker(), HeapConstantOf(node->op()));
|
||||
if (object.IsJSFunction()) object.AsJSFunction().Serialize();
|
||||
if (object.IsJSObject()) {
|
||||
object.AsJSObject().SerializeObjectCreateMap();
|
||||
}
|
||||
if (object.IsSourceTextModule()) {
|
||||
object.AsSourceTextModule().Serialize();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSCreateArray: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
CreateArrayParameters const& p = CreateArrayParametersOf(node->op());
|
||||
Handle<AllocationSite> site;
|
||||
if (p.site().ToHandle(&site)) AllocationSiteRef(broker(), site);
|
||||
}
|
||||
CreateArrayParameters const& p = CreateArrayParametersOf(node->op());
|
||||
Handle<AllocationSite> site;
|
||||
if (p.site().ToHandle(&site)) AllocationSiteRef(broker(), site);
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSCreateArguments: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
Node* const frame_state = NodeProperties::GetFrameStateInput(node);
|
||||
FrameStateInfo state_info = FrameStateInfoOf(frame_state->op());
|
||||
SharedFunctionInfoRef shared(
|
||||
broker(), state_info.shared_info().ToHandleChecked());
|
||||
}
|
||||
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: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
|
||||
}
|
||||
ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSCreateBoundFunction: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
CreateBoundFunctionParameters const& p =
|
||||
CreateBoundFunctionParametersOf(node->op());
|
||||
MapRef(broker(), p.map());
|
||||
}
|
||||
CreateBoundFunctionParameters const& p =
|
||||
CreateBoundFunctionParametersOf(node->op());
|
||||
MapRef(broker(), p.map());
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSCreateCatchContext: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
|
||||
}
|
||||
ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSCreateClosure: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
CreateClosureParameters const& p =
|
||||
CreateClosureParametersOf(node->op());
|
||||
SharedFunctionInfoRef(broker(), p.shared_info());
|
||||
FeedbackCellRef(broker(), p.feedback_cell());
|
||||
HeapObjectRef(broker(), p.code());
|
||||
}
|
||||
CreateClosureParameters const& p = CreateClosureParametersOf(node->op());
|
||||
SharedFunctionInfoRef(broker(), p.shared_info());
|
||||
FeedbackCellRef(broker(), p.feedback_cell());
|
||||
HeapObjectRef(broker(), p.code());
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSCreateEmptyLiteralArray: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
FeedbackParameter const& p = FeedbackParameterOf(node->op());
|
||||
FeedbackVectorRef(broker(), p.feedback().vector).Serialize();
|
||||
}
|
||||
FeedbackParameter const& p = FeedbackParameterOf(node->op());
|
||||
FeedbackVectorRef(broker(), p.feedback().vector).Serialize();
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSCreateFunctionContext: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
CreateFunctionContextParameters const& p =
|
||||
CreateFunctionContextParametersOf(node->op());
|
||||
ScopeInfoRef(broker(), p.scope_info());
|
||||
}
|
||||
CreateFunctionContextParameters const& p =
|
||||
CreateFunctionContextParametersOf(node->op());
|
||||
ScopeInfoRef(broker(), p.scope_info());
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSCreateLiteralArray:
|
||||
case IrOpcode::kJSCreateLiteralObject: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
CreateLiteralParameters const& p =
|
||||
CreateLiteralParametersOf(node->op());
|
||||
FeedbackVectorRef(broker(), p.feedback().vector).Serialize();
|
||||
}
|
||||
CreateLiteralParameters const& p = CreateLiteralParametersOf(node->op());
|
||||
FeedbackVectorRef(broker(), p.feedback().vector).Serialize();
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSCreateLiteralRegExp: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
CreateLiteralParameters const& p =
|
||||
CreateLiteralParametersOf(node->op());
|
||||
FeedbackVectorRef(broker(), p.feedback().vector).Serialize();
|
||||
}
|
||||
CreateLiteralParameters const& p = CreateLiteralParametersOf(node->op());
|
||||
FeedbackVectorRef(broker(), p.feedback().vector).Serialize();
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSCreateWithContext: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
|
||||
}
|
||||
ScopeInfoRef(broker(), ScopeInfoOf(node->op()));
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSLoadNamed: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
NamedAccess const& p = NamedAccessOf(node->op());
|
||||
NameRef name(broker(), p.name());
|
||||
if (p.feedback().IsValid()) {
|
||||
broker()->ProcessFeedbackForPropertyAccess(p.feedback(),
|
||||
AccessMode::kLoad, name);
|
||||
}
|
||||
NamedAccess const& p = NamedAccessOf(node->op());
|
||||
NameRef name(broker(), p.name());
|
||||
if (p.feedback().IsValid()) {
|
||||
broker()->ProcessFeedbackForPropertyAccess(p.feedback(),
|
||||
AccessMode::kLoad, name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSStoreNamed: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
NamedAccess const& p = NamedAccessOf(node->op());
|
||||
NameRef name(broker(), p.name());
|
||||
}
|
||||
NamedAccess const& p = NamedAccessOf(node->op());
|
||||
NameRef name(broker(), p.name());
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kStoreField:
|
||||
case IrOpcode::kLoadField: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
FieldAccess access = FieldAccessOf(node->op());
|
||||
Handle<Map> map_handle;
|
||||
if (access.map.ToHandle(&map_handle)) {
|
||||
MapRef(broker(), map_handle);
|
||||
}
|
||||
Handle<Name> name_handle;
|
||||
if (access.name.ToHandle(&name_handle)) {
|
||||
NameRef(broker(), name_handle);
|
||||
}
|
||||
FieldAccess access = FieldAccessOf(node->op());
|
||||
Handle<Map> map_handle;
|
||||
if (access.map.ToHandle(&map_handle)) {
|
||||
MapRef(broker(), map_handle);
|
||||
}
|
||||
Handle<Name> name_handle;
|
||||
if (access.name.ToHandle(&name_handle)) {
|
||||
NameRef(broker(), name_handle);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kMapGuard: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
ZoneHandleSet<Map> const& maps = MapGuardMapsOf(node->op());
|
||||
for (Handle<Map> map : maps) {
|
||||
MapRef(broker(), map);
|
||||
}
|
||||
ZoneHandleSet<Map> const& maps = MapGuardMapsOf(node->op());
|
||||
for (Handle<Map> map : maps) {
|
||||
MapRef(broker(), map);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kCheckMaps: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
ZoneHandleSet<Map> const& maps =
|
||||
CheckMapsParametersOf(node->op()).maps();
|
||||
for (Handle<Map> map : maps) {
|
||||
MapRef(broker(), map);
|
||||
}
|
||||
ZoneHandleSet<Map> const& maps = CheckMapsParametersOf(node->op()).maps();
|
||||
for (Handle<Map> map : maps) {
|
||||
MapRef(broker(), map);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kCompareMaps: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
ZoneHandleSet<Map> const& maps = CompareMapsParametersOf(node->op());
|
||||
for (Handle<Map> map : maps) {
|
||||
MapRef(broker(), map);
|
||||
}
|
||||
ZoneHandleSet<Map> const& maps = CompareMapsParametersOf(node->op());
|
||||
for (Handle<Map> map : maps) {
|
||||
MapRef(broker(), map);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IrOpcode::kJSLoadProperty: {
|
||||
if (!FLAG_concurrent_inlining) {
|
||||
PropertyAccess const& p = PropertyAccessOf(node->op());
|
||||
AccessMode access_mode = AccessMode::kLoad;
|
||||
if (p.feedback().IsValid()) {
|
||||
broker()->ProcessFeedbackForPropertyAccess(p.feedback(), access_mode,
|
||||
base::nullopt);
|
||||
}
|
||||
PropertyAccess const& p = PropertyAccessOf(node->op());
|
||||
AccessMode access_mode = AccessMode::kLoad;
|
||||
if (p.feedback().IsValid()) {
|
||||
broker()->ProcessFeedbackForPropertyAccess(p.feedback(), access_mode,
|
||||
base::nullopt);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -2208,10 +2208,6 @@ bool PipelineImpl::CreateGraph() {
|
||||
Run<GraphBuilderPhase>();
|
||||
RunPrintAndVerify(GraphBuilderPhase::phase_name(), true);
|
||||
|
||||
if (FLAG_concurrent_inlining) {
|
||||
Run<CopyMetadataForConcurrentCompilePhase>();
|
||||
}
|
||||
|
||||
// Perform function context specialization and inlining (if enabled).
|
||||
Run<InliningPhase>();
|
||||
RunPrintAndVerify(InliningPhase::phase_name(), true);
|
||||
|
Loading…
Reference in New Issue
Block a user