#include "src/compiler/property-access-builder.h"
#include <optional>
#include "src/compiler/access-builder.h"
#include "src/compiler/access-info.h"
#include "src/compiler/compilation-dependencies.h"
#include "src/compiler/js-graph.h"
#include "src/compiler/node-matchers.h"
#include "src/compiler/simplified-operator.h"
#include "src/objects/heap-number.h"
#include "src/objects/internal-index.h"
#include "src/objects/js-function.h"
#include "src/objects/map-inl.h"
#include "src/objects/property-details.h"
namespace v8 {
namespace internal {
namespace compiler {
Graph* PropertyAccessBuilder::graph() const { … }
Isolate* PropertyAccessBuilder::isolate() const { … }
CommonOperatorBuilder* PropertyAccessBuilder::common() const { … }
SimplifiedOperatorBuilder* PropertyAccessBuilder::simplified() const { … }
bool HasOnlyStringMaps(JSHeapBroker* broker, ZoneVector<MapRef> const& maps) { … }
namespace {
bool HasOnlyNumberMaps(JSHeapBroker* broker, ZoneVector<MapRef> const& maps) { … }
}
bool PropertyAccessBuilder::TryBuildStringCheck(JSHeapBroker* broker,
ZoneVector<MapRef> const& maps,
Node** receiver, Effect* effect,
Control control) { … }
bool PropertyAccessBuilder::TryBuildNumberCheck(JSHeapBroker* broker,
ZoneVector<MapRef> const& maps,
Node** receiver, Effect* effect,
Control control) { … }
void PropertyAccessBuilder::BuildCheckMaps(Node* object, Effect* effect,
Control control,
ZoneVector<MapRef> const& maps) { … }
Node* PropertyAccessBuilder::BuildCheckValue(Node* receiver, Effect* effect,
Control control,
Handle<HeapObject> value) { … }
Node* PropertyAccessBuilder::ResolveHolder(
PropertyAccessInfo const& access_info, Node* lookup_start_object) { … }
MachineRepresentation PropertyAccessBuilder::ConvertRepresentation(
Representation representation) { … }
std::optional<Node*> PropertyAccessBuilder::FoldLoadDictPrototypeConstant(
PropertyAccessInfo const& access_info) { … }
Node* PropertyAccessBuilder::TryFoldLoadConstantDataField(
NameRef name, PropertyAccessInfo const& access_info,
Node* lookup_start_object) { … }
Node* PropertyAccessBuilder::BuildLoadDataField(NameRef name, Node* holder,
FieldAccess&& field_access,
bool is_inobject, Node** effect,
Node** control) { … }
Node* PropertyAccessBuilder::BuildLoadDataField(
NameRef name, PropertyAccessInfo const& access_info,
Node* lookup_start_object, Node** effect, Node** control) { … }
}
}
}