5 #ifndef V8_COMPILER_ACCESS_INFO_H_ 6 #define V8_COMPILER_ACCESS_INFO_H_ 10 #include "src/compiler/types.h" 11 #include "src/field-index.h" 12 #include "src/machine-type.h" 13 #include "src/objects.h" 14 #include "src/objects/map.h" 15 #include "src/zone/zone-containers.h" 26 class CompilationDependencies;
32 enum class AccessMode { kLoad, kStore, kStoreInLiteral };
34 std::ostream& operator<<(std::ostream&, AccessMode);
37 typedef std::vector<std::pair<Handle<Map>, Handle<Map>>> MapTransitionList;
44 ElementsKind elements_kind);
46 ElementsKind elements_kind()
const {
return elements_kind_; }
47 MapHandles
const& receiver_maps()
const {
return receiver_maps_; }
48 MapTransitionList& transitions() {
return transitions_; }
49 MapTransitionList
const& transitions()
const {
return transitions_; }
52 ElementsKind elements_kind_;
53 MapHandles receiver_maps_;
54 MapTransitionList transitions_;
78 PropertyConstness constness, MapHandles
const& receiver_maps,
79 FieldIndex field_index, MachineRepresentation field_representation,
93 Zone* zone) V8_WARN_UNUSED_RESULT;
95 bool IsNotFound()
const {
return kind() == kNotFound; }
96 bool IsDataConstant()
const {
return kind() == kDataConstant; }
97 bool IsDataField()
const {
return kind() == kDataField; }
100 bool IsDataConstantField()
const {
return kind() == kDataConstantField; }
101 bool IsAccessorConstant()
const {
return kind() == kAccessorConstant; }
102 bool IsModuleExport()
const {
return kind() == kModuleExport; }
103 bool IsStringLength()
const {
return kind() == kStringLength; }
105 bool HasTransitionMap()
const {
return !transition_map().is_null(); }
107 Kind kind()
const {
return kind_; }
111 FieldIndex field_index()
const {
return field_index_; }
112 Type field_type()
const {
return field_type_; }
113 MachineRepresentation field_representation()
const {
114 return field_representation_;
117 MapHandles
const& receiver_maps()
const {
return receiver_maps_; }
122 MapHandles
const& receiver_maps);
127 MachineRepresentation field_representation,
129 MapHandles
const& receiver_maps);
132 MapHandles receiver_maps_;
137 MachineRepresentation field_representation_;
150 bool ComputeElementAccessInfo(
Handle<Map> map, AccessMode access_mode,
152 bool ComputeElementAccessInfos(MapHandles
const& maps, AccessMode access_mode,
155 AccessMode access_mode,
157 bool ComputePropertyAccessInfo(MapHandles
const& maps,
Handle<Name> name,
158 AccessMode access_mode,
160 bool ComputePropertyAccessInfos(MapHandles
const& maps,
Handle<Name> name,
161 AccessMode access_mode,
165 bool ConsolidateElementLoad(MapHandles
const& maps,
176 Isolate* isolate()
const {
return isolate_; }
178 Zone* zone()
const {
return zone_; }
194 #endif // V8_COMPILER_ACCESS_INFO_H_