| 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 638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 649 isolate->ReportFailedAccessCheck(js_object, v8::ACCESS_GET); | 649 isolate->ReportFailedAccessCheck(js_object, v8::ACCESS_GET); |
| 650 return heap->undefined_value(); | 650 return heap->undefined_value(); |
| 651 } | 651 } |
| 652 } | 652 } |
| 653 | 653 |
| 654 if (js_object->HasIndexedInterceptor()) { | 654 if (js_object->HasIndexedInterceptor()) { |
| 655 return js_object->GetElementWithInterceptor(receiver, index); | 655 return js_object->GetElementWithInterceptor(receiver, index); |
| 656 } | 656 } |
| 657 | 657 |
| 658 if (js_object->elements() != heap->empty_fixed_array()) { | 658 if (js_object->elements() != heap->empty_fixed_array()) { |
| 659 MaybeObject* result = js_object->GetElementsAccessor()->GetWithReceiver( | 659 MaybeObject* result = js_object->GetElementsAccessor()->Get( |
| 660 js_object->elements(), |
| 661 index, |
| 660 js_object, | 662 js_object, |
| 661 receiver, | 663 receiver); |
| 662 index); | |
| 663 if (result != heap->the_hole_value()) return result; | 664 if (result != heap->the_hole_value()) return result; |
| 664 } | 665 } |
| 665 } | 666 } |
| 666 | 667 |
| 667 return heap->undefined_value(); | 668 return heap->undefined_value(); |
| 668 } | 669 } |
| 669 | 670 |
| 670 | 671 |
| 671 Object* Object::GetPrototype() { | 672 Object* Object::GetPrototype() { |
| 672 if (IsSmi()) { | 673 if (IsSmi()) { |
| (...skipping 3947 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4620 cache->set(EntryToIndex(entry), obj); | 4621 cache->set(EntryToIndex(entry), obj); |
| 4621 cache->set(EntryToIndex(entry) + 1, code); | 4622 cache->set(EntryToIndex(entry) + 1, code); |
| 4622 cache->ElementAdded(); | 4623 cache->ElementAdded(); |
| 4623 return cache; | 4624 return cache; |
| 4624 } | 4625 } |
| 4625 | 4626 |
| 4626 | 4627 |
| 4627 MaybeObject* FixedArray::AddKeysFromJSArray(JSArray* array) { | 4628 MaybeObject* FixedArray::AddKeysFromJSArray(JSArray* array) { |
| 4628 ElementsAccessor* accessor = array->GetElementsAccessor(); | 4629 ElementsAccessor* accessor = array->GetElementsAccessor(); |
| 4629 MaybeObject* maybe_result = | 4630 MaybeObject* maybe_result = |
| 4630 accessor->AddElementsToFixedArray(array->elements(), this); | 4631 accessor->AddElementsToFixedArray(array->elements(), this, array, array); |
| 4631 FixedArray* result; | 4632 FixedArray* result; |
| 4632 if (!maybe_result->To<FixedArray>(&result)) return maybe_result; | 4633 if (!maybe_result->To<FixedArray>(&result)) return maybe_result; |
| 4633 #ifdef DEBUG | 4634 #ifdef DEBUG |
| 4634 if (FLAG_enable_slow_asserts) { | 4635 if (FLAG_enable_slow_asserts) { |
| 4635 for (int i = 0; i < result->length(); i++) { | 4636 for (int i = 0; i < result->length(); i++) { |
| 4636 Object* current = result->get(i); | 4637 Object* current = result->get(i); |
| 4637 ASSERT(current->IsNumber() || current->IsString()); | 4638 ASSERT(current->IsNumber() || current->IsString()); |
| 4638 } | 4639 } |
| 4639 } | 4640 } |
| 4640 #endif | 4641 #endif |
| 4641 return result; | 4642 return result; |
| 4642 } | 4643 } |
| 4643 | 4644 |
| 4644 | 4645 |
| 4645 MaybeObject* FixedArray::UnionOfKeys(FixedArray* other) { | 4646 MaybeObject* FixedArray::UnionOfKeys(FixedArray* other) { |
| 4646 ElementsAccessor* accessor = ElementsAccessor::ForArray(other); | 4647 ElementsAccessor* accessor = ElementsAccessor::ForArray(other); |
| 4647 MaybeObject* maybe_result = | 4648 MaybeObject* maybe_result = |
| 4648 accessor->AddElementsToFixedArray(other, this); | 4649 accessor->AddElementsToFixedArray(other, this, NULL, NULL); |
| 4649 FixedArray* result; | 4650 FixedArray* result; |
| 4650 if (!maybe_result->To<FixedArray>(&result)) return maybe_result; | 4651 if (!maybe_result->To<FixedArray>(&result)) return maybe_result; |
| 4651 #ifdef DEBUG | 4652 #ifdef DEBUG |
| 4652 if (FLAG_enable_slow_asserts) { | 4653 if (FLAG_enable_slow_asserts) { |
| 4653 for (int i = 0; i < result->length(); i++) { | 4654 for (int i = 0; i < result->length(); i++) { |
| 4654 Object* current = result->get(i); | 4655 Object* current = result->get(i); |
| 4655 ASSERT(current->IsNumber() || current->IsString()); | 4656 ASSERT(current->IsNumber() || current->IsString()); |
| 4656 } | 4657 } |
| 4657 } | 4658 } |
| 4658 #endif | 4659 #endif |
| (...skipping 4002 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8661 // Leaving JavaScript. | 8662 // Leaving JavaScript. |
| 8662 VMState state(isolate, EXTERNAL); | 8663 VMState state(isolate, EXTERNAL); |
| 8663 result = getter(index, info); | 8664 result = getter(index, info); |
| 8664 } | 8665 } |
| 8665 RETURN_IF_SCHEDULED_EXCEPTION(isolate); | 8666 RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
| 8666 if (!result.IsEmpty()) return *v8::Utils::OpenHandle(*result); | 8667 if (!result.IsEmpty()) return *v8::Utils::OpenHandle(*result); |
| 8667 } | 8668 } |
| 8668 | 8669 |
| 8669 Heap* heap = holder_handle->GetHeap(); | 8670 Heap* heap = holder_handle->GetHeap(); |
| 8670 ElementsAccessor* handler = holder_handle->GetElementsAccessor(); | 8671 ElementsAccessor* handler = holder_handle->GetElementsAccessor(); |
| 8671 MaybeObject* raw_result = handler->GetWithReceiver(*holder_handle, | 8672 MaybeObject* raw_result = handler->Get(holder_handle->elements(), |
| 8672 *this_handle, | 8673 index, |
| 8673 index); | 8674 *holder_handle, |
| 8675 *this_handle); |
| 8674 if (raw_result != heap->the_hole_value()) return raw_result; | 8676 if (raw_result != heap->the_hole_value()) return raw_result; |
| 8675 | 8677 |
| 8676 RETURN_IF_SCHEDULED_EXCEPTION(isolate); | 8678 RETURN_IF_SCHEDULED_EXCEPTION(isolate); |
| 8677 | 8679 |
| 8678 Object* pt = holder_handle->GetPrototype(); | 8680 Object* pt = holder_handle->GetPrototype(); |
| 8679 if (pt == heap->null_value()) return heap->undefined_value(); | 8681 if (pt == heap->null_value()) return heap->undefined_value(); |
| 8680 return pt->GetElementWithReceiver(*this_handle, index); | 8682 return pt->GetElementWithReceiver(*this_handle, index); |
| 8681 } | 8683 } |
| 8682 | 8684 |
| 8683 | 8685 |
| (...skipping 2867 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11551 if (break_point_objects()->IsUndefined()) return 0; | 11553 if (break_point_objects()->IsUndefined()) return 0; |
| 11552 // Single break point. | 11554 // Single break point. |
| 11553 if (!break_point_objects()->IsFixedArray()) return 1; | 11555 if (!break_point_objects()->IsFixedArray()) return 1; |
| 11554 // Multiple break points. | 11556 // Multiple break points. |
| 11555 return FixedArray::cast(break_point_objects())->length(); | 11557 return FixedArray::cast(break_point_objects())->length(); |
| 11556 } | 11558 } |
| 11557 #endif | 11559 #endif |
| 11558 | 11560 |
| 11559 | 11561 |
| 11560 } } // namespace v8::internal | 11562 } } // namespace v8::internal |
| OLD | NEW |