Upstream version 10.39.233.0
[platform/framework/web/crosswalk.git] / src / v8 / src / compiler / access-builder.h
1 // 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
10 namespace v8 {
11 namespace internal {
12 namespace 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.
17 class 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
37   // Provides access to FixedArray elements.
38   static ElementAccess ForFixedArrayElement();
39
40   // TODO(mstarzinger): Raw access only for testing, drop me.
41   static ElementAccess ForBackingStoreElement(MachineType rep);
42
43   // Provides access to Fixed{type}TypedArray and External{type}Array elements.
44   static ElementAccess ForTypedArrayElement(ExternalArrayType type,
45                                             bool is_external);
46
47  private:
48   DISALLOW_IMPLICIT_CONSTRUCTORS(AccessBuilder);
49 };
50
51 }  // namespace compiler
52 }  // namespace internal
53 }  // namespace v8
54
55 #endif  // V8_COMPILER_ACCESS_BUILDER_H_