| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "v8.h" | 5 #include "v8.h" |
| 6 | 6 |
| 7 #include "accessors.h" | 7 #include "accessors.h" |
| 8 #include "allocation-site-scopes.h" | 8 #include "allocation-site-scopes.h" |
| 9 #include "api.h" | 9 #include "api.h" |
| 10 #include "arguments.h" | 10 #include "arguments.h" |
| (...skipping 4300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4311 // Note that this method cannot be used to set the prototype of a function | 4311 // Note that this method cannot be used to set the prototype of a function |
| 4312 // because ConvertDescriptorToField() which is called in "case CALLBACKS:" | 4312 // because ConvertDescriptorToField() which is called in "case CALLBACKS:" |
| 4313 // doesn't handle function prototypes correctly. | 4313 // doesn't handle function prototypes correctly. |
| 4314 MaybeHandle<Object> JSObject::SetLocalPropertyIgnoreAttributes( | 4314 MaybeHandle<Object> JSObject::SetLocalPropertyIgnoreAttributes( |
| 4315 Handle<JSObject> object, | 4315 Handle<JSObject> object, |
| 4316 Handle<Name> name, | 4316 Handle<Name> name, |
| 4317 Handle<Object> value, | 4317 Handle<Object> value, |
| 4318 PropertyAttributes attributes, | 4318 PropertyAttributes attributes, |
| 4319 ValueType value_type, | 4319 ValueType value_type, |
| 4320 StoreMode mode, | 4320 StoreMode mode, |
| 4321 ExtensibilityCheck extensibility_check) { | 4321 ExtensibilityCheck extensibility_check, |
| 4322 StoreFromKeyed store_from_keyed) { |
| 4322 Isolate* isolate = object->GetIsolate(); | 4323 Isolate* isolate = object->GetIsolate(); |
| 4323 | 4324 |
| 4324 // Make sure that the top context does not change when doing callbacks or | 4325 // Make sure that the top context does not change when doing callbacks or |
| 4325 // interceptor calls. | 4326 // interceptor calls. |
| 4326 AssertNoContextChange ncc(isolate); | 4327 AssertNoContextChange ncc(isolate); |
| 4327 | 4328 |
| 4328 LookupResult lookup(isolate); | 4329 LookupResult lookup(isolate); |
| 4329 object->LocalLookup(name, &lookup, true); | 4330 object->LocalLookup(name, &lookup, true); |
| 4330 if (!lookup.IsFound()) { | 4331 if (!lookup.IsFound()) { |
| 4331 object->map()->LookupTransition(*object, *name, &lookup); | 4332 object->map()->LookupTransition(*object, *name, &lookup); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 4352 object->LocalLookupRealNamedProperty(name, &lookup); | 4353 object->LocalLookupRealNamedProperty(name, &lookup); |
| 4353 } | 4354 } |
| 4354 | 4355 |
| 4355 // Check for accessor in prototype chain removed here in clone. | 4356 // Check for accessor in prototype chain removed here in clone. |
| 4356 if (!lookup.IsFound()) { | 4357 if (!lookup.IsFound()) { |
| 4357 object->map()->LookupTransition(*object, *name, &lookup); | 4358 object->map()->LookupTransition(*object, *name, &lookup); |
| 4358 TransitionFlag flag = lookup.IsFound() | 4359 TransitionFlag flag = lookup.IsFound() |
| 4359 ? OMIT_TRANSITION : INSERT_TRANSITION; | 4360 ? OMIT_TRANSITION : INSERT_TRANSITION; |
| 4360 // Neither properties nor transitions found. | 4361 // Neither properties nor transitions found. |
| 4361 return AddProperty(object, name, value, attributes, SLOPPY, | 4362 return AddProperty(object, name, value, attributes, SLOPPY, |
| 4362 MAY_BE_STORE_FROM_KEYED, extensibility_check, value_type, mode, flag); | 4363 store_from_keyed, extensibility_check, value_type, mode, flag); |
| 4363 } | 4364 } |
| 4364 | 4365 |
| 4365 Handle<Object> old_value = isolate->factory()->the_hole_value(); | 4366 Handle<Object> old_value = isolate->factory()->the_hole_value(); |
| 4366 PropertyAttributes old_attributes = ABSENT; | 4367 PropertyAttributes old_attributes = ABSENT; |
| 4367 bool is_observed = object->map()->is_observed() && | 4368 bool is_observed = object->map()->is_observed() && |
| 4368 *name != isolate->heap()->hidden_string(); | 4369 *name != isolate->heap()->hidden_string(); |
| 4369 if (is_observed && lookup.IsProperty()) { | 4370 if (is_observed && lookup.IsProperty()) { |
| 4370 if (lookup.IsDataProperty()) { | 4371 if (lookup.IsDataProperty()) { |
| 4371 old_value = Object::GetPropertyOrElement(object, name).ToHandleChecked(); | 4372 old_value = Object::GetPropertyOrElement(object, name).ToHandleChecked(); |
| 4372 } | 4373 } |
| (...skipping 12844 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 17217 #define ERROR_MESSAGES_TEXTS(C, T) T, | 17218 #define ERROR_MESSAGES_TEXTS(C, T) T, |
| 17218 static const char* error_messages_[] = { | 17219 static const char* error_messages_[] = { |
| 17219 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) | 17220 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) |
| 17220 }; | 17221 }; |
| 17221 #undef ERROR_MESSAGES_TEXTS | 17222 #undef ERROR_MESSAGES_TEXTS |
| 17222 return error_messages_[reason]; | 17223 return error_messages_[reason]; |
| 17223 } | 17224 } |
| 17224 | 17225 |
| 17225 | 17226 |
| 17226 } } // namespace v8::internal | 17227 } } // namespace v8::internal |
| OLD | NEW |