| Index: src/compiler/access-info.h
|
| diff --git a/src/compiler/property-access-info.h b/src/compiler/access-info.h
|
| similarity index 70%
|
| rename from src/compiler/property-access-info.h
|
| rename to src/compiler/access-info.h
|
| index 54ea1abda2ded1d95cc6543526e536c5a8c0b311..4f60552111077b7322e48f416d726cb6d21c03ff 100644
|
| --- a/src/compiler/property-access-info.h
|
| +++ b/src/compiler/access-info.h
|
| @@ -2,8 +2,8 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef V8_COMPILER_PROPERTY_ACCESS_INFO_H_
|
| -#define V8_COMPILER_PROPERTY_ACCESS_INFO_H_
|
| +#ifndef V8_COMPILER_ACCESS_INFO_H_
|
| +#define V8_COMPILER_ACCESS_INFO_H_
|
|
|
| #include <iosfwd>
|
|
|
| @@ -23,9 +23,30 @@ class TypeCache;
|
| namespace compiler {
|
|
|
| // Whether we are loading a property or storing to a property.
|
| -enum class PropertyAccessMode { kLoad, kStore };
|
| +enum class AccessMode { kLoad, kStore };
|
|
|
| -std::ostream& operator<<(std::ostream&, PropertyAccessMode);
|
| +std::ostream& operator<<(std::ostream&, AccessMode);
|
| +
|
| +
|
| +// This class encapsulates all information required to access a certain element.
|
| +class ElementAccessInfo final {
|
| + public:
|
| + ElementAccessInfo();
|
| + ElementAccessInfo(Type* receiver_type, ElementsKind elements_kind,
|
| + MaybeHandle<JSObject> holder)
|
| + : elements_kind_(elements_kind),
|
| + holder_(holder),
|
| + receiver_type_(receiver_type) {}
|
| +
|
| + MaybeHandle<JSObject> holder() const { return holder_; }
|
| + ElementsKind elements_kind() const { return elements_kind_; }
|
| + Type* receiver_type() const { return receiver_type_; }
|
| +
|
| + private:
|
| + ElementsKind elements_kind_;
|
| + MaybeHandle<JSObject> holder_;
|
| + Type* receiver_type_;
|
| +};
|
|
|
|
|
| // This class encapsulates all information required to access a certain
|
| @@ -78,17 +99,22 @@ class PropertyAccessInfo final {
|
| };
|
|
|
|
|
| -// Factory class for {PropertyAccessInfo}s.
|
| -class PropertyAccessInfoFactory final {
|
| +// Factory class for {ElementAccessInfo}s and {PropertyAccessInfo}s.
|
| +class AccessInfoFactory final {
|
| public:
|
| - PropertyAccessInfoFactory(CompilationDependencies* dependencies,
|
| - Handle<Context> native_context, Zone* zone);
|
| -
|
| + AccessInfoFactory(CompilationDependencies* dependencies,
|
| + Handle<Context> native_context, Zone* zone);
|
| +
|
| + bool ComputeElementAccessInfo(Handle<Map> map, AccessMode access_mode,
|
| + ElementAccessInfo* access_info);
|
| + bool ComputeElementAccessInfos(MapHandleList const& maps,
|
| + AccessMode access_mode,
|
| + ZoneVector<ElementAccessInfo>* access_infos);
|
| bool ComputePropertyAccessInfo(Handle<Map> map, Handle<Name> name,
|
| - PropertyAccessMode access_mode,
|
| + AccessMode access_mode,
|
| PropertyAccessInfo* access_info);
|
| bool ComputePropertyAccessInfos(MapHandleList const& maps, Handle<Name> name,
|
| - PropertyAccessMode access_mode,
|
| + AccessMode access_mode,
|
| ZoneVector<PropertyAccessInfo>* access_infos);
|
|
|
| private:
|
| @@ -110,11 +136,11 @@ class PropertyAccessInfoFactory final {
|
| TypeCache const& type_cache_;
|
| Zone* const zone_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(PropertyAccessInfoFactory);
|
| + DISALLOW_COPY_AND_ASSIGN(AccessInfoFactory);
|
| };
|
|
|
| } // namespace compiler
|
| } // namespace internal
|
| } // namespace v8
|
|
|
| -#endif // V8_COMPILER_PROPERTY_ACCESS_INFO_H_
|
| +#endif // V8_COMPILER_ACCESS_INFO_H_
|
|
|