| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 Object* value_raw, | 183 Object* value_raw, |
| 184 void*) { | 184 void*) { |
| 185 HandleScope scope(isolate); | 185 HandleScope scope(isolate); |
| 186 Handle<JSObject> object(object_raw, isolate); | 186 Handle<JSObject> object(object_raw, isolate); |
| 187 Handle<Object> value(value_raw, isolate); | 187 Handle<Object> value(value_raw, isolate); |
| 188 | 188 |
| 189 // This means one of the object's prototypes is a JSArray and the | 189 // This means one of the object's prototypes is a JSArray and the |
| 190 // object does not have a 'length' property. Calling SetProperty | 190 // object does not have a 'length' property. Calling SetProperty |
| 191 // causes an infinite loop. | 191 // causes an infinite loop. |
| 192 if (!object->IsJSArray()) { | 192 if (!object->IsJSArray()) { |
| 193 Handle<Object> result = JSObject::SetLocalPropertyIgnoreAttributes(object, | 193 Handle<Object> result; |
| 194 isolate->factory()->length_string(), value, NONE); | 194 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
| 195 RETURN_IF_EMPTY_HANDLE(isolate, result); | 195 isolate, result, |
| 196 JSObject::SetLocalPropertyIgnoreAttributes( |
| 197 object, isolate->factory()->length_string(), value, NONE)); |
| 196 return *result; | 198 return *result; |
| 197 } | 199 } |
| 198 | 200 |
| 199 value = FlattenNumber(isolate, value); | 201 value = FlattenNumber(isolate, value); |
| 200 | 202 |
| 201 Handle<JSArray> array_handle = Handle<JSArray>::cast(object); | 203 Handle<JSArray> array_handle = Handle<JSArray>::cast(object); |
| 202 | 204 |
| 203 bool has_exception; | 205 bool has_exception; |
| 204 Handle<Object> uint32_v = | 206 Handle<Object> uint32_v = |
| 205 Execution::ToUint32(isolate, value, &has_exception); | 207 Execution::ToUint32(isolate, value, &has_exception); |
| (...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 584 void*) { | 586 void*) { |
| 585 JSFunction* function_raw = FindInstanceOf<JSFunction>(isolate, object_raw); | 587 JSFunction* function_raw = FindInstanceOf<JSFunction>(isolate, object_raw); |
| 586 if (function_raw == NULL) return isolate->heap()->undefined_value(); | 588 if (function_raw == NULL) return isolate->heap()->undefined_value(); |
| 587 | 589 |
| 588 HandleScope scope(isolate); | 590 HandleScope scope(isolate); |
| 589 Handle<JSFunction> function(function_raw, isolate); | 591 Handle<JSFunction> function(function_raw, isolate); |
| 590 Handle<JSObject> object(object_raw, isolate); | 592 Handle<JSObject> object(object_raw, isolate); |
| 591 Handle<Object> value(value_raw, isolate); | 593 Handle<Object> value(value_raw, isolate); |
| 592 if (!function->should_have_prototype()) { | 594 if (!function->should_have_prototype()) { |
| 593 // Since we hit this accessor, object will have no prototype property. | 595 // Since we hit this accessor, object will have no prototype property. |
| 594 Handle<Object> result = JSObject::SetLocalPropertyIgnoreAttributes(object, | 596 Handle<Object> result; |
| 595 isolate->factory()->prototype_string(), value, NONE); | 597 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
| 596 RETURN_IF_EMPTY_HANDLE(isolate, result); | 598 isolate, result, |
| 599 JSObject::SetLocalPropertyIgnoreAttributes( |
| 600 object, isolate->factory()->prototype_string(), value, NONE)); |
| 597 return *result; | 601 return *result; |
| 598 } | 602 } |
| 599 | 603 |
| 600 Handle<Object> old_value; | 604 Handle<Object> old_value; |
| 601 bool is_observed = *function == *object && function->map()->is_observed(); | 605 bool is_observed = *function == *object && function->map()->is_observed(); |
| 602 if (is_observed) { | 606 if (is_observed) { |
| 603 if (function->has_prototype()) | 607 if (function->has_prototype()) |
| 604 old_value = handle(function->prototype(), isolate); | 608 old_value = handle(function->prototype(), isolate); |
| 605 else | 609 else |
| 606 old_value = isolate->factory()->NewFunctionPrototype(function); | 610 old_value = isolate->factory()->NewFunctionPrototype(function); |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 963 info->set_data(Smi::FromInt(index)); | 967 info->set_data(Smi::FromInt(index)); |
| 964 Handle<Object> getter = v8::FromCData(isolate, &ModuleGetExport); | 968 Handle<Object> getter = v8::FromCData(isolate, &ModuleGetExport); |
| 965 Handle<Object> setter = v8::FromCData(isolate, &ModuleSetExport); | 969 Handle<Object> setter = v8::FromCData(isolate, &ModuleSetExport); |
| 966 info->set_getter(*getter); | 970 info->set_getter(*getter); |
| 967 if (!(attributes & ReadOnly)) info->set_setter(*setter); | 971 if (!(attributes & ReadOnly)) info->set_setter(*setter); |
| 968 return info; | 972 return info; |
| 969 } | 973 } |
| 970 | 974 |
| 971 | 975 |
| 972 } } // namespace v8::internal | 976 } } // namespace v8::internal |
| OLD | NEW |