// Copyright 2017 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. #ifndef V8_COMPILER_JS_TYPE_HINT_LOWERING_H_ #define V8_COMPILER_JS_TYPE_HINT_LOWERING_H_ #include "src/base/flags.h" #include "src/compiler/graph-reducer.h" #include "src/deoptimizer/deoptimize-reason.h" namespace v8 { namespace internal { // Forward declarations. class FeedbackSlot; namespace compiler { // Forward declarations. class JSGraph; class Node; class Operator; // The type-hint lowering consumes feedback about high-level operations in order // to potentially emit nodes using speculative simplified operators in favor of // the generic JavaScript operators. // // This lowering is implemented as an early reduction and can be applied before // nodes are placed into the initial graph. It provides the ability to shortcut // the JavaScript-level operators and directly emit simplified-level operators // even during initial graph building. This is the reason this lowering doesn't // follow the interface of the reducer framework used after graph construction. // The result of the lowering is encapsulated in // {the JSTypeHintLowering::LoweringResult} class. class JSTypeHintLowering { … }; } // namespace compiler } // namespace internal } // namespace v8 #endif // V8_COMPILER_JS_TYPE_HINT_LOWERING_H_