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 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/bootstrapper.h" | 7 #include "src/bootstrapper.h" |
8 #include "src/deoptimizer.h" | 8 #include "src/deoptimizer.h" |
9 #include "src/lookup.h" | 9 #include "src/lookup.h" |
10 #include "src/lookup-inl.h" | 10 #include "src/lookup-inl.h" |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 } | 325 } |
326 | 326 |
327 | 327 |
328 Handle<Object> LookupIterator::GetDataValue() const { | 328 Handle<Object> LookupIterator::GetDataValue() const { |
329 DCHECK_EQ(DATA, state_); | 329 DCHECK_EQ(DATA, state_); |
330 Handle<Object> value = FetchValue(); | 330 Handle<Object> value = FetchValue(); |
331 return value; | 331 return value; |
332 } | 332 } |
333 | 333 |
334 | 334 |
335 Handle<Object> LookupIterator::WriteDataValue(Handle<Object> value) { | 335 void LookupIterator::WriteDataValue(Handle<Object> value) { |
336 DCHECK_EQ(DATA, state_); | 336 DCHECK_EQ(DATA, state_); |
337 Handle<JSObject> holder = GetHolder<JSObject>(); | 337 Handle<JSObject> holder = GetHolder<JSObject>(); |
338 if (holder_map_->is_dictionary_map()) { | 338 if (holder_map_->is_dictionary_map()) { |
339 Handle<NameDictionary> property_dictionary = | 339 Handle<NameDictionary> property_dictionary = |
340 handle(holder->property_dictionary()); | 340 handle(holder->property_dictionary()); |
341 if (holder->IsGlobalObject()) { | 341 if (holder->IsGlobalObject()) { |
342 value = PropertyCell::UpdateCell(property_dictionary, dictionary_entry(), | 342 PropertyCell::UpdateCell(property_dictionary, dictionary_entry(), value, |
343 value, property_details_); | 343 property_details_); |
344 } else { | 344 } else { |
345 property_dictionary->ValueAtPut(dictionary_entry(), *value); | 345 property_dictionary->ValueAtPut(dictionary_entry(), *value); |
346 } | 346 } |
347 } else if (property_details_.type() == v8::internal::DATA) { | 347 } else if (property_details_.type() == v8::internal::DATA) { |
348 holder->WriteToField(descriptor_number(), *value); | 348 holder->WriteToField(descriptor_number(), *value); |
349 } else { | 349 } else { |
350 DCHECK_EQ(v8::internal::DATA_CONSTANT, property_details_.type()); | 350 DCHECK_EQ(v8::internal::DATA_CONSTANT, property_details_.type()); |
351 } | 351 } |
352 return value; | |
353 } | 352 } |
354 | 353 |
355 | 354 |
356 bool LookupIterator::IsIntegerIndexedExotic(JSReceiver* holder) { | 355 bool LookupIterator::IsIntegerIndexedExotic(JSReceiver* holder) { |
357 DCHECK(exotic_index_state_ != ExoticIndexState::kNoIndex); | 356 DCHECK(exotic_index_state_ != ExoticIndexState::kNoIndex); |
358 // Currently typed arrays are the only such objects. | 357 // Currently typed arrays are the only such objects. |
359 if (!holder->IsJSTypedArray()) return false; | 358 if (!holder->IsJSTypedArray()) return false; |
360 if (exotic_index_state_ == ExoticIndexState::kIndex) return true; | 359 if (exotic_index_state_ == ExoticIndexState::kIndex) return true; |
361 DCHECK(exotic_index_state_ == ExoticIndexState::kUninitialized); | 360 DCHECK(exotic_index_state_ == ExoticIndexState::kUninitialized); |
362 bool result = false; | 361 bool result = false; |
(...skipping 26 matching lines...) Expand all Loading... |
389 // Fall through. | 388 // Fall through. |
390 case InterceptorState::kSkipNonMasking: | 389 case InterceptorState::kSkipNonMasking: |
391 return true; | 390 return true; |
392 case InterceptorState::kProcessNonMasking: | 391 case InterceptorState::kProcessNonMasking: |
393 return false; | 392 return false; |
394 } | 393 } |
395 } | 394 } |
396 return interceptor_state_ == InterceptorState::kProcessNonMasking; | 395 return interceptor_state_ == InterceptorState::kProcessNonMasking; |
397 } | 396 } |
398 } } // namespace v8::internal | 397 } } // namespace v8::internal |
OLD | NEW |