| 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_LOOKUP_H_ | 5 #ifndef V8_LOOKUP_H_ |
| 6 #define V8_LOOKUP_H_ | 6 #define V8_LOOKUP_H_ |
| 7 | 7 |
| 8 #include "src/factory.h" | 8 #include "src/factory.h" |
| 9 #include "src/globals.h" | 9 #include "src/globals.h" |
| 10 #include "src/isolate.h" | 10 #include "src/isolate.h" |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 } | 229 } |
| 230 PropertyAttributes property_attributes() const { | 230 PropertyAttributes property_attributes() const { |
| 231 return property_details().attributes(); | 231 return property_details().attributes(); |
| 232 } | 232 } |
| 233 bool IsConfigurable() const { return property_details().IsConfigurable(); } | 233 bool IsConfigurable() const { return property_details().IsConfigurable(); } |
| 234 bool IsReadOnly() const { return property_details().IsReadOnly(); } | 234 bool IsReadOnly() const { return property_details().IsReadOnly(); } |
| 235 bool IsEnumerable() const { return property_details().IsEnumerable(); } | 235 bool IsEnumerable() const { return property_details().IsEnumerable(); } |
| 236 Representation representation() const { | 236 Representation representation() const { |
| 237 return property_details().representation(); | 237 return property_details().representation(); |
| 238 } | 238 } |
| 239 PropertyConstness constness() const { return property_details().constness(); } |
| 239 FieldIndex GetFieldIndex() const; | 240 FieldIndex GetFieldIndex() const; |
| 240 Handle<FieldType> GetFieldType() const; | 241 Handle<FieldType> GetFieldType() const; |
| 241 int GetFieldDescriptorIndex() const; | 242 int GetFieldDescriptorIndex() const; |
| 242 int GetAccessorIndex() const; | 243 int GetAccessorIndex() const; |
| 243 int GetConstantIndex() const; | 244 int GetConstantIndex() const; |
| 244 Handle<PropertyCell> GetPropertyCell() const; | 245 Handle<PropertyCell> GetPropertyCell() const; |
| 245 Handle<Object> GetAccessors() const; | 246 Handle<Object> GetAccessors() const; |
| 246 inline Handle<InterceptorInfo> GetInterceptor() const { | 247 inline Handle<InterceptorInfo> GetInterceptor() const { |
| 247 DCHECK_EQ(INTERCEPTOR, state_); | 248 DCHECK_EQ(INTERCEPTOR, state_); |
| 248 InterceptorInfo* result = | 249 InterceptorInfo* result = |
| 249 IsElement() ? GetInterceptor<true>(JSObject::cast(*holder_)) | 250 IsElement() ? GetInterceptor<true>(JSObject::cast(*holder_)) |
| 250 : GetInterceptor<false>(JSObject::cast(*holder_)); | 251 : GetInterceptor<false>(JSObject::cast(*holder_)); |
| 251 return handle(result, isolate_); | 252 return handle(result, isolate_); |
| 252 } | 253 } |
| 253 Handle<InterceptorInfo> GetInterceptorForFailedAccessCheck() const; | 254 Handle<InterceptorInfo> GetInterceptorForFailedAccessCheck() const; |
| 254 Handle<Object> GetDataValue() const; | 255 Handle<Object> GetDataValue() const; |
| 255 void WriteDataValue(Handle<Object> value); | 256 void WriteDataValue(Handle<Object> value, bool initializing_store); |
| 256 inline void UpdateProtector() { | 257 inline void UpdateProtector() { |
| 257 if (IsElement()) return; | 258 if (IsElement()) return; |
| 258 if (*name_ == heap()->is_concat_spreadable_symbol() || | 259 if (*name_ == heap()->is_concat_spreadable_symbol() || |
| 259 *name_ == heap()->constructor_string() || | 260 *name_ == heap()->constructor_string() || |
| 260 *name_ == heap()->species_symbol() || | 261 *name_ == heap()->species_symbol() || |
| 261 *name_ == heap()->has_instance_symbol() || | 262 *name_ == heap()->has_instance_symbol() || |
| 262 *name_ == heap()->iterator_symbol()) { | 263 *name_ == heap()->iterator_symbol()) { |
| 263 InternalUpdateProtector(); | 264 InternalUpdateProtector(); |
| 264 } | 265 } |
| 265 } | 266 } |
| (...skipping 30 matching lines...) Expand all Loading... |
| 296 State LookupInRegularHolder(Map* map, JSReceiver* holder); | 297 State LookupInRegularHolder(Map* map, JSReceiver* holder); |
| 297 template <bool is_element> | 298 template <bool is_element> |
| 298 State LookupInSpecialHolder(Map* map, JSReceiver* holder); | 299 State LookupInSpecialHolder(Map* map, JSReceiver* holder); |
| 299 template <bool is_element> | 300 template <bool is_element> |
| 300 void RestartLookupForNonMaskingInterceptors() { | 301 void RestartLookupForNonMaskingInterceptors() { |
| 301 RestartInternal<is_element>(InterceptorState::kProcessNonMasking); | 302 RestartInternal<is_element>(InterceptorState::kProcessNonMasking); |
| 302 } | 303 } |
| 303 template <bool is_element> | 304 template <bool is_element> |
| 304 void RestartInternal(InterceptorState interceptor_state); | 305 void RestartInternal(InterceptorState interceptor_state); |
| 305 Handle<Object> FetchValue() const; | 306 Handle<Object> FetchValue() const; |
| 307 bool IsConstFieldValueEqualTo(Object* value) const; |
| 306 template <bool is_element> | 308 template <bool is_element> |
| 307 void ReloadPropertyInformation(); | 309 void ReloadPropertyInformation(); |
| 308 | 310 |
| 309 template <bool is_element> | 311 template <bool is_element> |
| 310 bool SkipInterceptor(JSObject* holder); | 312 bool SkipInterceptor(JSObject* holder); |
| 311 template <bool is_element> | 313 template <bool is_element> |
| 312 inline InterceptorInfo* GetInterceptor(JSObject* holder) const { | 314 inline InterceptorInfo* GetInterceptor(JSObject* holder) const { |
| 313 return is_element ? holder->GetIndexedInterceptor() | 315 return is_element ? holder->GetIndexedInterceptor() |
| 314 : holder->GetNamedInterceptor(); | 316 : holder->GetNamedInterceptor(); |
| 315 } | 317 } |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 361 const Handle<JSReceiver> initial_holder_; | 363 const Handle<JSReceiver> initial_holder_; |
| 362 const uint32_t index_; | 364 const uint32_t index_; |
| 363 uint32_t number_; | 365 uint32_t number_; |
| 364 }; | 366 }; |
| 365 | 367 |
| 366 | 368 |
| 367 } // namespace internal | 369 } // namespace internal |
| 368 } // namespace v8 | 370 } // namespace v8 |
| 369 | 371 |
| 370 #endif // V8_LOOKUP_H_ | 372 #endif // V8_LOOKUP_H_ |
| OLD | NEW |