blob: d6385e444dc87bc86d36157a92222fe6590622c7 [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// Copyright 2014 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_ACCESS_BUILDER_H_
6#define V8_COMPILER_ACCESS_BUILDER_H_
7
8#include "src/compiler/simplified-operator.h"
9
10namespace v8 {
11namespace internal {
12namespace compiler {
13
14// This access builder provides a set of static methods constructing commonly
15// used FieldAccess and ElementAccess descriptors. These descriptors server as
16// parameters to simplified load/store operators.
17class AccessBuilder FINAL : public AllStatic {
18 public:
19 // Provides access to HeapObject::map() field.
20 static FieldAccess ForMap();
21
22 // Provides access to JSObject::properties() field.
23 static FieldAccess ForJSObjectProperties();
24
25 // Provides access to JSObject::elements() field.
26 static FieldAccess ForJSObjectElements();
27
28 // Provides access to JSFunction::context() field.
29 static FieldAccess ForJSFunctionContext();
30
31 // Provides access to JSArrayBuffer::backing_store() field.
32 static FieldAccess ForJSArrayBufferBackingStore();
33
34 // Provides access to ExternalArray::external_pointer() field.
35 static FieldAccess ForExternalArrayPointer();
36
Emily Bernierd0a1eb72015-03-24 16:35:39 -040037 // Provides access to Map::instance_type() field.
38 static FieldAccess ForMapInstanceType();
39
40 // Provides access to String::length() field.
41 static FieldAccess ForStringLength();
42
43 // Provides access to JSValue::value() field.
44 static FieldAccess ForValue();
45
46 // Provides access Context slots.
47 static FieldAccess ForContextSlot(size_t index);
48
Ben Murdochb8a8cc12014-11-26 15:28:44 +000049 // Provides access to FixedArray elements.
50 static ElementAccess ForFixedArrayElement();
51
Ben Murdochb8a8cc12014-11-26 15:28:44 +000052 // Provides access to Fixed{type}TypedArray and External{type}Array elements.
53 static ElementAccess ForTypedArrayElement(ExternalArrayType type,
54 bool is_external);
55
56 private:
57 DISALLOW_IMPLICIT_CONSTRUCTORS(AccessBuilder);
58};
59
60} // namespace compiler
61} // namespace internal
62} // namespace v8
63
64#endif // V8_COMPILER_ACCESS_BUILDER_H_