V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
property-access-builder.h
1
// Copyright 2017 the V8 project authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#ifndef V8_COMPILER_PROPERTY_ACCESS_BUILDER_H_
6
#define V8_COMPILER_PROPERTY_ACCESS_BUILDER_H_
7
8
#include <vector>
9
10
#include "src/handles.h"
11
#include "src/objects/map.h"
12
#include "src/zone/zone-containers.h"
13
14
namespace
v8
{
15
namespace
internal {
16
namespace
compiler {
17
18
class
CommonOperatorBuilder;
19
class
CompilationDependencies;
20
class
Graph;
21
class
JSGraph;
22
class
JSHeapBroker;
23
class
Node;
24
class
PropertyAccessInfo;
25
class
SimplifiedOperatorBuilder;
26
27
class
PropertyAccessBuilder
{
28
public
:
29
PropertyAccessBuilder
(
JSGraph
* jsgraph,
JSHeapBroker
* broker,
30
CompilationDependencies
* dependencies)
31
: jsgraph_(jsgraph), broker_(broker), dependencies_(dependencies) {}
32
33
// Builds the appropriate string check if the maps are only string
34
// maps.
35
bool
TryBuildStringCheck(MapHandles
const
& maps,
Node
** receiver,
36
Node
** effect,
Node
* control);
37
// Builds a number check if all maps are number maps.
38
bool
TryBuildNumberCheck(MapHandles
const
& maps,
Node
** receiver,
39
Node
** effect,
Node
* control);
40
41
Node
* BuildCheckHeapObject(
Node
* receiver,
Node
** effect,
Node
* control);
42
void
BuildCheckMaps(
Node
* receiver,
Node
** effect,
Node
* control,
43
std::vector<
Handle<Map>
>
const
& receiver_maps);
44
Node
* BuildCheckValue(
Node
* receiver,
Node
** effect,
Node
* control,
45
Handle<HeapObject>
value);
46
47
// Builds the actual load for data-field and data-constant-field
48
// properties (without heap-object or map checks).
49
Node
* BuildLoadDataField(
Handle<Name>
name,
50
PropertyAccessInfo
const
& access_info,
51
Node
* receiver,
Node
** effect,
Node
** control);
52
53
private
:
54
JSGraph
* jsgraph()
const
{
return
jsgraph_; }
55
JSHeapBroker
* broker()
const
{
return
broker_; }
56
CompilationDependencies
* dependencies()
const
{
return
dependencies_; }
57
Graph
* graph()
const
;
58
Isolate
* isolate()
const
;
59
CommonOperatorBuilder
* common()
const
;
60
SimplifiedOperatorBuilder
* simplified()
const
;
61
62
Node
* TryBuildLoadConstantDataField(
Handle<Name>
name,
63
PropertyAccessInfo
const
& access_info,
64
Node
* receiver);
65
// Returns a node with the holder for the property access described by
66
// {access_info}.
67
Node
* ResolveHolder(
PropertyAccessInfo
const
& access_info,
Node
* receiver);
68
69
JSGraph
* jsgraph_;
70
JSHeapBroker
* broker_;
71
CompilationDependencies
* dependencies_;
72
};
73
74
bool
HasOnlyStringMaps(MapHandles
const
& maps);
75
76
}
// namespace compiler
77
}
// namespace internal
78
}
// namespace v8
79
80
#endif // V8_COMPILER_PROPERTY_ACCESS_BUILDER_H_
v8::internal::compiler::CompilationDependencies
Definition:
compilation-dependencies.h:29
v8::internal::compiler::JSGraph
Definition:
js-graph.h:26
v8::internal::compiler::PropertyAccessBuilder
Definition:
property-access-builder.h:27
v8
Definition:
libplatform.h:13
v8::internal::Handle< Map >
v8::internal::Isolate
Definition:
isolate.h:516
v8::internal::compiler::Graph
Definition:
graph.h:35
v8::internal::compiler::JSHeapBroker
Definition:
js-heap-broker.h:594
v8::internal::compiler::Node
Definition:
node.h:43
v8::internal::compiler::SimplifiedOperatorBuilder
Definition:
simplified-operator.h:531
v8::internal::compiler::PropertyAccessInfo
Definition:
access-info.h:59
v8::internal::compiler::CommonOperatorBuilder
Definition:
common-operator.h:445
v8
src
compiler
property-access-builder.h
Generated on Tue Dec 25 2018 14:38:42 by
1.8.14