| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 776 elms->set(VALUE_INDEX, *substr); | 776 elms->set(VALUE_INDEX, *substr); |
| 777 elms->set(WRITABLE_INDEX, Heap::false_value()); | 777 elms->set(WRITABLE_INDEX, Heap::false_value()); |
| 778 elms->set(ENUMERABLE_INDEX, Heap::false_value()); | 778 elms->set(ENUMERABLE_INDEX, Heap::false_value()); |
| 779 elms->set(CONFIGURABLE_INDEX, Heap::false_value()); | 779 elms->set(CONFIGURABLE_INDEX, Heap::false_value()); |
| 780 return *desc; | 780 return *desc; |
| 781 } | 781 } |
| 782 | 782 |
| 783 case JSObject::INTERCEPTED_ELEMENT: | 783 case JSObject::INTERCEPTED_ELEMENT: |
| 784 case JSObject::FAST_ELEMENT: { | 784 case JSObject::FAST_ELEMENT: { |
| 785 elms->set(IS_ACCESSOR_INDEX, Heap::false_value()); | 785 elms->set(IS_ACCESSOR_INDEX, Heap::false_value()); |
| 786 elms->set(VALUE_INDEX, *GetElement(obj, index)); | 786 Handle<Object> value = GetElement(obj, index); |
| 787 elms->set(VALUE_INDEX, *value); |
| 787 elms->set(WRITABLE_INDEX, Heap::true_value()); | 788 elms->set(WRITABLE_INDEX, Heap::true_value()); |
| 788 elms->set(ENUMERABLE_INDEX, Heap::true_value()); | 789 elms->set(ENUMERABLE_INDEX, Heap::true_value()); |
| 789 elms->set(CONFIGURABLE_INDEX, Heap::true_value()); | 790 elms->set(CONFIGURABLE_INDEX, Heap::true_value()); |
| 790 return *desc; | 791 return *desc; |
| 791 } | 792 } |
| 792 | 793 |
| 793 case JSObject::DICTIONARY_ELEMENT: { | 794 case JSObject::DICTIONARY_ELEMENT: { |
| 794 Handle<JSObject> holder = obj; | 795 Handle<JSObject> holder = obj; |
| 795 if (obj->IsJSGlobalProxy()) { | 796 if (obj->IsJSGlobalProxy()) { |
| 796 Object* proto = obj->GetPrototype(); | 797 Object* proto = obj->GetPrototype(); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 809 FixedArray::cast(dictionary->ValueAt(entry)); | 810 FixedArray::cast(dictionary->ValueAt(entry)); |
| 810 elms->set(IS_ACCESSOR_INDEX, Heap::true_value()); | 811 elms->set(IS_ACCESSOR_INDEX, Heap::true_value()); |
| 811 if (CheckElementAccess(*obj, index, v8::ACCESS_GET)) { | 812 if (CheckElementAccess(*obj, index, v8::ACCESS_GET)) { |
| 812 elms->set(GETTER_INDEX, callbacks->get(0)); | 813 elms->set(GETTER_INDEX, callbacks->get(0)); |
| 813 } | 814 } |
| 814 if (CheckElementAccess(*obj, index, v8::ACCESS_SET)) { | 815 if (CheckElementAccess(*obj, index, v8::ACCESS_SET)) { |
| 815 elms->set(SETTER_INDEX, callbacks->get(1)); | 816 elms->set(SETTER_INDEX, callbacks->get(1)); |
| 816 } | 817 } |
| 817 break; | 818 break; |
| 818 } | 819 } |
| 819 case NORMAL: | 820 case NORMAL: { |
| 820 // This is a data property. | 821 // This is a data property. |
| 821 elms->set(IS_ACCESSOR_INDEX, Heap::false_value()); | 822 elms->set(IS_ACCESSOR_INDEX, Heap::false_value()); |
| 822 elms->set(VALUE_INDEX, *GetElement(obj, index)); | 823 Handle<Object> value = GetElement(obj, index); |
| 824 elms->set(VALUE_INDEX, *value); |
| 823 elms->set(WRITABLE_INDEX, Heap::ToBoolean(!details.IsReadOnly())); | 825 elms->set(WRITABLE_INDEX, Heap::ToBoolean(!details.IsReadOnly())); |
| 824 break; | 826 break; |
| 827 } |
| 825 default: | 828 default: |
| 826 UNREACHABLE(); | 829 UNREACHABLE(); |
| 827 break; | 830 break; |
| 828 } | 831 } |
| 829 elms->set(ENUMERABLE_INDEX, Heap::ToBoolean(!details.IsDontEnum())); | 832 elms->set(ENUMERABLE_INDEX, Heap::ToBoolean(!details.IsDontEnum())); |
| 830 elms->set(CONFIGURABLE_INDEX, Heap::ToBoolean(!details.IsDontDelete())); | 833 elms->set(CONFIGURABLE_INDEX, Heap::ToBoolean(!details.IsDontDelete())); |
| 831 return *desc; | 834 return *desc; |
| 832 } | 835 } |
| 833 } | 836 } |
| 834 } | 837 } |
| (...skipping 10461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11296 } else { | 11299 } else { |
| 11297 // Handle last resort GC and make sure to allow future allocations | 11300 // Handle last resort GC and make sure to allow future allocations |
| 11298 // to grow the heap without causing GCs (if possible). | 11301 // to grow the heap without causing GCs (if possible). |
| 11299 Counters::gc_last_resort_from_js.Increment(); | 11302 Counters::gc_last_resort_from_js.Increment(); |
| 11300 Heap::CollectAllGarbage(false); | 11303 Heap::CollectAllGarbage(false); |
| 11301 } | 11304 } |
| 11302 } | 11305 } |
| 11303 | 11306 |
| 11304 | 11307 |
| 11305 } } // namespace v8::internal | 11308 } } // namespace v8::internal |
| OLD | NEW |