// Copyright 2015 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_TYPE_HINT_ANALYZER_H_ #define V8_COMPILER_TYPE_HINT_ANALYZER_H_ #include "src/handles.h" #include "src/type-hints.h" #include "src/zone/zone-containers.h" namespace v8 { namespace internal { namespace compiler { // The result of analyzing type hints. class TypeHintAnalysis final : public ZoneObject { public: typedef ZoneMap> Infos; explicit TypeHintAnalysis(Infos const& infos, Zone* zone) : infos_(infos), zone_(zone) {} bool GetBinaryOperationHint(TypeFeedbackId id, BinaryOperationHint* hint) const; bool GetCompareOperationHint(TypeFeedbackId id, CompareOperationHint* hint) const; bool GetToBooleanHints(TypeFeedbackId id, ToBooleanHints* hints) const; private: Zone* zone() const { return zone_; } Infos const infos_; Zone* zone_; }; // The class that performs type hint analysis on the fullcodegen code object. class TypeHintAnalyzer final { public: explicit TypeHintAnalyzer(Zone* zone) : zone_(zone) {} TypeHintAnalysis* Analyze(Handle code); private: Zone* zone() const { return zone_; } Zone* const zone_; DISALLOW_COPY_AND_ASSIGN(TypeHintAnalyzer); }; } // namespace compiler } // namespace internal } // namespace v8 #endif // V8_COMPILER_TYPE_HINT_ANALYZER_H_