OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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_CODE_STUB_ASSEMBLER_H_ | 5 #ifndef V8_CODE_STUB_ASSEMBLER_H_ |
6 #define V8_CODE_STUB_ASSEMBLER_H_ | 6 #define V8_CODE_STUB_ASSEMBLER_H_ |
7 | 7 |
8 #include "src/compiler/code-assembler.h" | 8 #include "src/compiler/code-assembler.h" |
9 #include "src/objects.h" | 9 #include "src/objects.h" |
10 | 10 |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 // Load the bit field of a Map. | 111 // Load the bit field of a Map. |
112 compiler::Node* LoadMapBitField(compiler::Node* map); | 112 compiler::Node* LoadMapBitField(compiler::Node* map); |
113 // Load bit field 2 of a map. | 113 // Load bit field 2 of a map. |
114 compiler::Node* LoadMapBitField2(compiler::Node* map); | 114 compiler::Node* LoadMapBitField2(compiler::Node* map); |
115 // Load bit field 3 of a map. | 115 // Load bit field 3 of a map. |
116 compiler::Node* LoadMapBitField3(compiler::Node* map); | 116 compiler::Node* LoadMapBitField3(compiler::Node* map); |
117 // Load the instance type of a map. | 117 // Load the instance type of a map. |
118 compiler::Node* LoadMapInstanceType(compiler::Node* map); | 118 compiler::Node* LoadMapInstanceType(compiler::Node* map); |
119 // Load the instance descriptors of a map. | 119 // Load the instance descriptors of a map. |
120 compiler::Node* LoadMapDescriptors(compiler::Node* map); | 120 compiler::Node* LoadMapDescriptors(compiler::Node* map); |
| 121 // Load the prototype of a map. |
| 122 compiler::Node* LoadMapPrototype(compiler::Node* map); |
121 | 123 |
122 // Load the hash field of a name. | 124 // Load the hash field of a name. |
123 compiler::Node* LoadNameHash(compiler::Node* name); | 125 compiler::Node* LoadNameHash(compiler::Node* name); |
124 // Load the instance size of a Map. | 126 // Load the instance size of a Map. |
125 compiler::Node* LoadMapInstanceSize(compiler::Node* map); | 127 compiler::Node* LoadMapInstanceSize(compiler::Node* map); |
126 | 128 |
127 compiler::Node* AllocateUninitializedFixedArray(compiler::Node* length); | 129 compiler::Node* AllocateUninitializedFixedArray(compiler::Node* length); |
128 | 130 |
129 // Load an array element from a FixedArray. | 131 // Load an array element from a FixedArray. |
130 compiler::Node* LoadFixedArrayElementInt32Index(compiler::Node* object, | 132 compiler::Node* LoadFixedArrayElementInt32Index(compiler::Node* object, |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 | 194 |
193 // Returns a node that is true if the given bit is set in |word32|. | 195 // Returns a node that is true if the given bit is set in |word32|. |
194 template <typename T> | 196 template <typename T> |
195 compiler::Node* BitFieldDecode(compiler::Node* word32) { | 197 compiler::Node* BitFieldDecode(compiler::Node* word32) { |
196 return BitFieldDecode(word32, T::kShift, T::kMask); | 198 return BitFieldDecode(word32, T::kShift, T::kMask); |
197 } | 199 } |
198 | 200 |
199 compiler::Node* BitFieldDecode(compiler::Node* word32, uint32_t shift, | 201 compiler::Node* BitFieldDecode(compiler::Node* word32, uint32_t shift, |
200 uint32_t mask); | 202 uint32_t mask); |
201 | 203 |
| 204 // Various building blocks for stubs doing property lookups. |
| 205 void TryToName(compiler::Node* key, Label* if_keyisindex, Variable* var_index, |
| 206 Label* if_keyisunique, Label* call_runtime); |
| 207 |
| 208 void TryLookupProperty(compiler::Node* object, compiler::Node* map, |
| 209 compiler::Node* instance_type, compiler::Node* name, |
| 210 Label* if_found, Label* if_not_found, |
| 211 Label* call_runtime); |
| 212 |
| 213 void TryLookupElement(compiler::Node* object, compiler::Node* map, |
| 214 compiler::Node* instance_type, compiler::Node* index, |
| 215 Label* if_found, Label* if_not_found, |
| 216 Label* call_runtime); |
| 217 |
202 private: | 218 private: |
203 compiler::Node* AllocateRawAligned(compiler::Node* size_in_bytes, | 219 compiler::Node* AllocateRawAligned(compiler::Node* size_in_bytes, |
204 AllocationFlags flags, | 220 AllocationFlags flags, |
205 compiler::Node* top_address, | 221 compiler::Node* top_address, |
206 compiler::Node* limit_address); | 222 compiler::Node* limit_address); |
207 compiler::Node* AllocateRawUnaligned(compiler::Node* size_in_bytes, | 223 compiler::Node* AllocateRawUnaligned(compiler::Node* size_in_bytes, |
208 AllocationFlags flags, | 224 AllocationFlags flags, |
209 compiler::Node* top_adddress, | 225 compiler::Node* top_adddress, |
210 compiler::Node* limit_address); | 226 compiler::Node* limit_address); |
211 }; | 227 }; |
212 | 228 |
213 } // namespace internal | 229 } // namespace internal |
214 } // namespace v8 | 230 } // namespace v8 |
215 | 231 |
216 #endif // V8_CODE_STUB_ASSEMBLER_H_ | 232 #endif // V8_CODE_STUB_ASSEMBLER_H_ |
OLD | NEW |