���� JFIF �� � ( %"1"%)+...383,7(-.-
![]() Server : Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.20 System : Linux st2.domain.com 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 User : apache ( 48) PHP Version : 7.4.20 Disable Function : NONE Directory : /home/real/node-v13.0.1/deps/v8/src/compiler/ |
// Copyright 2016 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "src/compiler/checkpoint-elimination.h" #include "src/compiler/node-properties.h" namespace v8 { namespace internal { namespace compiler { CheckpointElimination::CheckpointElimination(Editor* editor) : AdvancedReducer(editor) {} namespace { // The given checkpoint is redundant if it is effect-wise dominated by another // checkpoint and there is no observable write in between. For now we consider // a linear effect chain only instead of true effect-wise dominance. bool IsRedundantCheckpoint(Node* node) { Node* effect = NodeProperties::GetEffectInput(node); while (effect->op()->HasProperty(Operator::kNoWrite) && effect->op()->EffectInputCount() == 1) { if (effect->opcode() == IrOpcode::kCheckpoint) return true; effect = NodeProperties::GetEffectInput(effect); } return false; } } // namespace Reduction CheckpointElimination::ReduceCheckpoint(Node* node) { DCHECK_EQ(IrOpcode::kCheckpoint, node->opcode()); if (IsRedundantCheckpoint(node)) { return Replace(NodeProperties::GetEffectInput(node)); } return NoChange(); } Reduction CheckpointElimination::Reduce(Node* node) { DisallowHeapAccess no_heap_access; switch (node->opcode()) { case IrOpcode::kCheckpoint: return ReduceCheckpoint(node); default: break; } return NoChange(); } } // namespace compiler } // namespace internal } // namespace v8