| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 11894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11905 if (!result.IsEmpty()) return value; | 11905 if (!result.IsEmpty()) return value; |
| 11906 } | 11906 } |
| 11907 | 11907 |
| 11908 return SetElementWithoutInterceptor(object, index, value, attributes, | 11908 return SetElementWithoutInterceptor(object, index, value, attributes, |
| 11909 strict_mode, | 11909 strict_mode, |
| 11910 check_prototype, | 11910 check_prototype, |
| 11911 set_mode); | 11911 set_mode); |
| 11912 } | 11912 } |
| 11913 | 11913 |
| 11914 | 11914 |
| 11915 // TODO(ishell): Temporary wrapper until handlified. |
| 11916 Handle<Object> JSObject::GetElementWithCallback( |
| 11917 Handle<JSObject> object, |
| 11918 Handle<Object> receiver, |
| 11919 Handle<Object> structure, |
| 11920 uint32_t index, |
| 11921 Handle<Object> holder) { |
| 11922 CALL_HEAP_FUNCTION(object->GetIsolate(), |
| 11923 object->GetElementWithCallback( |
| 11924 *receiver, *structure, index, *holder), |
| 11925 Object); |
| 11926 } |
| 11927 |
| 11928 |
| 11915 MaybeObject* JSObject::GetElementWithCallback(Object* receiver, | 11929 MaybeObject* JSObject::GetElementWithCallback(Object* receiver, |
| 11916 Object* structure, | 11930 Object* structure, |
| 11917 uint32_t index, | 11931 uint32_t index, |
| 11918 Object* holder) { | 11932 Object* holder) { |
| 11919 Isolate* isolate = GetIsolate(); | 11933 Isolate* isolate = GetIsolate(); |
| 11920 ASSERT(!structure->IsForeign()); | 11934 ASSERT(!structure->IsForeign()); |
| 11921 | 11935 |
| 11922 // api style callbacks. | 11936 // api style callbacks. |
| 11923 if (structure->IsExecutableAccessorInfo()) { | 11937 if (structure->IsExecutableAccessorInfo()) { |
| 11924 Handle<ExecutableAccessorInfo> data( | 11938 Handle<ExecutableAccessorInfo> data( |
| (...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12591 PropertyAttributes attributes, | 12605 PropertyAttributes attributes, |
| 12592 StrictMode strict_mode, | 12606 StrictMode strict_mode, |
| 12593 bool check_prototype, | 12607 bool check_prototype, |
| 12594 SetPropertyMode set_mode) { | 12608 SetPropertyMode set_mode) { |
| 12595 ASSERT(object->HasDictionaryElements() || | 12609 ASSERT(object->HasDictionaryElements() || |
| 12596 object->HasDictionaryArgumentsElements() || | 12610 object->HasDictionaryArgumentsElements() || |
| 12597 (attributes & (DONT_DELETE | DONT_ENUM | READ_ONLY)) == 0); | 12611 (attributes & (DONT_DELETE | DONT_ENUM | READ_ONLY)) == 0); |
| 12598 Isolate* isolate = object->GetIsolate(); | 12612 Isolate* isolate = object->GetIsolate(); |
| 12599 if (FLAG_trace_external_array_abuse && | 12613 if (FLAG_trace_external_array_abuse && |
| 12600 IsExternalArrayElementsKind(object->GetElementsKind())) { | 12614 IsExternalArrayElementsKind(object->GetElementsKind())) { |
| 12601 CheckArrayAbuse(*object, "external elements write", index); | 12615 CheckArrayAbuse(object, "external elements write", index); |
| 12602 } | 12616 } |
| 12603 if (FLAG_trace_js_array_abuse && | 12617 if (FLAG_trace_js_array_abuse && |
| 12604 !IsExternalArrayElementsKind(object->GetElementsKind())) { | 12618 !IsExternalArrayElementsKind(object->GetElementsKind())) { |
| 12605 if (object->IsJSArray()) { | 12619 if (object->IsJSArray()) { |
| 12606 CheckArrayAbuse(*object, "elements write", index, true); | 12620 CheckArrayAbuse(object, "elements write", index, true); |
| 12607 } | 12621 } |
| 12608 } | 12622 } |
| 12609 switch (object->GetElementsKind()) { | 12623 switch (object->GetElementsKind()) { |
| 12610 case FAST_SMI_ELEMENTS: | 12624 case FAST_SMI_ELEMENTS: |
| 12611 case FAST_ELEMENTS: | 12625 case FAST_ELEMENTS: |
| 12612 case FAST_HOLEY_SMI_ELEMENTS: | 12626 case FAST_HOLEY_SMI_ELEMENTS: |
| 12613 case FAST_HOLEY_ELEMENTS: | 12627 case FAST_HOLEY_ELEMENTS: |
| 12614 return SetFastElement(object, index, value, strict_mode, check_prototype); | 12628 return SetFastElement(object, index, value, strict_mode, check_prototype); |
| 12615 case FAST_DOUBLE_ELEMENTS: | 12629 case FAST_DOUBLE_ELEMENTS: |
| 12616 case FAST_HOLEY_DOUBLE_ELEMENTS: | 12630 case FAST_HOLEY_DOUBLE_ELEMENTS: |
| (...skipping 4047 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16664 #define ERROR_MESSAGES_TEXTS(C, T) T, | 16678 #define ERROR_MESSAGES_TEXTS(C, T) T, |
| 16665 static const char* error_messages_[] = { | 16679 static const char* error_messages_[] = { |
| 16666 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) | 16680 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) |
| 16667 }; | 16681 }; |
| 16668 #undef ERROR_MESSAGES_TEXTS | 16682 #undef ERROR_MESSAGES_TEXTS |
| 16669 return error_messages_[reason]; | 16683 return error_messages_[reason]; |
| 16670 } | 16684 } |
| 16671 | 16685 |
| 16672 | 16686 |
| 16673 } } // namespace v8::internal | 16687 } } // namespace v8::internal |
| OLD | NEW |