| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_COMPILER_ACCESS_BUILDER_H_ | 5 #ifndef V8_COMPILER_ACCESS_BUILDER_H_ |
| 6 #define V8_COMPILER_ACCESS_BUILDER_H_ | 6 #define V8_COMPILER_ACCESS_BUILDER_H_ |
| 7 | 7 |
| 8 #include "src/compiler/simplified-operator.h" | 8 #include "src/compiler/simplified-operator.h" |
| 9 | 9 |
| 10 namespace v8 { | 10 namespace v8 { |
| 11 namespace internal { | 11 namespace internal { |
| 12 namespace compiler { | 12 namespace compiler { |
| 13 | 13 |
| 14 // This access builder provides a set of static methods constructing commonly | 14 // This access builder provides a set of static methods constructing commonly |
| 15 // used FieldAccess and ElementAccess descriptors. These descriptors serve as | 15 // used FieldAccess and ElementAccess descriptors. These descriptors serve as |
| 16 // parameters to simplified load/store operators. | 16 // parameters to simplified load/store operators. |
| 17 class AccessBuilder final : public AllStatic { | 17 class AccessBuilder final : public AllStatic { |
| 18 public: | 18 public: |
| 19 // =========================================================================== |
| 20 // Access to heap object fields and elements (based on tagged pointer). |
| 21 |
| 19 // Provides access to HeapObject::map() field. | 22 // Provides access to HeapObject::map() field. |
| 20 static FieldAccess ForMap(); | 23 static FieldAccess ForMap(); |
| 21 | 24 |
| 22 // Provides access to JSObject::properties() field. | 25 // Provides access to JSObject::properties() field. |
| 23 static FieldAccess ForJSObjectProperties(); | 26 static FieldAccess ForJSObjectProperties(); |
| 24 | 27 |
| 25 // Provides access to JSObject::elements() field. | 28 // Provides access to JSObject::elements() field. |
| 26 static FieldAccess ForJSObjectElements(); | 29 static FieldAccess ForJSObjectElements(); |
| 27 | 30 |
| 28 // Provides access to JSFunction::context() field. | 31 // Provides access to JSFunction::context() field. |
| 29 static FieldAccess ForJSFunctionContext(); | 32 static FieldAccess ForJSFunctionContext(); |
| 30 | 33 |
| 34 // Provides access to JSFunction::shared() field. |
| 35 static FieldAccess ForJSFunctionSharedFunctionInfo(); |
| 36 |
| 31 // Provides access to JSArrayBuffer::backing_store() field. | 37 // Provides access to JSArrayBuffer::backing_store() field. |
| 32 static FieldAccess ForJSArrayBufferBackingStore(); | 38 static FieldAccess ForJSArrayBufferBackingStore(); |
| 33 | 39 |
| 34 // Provides access to JSDate fields. | 40 // Provides access to JSDate fields. |
| 35 static FieldAccess ForJSDateField(JSDate::FieldIndex index); | 41 static FieldAccess ForJSDateField(JSDate::FieldIndex index); |
| 36 | 42 |
| 37 // Provides access to FixedArray::length() field. | 43 // Provides access to FixedArray::length() field. |
| 38 static FieldAccess ForFixedArrayLength(); | 44 static FieldAccess ForFixedArrayLength(); |
| 39 | 45 |
| 40 // Provides access to ExternalArray::external_pointer() field. | 46 // Provides access to ExternalArray::external_pointer() field. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 57 | 63 |
| 58 // Provides access to String::length() field. | 64 // Provides access to String::length() field. |
| 59 static FieldAccess ForStringLength(Zone* zone); | 65 static FieldAccess ForStringLength(Zone* zone); |
| 60 | 66 |
| 61 // Provides access to JSValue::value() field. | 67 // Provides access to JSValue::value() field. |
| 62 static FieldAccess ForValue(); | 68 static FieldAccess ForValue(); |
| 63 | 69 |
| 64 // Provides access Context slots. | 70 // Provides access Context slots. |
| 65 static FieldAccess ForContextSlot(size_t index); | 71 static FieldAccess ForContextSlot(size_t index); |
| 66 | 72 |
| 67 // Provides access to the backing store of a StatsCounter. | |
| 68 static FieldAccess ForStatsCounter(); | |
| 69 | |
| 70 // Provides access to PropertyCell::value() field. | 73 // Provides access to PropertyCell::value() field. |
| 71 static FieldAccess ForPropertyCellValue(); | 74 static FieldAccess ForPropertyCellValue(); |
| 72 | 75 |
| 76 // Provides access to SharedFunctionInfo::feedback_vector() field. |
| 77 static FieldAccess ForSharedFunctionInfoTypeFeedbackVector(); |
| 78 |
| 73 // Provides access to FixedArray elements. | 79 // Provides access to FixedArray elements. |
| 74 static ElementAccess ForFixedArrayElement(); | 80 static ElementAccess ForFixedArrayElement(); |
| 75 | 81 |
| 76 // Provides access to Fixed{type}TypedArray and External{type}Array elements. | 82 // Provides access to Fixed{type}TypedArray and External{type}Array elements. |
| 77 static ElementAccess ForTypedArrayElement(ExternalArrayType type, | 83 static ElementAccess ForTypedArrayElement(ExternalArrayType type, |
| 78 bool is_external); | 84 bool is_external); |
| 79 | 85 |
| 80 // Provides access to the charaters of sequential strings. | 86 // Provides access to the characters of sequential strings. |
| 81 static ElementAccess ForSeqStringChar(String::Encoding encoding); | 87 static ElementAccess ForSeqStringChar(String::Encoding encoding); |
| 82 | 88 |
| 83 // Provides access to the SharedFunctionInfo in a JSFunction. | 89 // =========================================================================== |
| 84 static FieldAccess ForJSFunctionSharedFunctionInfo(); | 90 // Access to global per-isolate variables (based on external reference). |
| 85 | 91 |
| 86 // Provides access to the TypeFeedbackVector in SharedFunctionInfo. | 92 // Provides access to the backing store of a StatsCounter. |
| 87 static FieldAccess ForSharedFunctionInfoTypeFeedbackVector(); | 93 static FieldAccess ForStatsCounter(); |
| 94 |
| 95 // =========================================================================== |
| 96 // Access to activation records on the stack (based on frame pointer). |
| 88 | 97 |
| 89 // Provides access to the next frame pointer in a stack frame. | 98 // Provides access to the next frame pointer in a stack frame. |
| 90 static FieldAccess ForFrameCallerFramePtr(); | 99 static FieldAccess ForFrameCallerFramePtr(); |
| 91 | 100 |
| 92 // Provides access to the marker in a stack frame. | 101 // Provides access to the marker in a stack frame. |
| 93 static FieldAccess ForFrameMarker(); | 102 static FieldAccess ForFrameMarker(); |
| 94 | 103 |
| 95 private: | 104 private: |
| 96 DISALLOW_IMPLICIT_CONSTRUCTORS(AccessBuilder); | 105 DISALLOW_IMPLICIT_CONSTRUCTORS(AccessBuilder); |
| 97 }; | 106 }; |
| 98 | 107 |
| 99 } // namespace compiler | 108 } // namespace compiler |
| 100 } // namespace internal | 109 } // namespace internal |
| 101 } // namespace v8 | 110 } // namespace v8 |
| 102 | 111 |
| 103 #endif // V8_COMPILER_ACCESS_BUILDER_H_ | 112 #endif // V8_COMPILER_ACCESS_BUILDER_H_ |
| OLD | NEW |