| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 394 : public ElementsAccessorBase<DictionaryElementsAccessor, | 394 : public ElementsAccessorBase<DictionaryElementsAccessor, |
| 395 NumberDictionary> { | 395 NumberDictionary> { |
| 396 public: | 396 public: |
| 397 static MaybeObject* DeleteCommon(JSObject* obj, | 397 static MaybeObject* DeleteCommon(JSObject* obj, |
| 398 uint32_t key, | 398 uint32_t key, |
| 399 JSReceiver::DeleteMode mode) { | 399 JSReceiver::DeleteMode mode) { |
| 400 Isolate* isolate = obj->GetIsolate(); | 400 Isolate* isolate = obj->GetIsolate(); |
| 401 Heap* heap = isolate->heap(); | 401 Heap* heap = isolate->heap(); |
| 402 FixedArray* backing_store = FixedArray::cast(obj->elements()); | 402 FixedArray* backing_store = FixedArray::cast(obj->elements()); |
| 403 bool is_arguments = | 403 bool is_arguments = |
| 404 (obj->GetElementsKind() == JSObject::NON_STRICT_ARGUMENTS_ELEMENTS); | 404 (obj->GetElementsKind() == NON_STRICT_ARGUMENTS_ELEMENTS); |
| 405 if (is_arguments) { | 405 if (is_arguments) { |
| 406 backing_store = FixedArray::cast(backing_store->get(1)); | 406 backing_store = FixedArray::cast(backing_store->get(1)); |
| 407 } | 407 } |
| 408 NumberDictionary* dictionary = NumberDictionary::cast(backing_store); | 408 NumberDictionary* dictionary = NumberDictionary::cast(backing_store); |
| 409 int entry = dictionary->FindEntry(key); | 409 int entry = dictionary->FindEntry(key); |
| 410 if (entry != NumberDictionary::kNotFound) { | 410 if (entry != NumberDictionary::kNotFound) { |
| 411 Object* result = dictionary->DeleteProperty(entry, mode); | 411 Object* result = dictionary->DeleteProperty(entry, mode); |
| 412 if (result == heap->true_value()) { | 412 if (result == heap->true_value()) { |
| 413 MaybeObject* maybe_elements = dictionary->Shrink(key); | 413 MaybeObject* maybe_elements = dictionary->Shrink(key); |
| 414 FixedArray* new_elements = NULL; | 414 FixedArray* new_elements = NULL; |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 558 ? parameter_map->get(key + 2) | 558 ? parameter_map->get(key + 2) |
| 559 : parameter_map->GetHeap()->the_hole_value(); | 559 : parameter_map->GetHeap()->the_hole_value(); |
| 560 } | 560 } |
| 561 }; | 561 }; |
| 562 | 562 |
| 563 | 563 |
| 564 ElementsAccessor* ElementsAccessor::ForArray(FixedArrayBase* array) { | 564 ElementsAccessor* ElementsAccessor::ForArray(FixedArrayBase* array) { |
| 565 switch (array->map()->instance_type()) { | 565 switch (array->map()->instance_type()) { |
| 566 case FIXED_ARRAY_TYPE: | 566 case FIXED_ARRAY_TYPE: |
| 567 if (array->IsDictionary()) { | 567 if (array->IsDictionary()) { |
| 568 return elements_accessors_[JSObject::DICTIONARY_ELEMENTS]; | 568 return elements_accessors_[DICTIONARY_ELEMENTS]; |
| 569 } else { | 569 } else { |
| 570 return elements_accessors_[JSObject::FAST_ELEMENTS]; | 570 return elements_accessors_[FAST_ELEMENTS]; |
| 571 } | 571 } |
| 572 case EXTERNAL_BYTE_ARRAY_TYPE: | 572 case EXTERNAL_BYTE_ARRAY_TYPE: |
| 573 return elements_accessors_[JSObject::EXTERNAL_BYTE_ELEMENTS]; | 573 return elements_accessors_[EXTERNAL_BYTE_ELEMENTS]; |
| 574 case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: | 574 case EXTERNAL_UNSIGNED_BYTE_ARRAY_TYPE: |
| 575 return elements_accessors_[JSObject::EXTERNAL_UNSIGNED_BYTE_ELEMENTS]; | 575 return elements_accessors_[EXTERNAL_UNSIGNED_BYTE_ELEMENTS]; |
| 576 case EXTERNAL_SHORT_ARRAY_TYPE: | 576 case EXTERNAL_SHORT_ARRAY_TYPE: |
| 577 return elements_accessors_[JSObject::EXTERNAL_SHORT_ELEMENTS]; | 577 return elements_accessors_[EXTERNAL_SHORT_ELEMENTS]; |
| 578 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: | 578 case EXTERNAL_UNSIGNED_SHORT_ARRAY_TYPE: |
| 579 return elements_accessors_[JSObject::EXTERNAL_UNSIGNED_SHORT_ELEMENTS]; | 579 return elements_accessors_[EXTERNAL_UNSIGNED_SHORT_ELEMENTS]; |
| 580 case EXTERNAL_INT_ARRAY_TYPE: | 580 case EXTERNAL_INT_ARRAY_TYPE: |
| 581 return elements_accessors_[JSObject::EXTERNAL_INT_ELEMENTS]; | 581 return elements_accessors_[EXTERNAL_INT_ELEMENTS]; |
| 582 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: | 582 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: |
| 583 return elements_accessors_[JSObject::EXTERNAL_UNSIGNED_INT_ELEMENTS]; | 583 return elements_accessors_[EXTERNAL_UNSIGNED_INT_ELEMENTS]; |
| 584 case EXTERNAL_FLOAT_ARRAY_TYPE: | 584 case EXTERNAL_FLOAT_ARRAY_TYPE: |
| 585 return elements_accessors_[JSObject::EXTERNAL_FLOAT_ELEMENTS]; | 585 return elements_accessors_[EXTERNAL_FLOAT_ELEMENTS]; |
| 586 case EXTERNAL_DOUBLE_ARRAY_TYPE: | 586 case EXTERNAL_DOUBLE_ARRAY_TYPE: |
| 587 return elements_accessors_[JSObject::EXTERNAL_DOUBLE_ELEMENTS]; | 587 return elements_accessors_[EXTERNAL_DOUBLE_ELEMENTS]; |
| 588 case EXTERNAL_PIXEL_ARRAY_TYPE: | 588 case EXTERNAL_PIXEL_ARRAY_TYPE: |
| 589 return elements_accessors_[JSObject::EXTERNAL_PIXEL_ELEMENTS]; | 589 return elements_accessors_[EXTERNAL_PIXEL_ELEMENTS]; |
| 590 default: | 590 default: |
| 591 UNREACHABLE(); | 591 UNREACHABLE(); |
| 592 return NULL; | 592 return NULL; |
| 593 } | 593 } |
| 594 } | 594 } |
| 595 | 595 |
| 596 | 596 |
| 597 void ElementsAccessor::InitializeOncePerProcess() { | 597 void ElementsAccessor::InitializeOncePerProcess() { |
| 598 static struct ConcreteElementsAccessors { | 598 static struct ConcreteElementsAccessors { |
| 599 FastElementsAccessor fast_elements_handler; | 599 FastElementsAccessor fast_elements_handler; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 625 &element_accessors.float_elements_handler, | 625 &element_accessors.float_elements_handler, |
| 626 &element_accessors.double_elements_handler, | 626 &element_accessors.double_elements_handler, |
| 627 &element_accessors.pixel_elements_handler | 627 &element_accessors.pixel_elements_handler |
| 628 }; | 628 }; |
| 629 | 629 |
| 630 elements_accessors_ = accessor_array; | 630 elements_accessors_ = accessor_array; |
| 631 } | 631 } |
| 632 | 632 |
| 633 | 633 |
| 634 } } // namespace v8::internal | 634 } } // namespace v8::internal |
| OLD | NEW |