| 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 "src/objects.h" | 5 #include "src/objects.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <iomanip> | 8 #include <iomanip> |
| 9 #include <sstream> | 9 #include <sstream> |
| 10 | 10 |
| (...skipping 6126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6137 // of object O whose [[Get]], [[Set]], [[Enumerable]] and | 6137 // of object O whose [[Get]], [[Set]], [[Enumerable]] and |
| 6138 // [[Configurable]] attribute values are described by Desc. If the value | 6138 // [[Configurable]] attribute values are described by Desc. If the value |
| 6139 // of an attribute field of Desc is absent, the attribute of the newly | 6139 // of an attribute field of Desc is absent, the attribute of the newly |
| 6140 // created property is set to its default value. | 6140 // created property is set to its default value. |
| 6141 if (!object->IsUndefined()) { | 6141 if (!object->IsUndefined()) { |
| 6142 if (!desc->has_enumerable()) desc->set_enumerable(false); | 6142 if (!desc->has_enumerable()) desc->set_enumerable(false); |
| 6143 if (!desc->has_configurable()) desc->set_configurable(false); | 6143 if (!desc->has_configurable()) desc->set_configurable(false); |
| 6144 Handle<Object> getter( | 6144 Handle<Object> getter( |
| 6145 desc->has_get() | 6145 desc->has_get() |
| 6146 ? desc->get() | 6146 ? desc->get() |
| 6147 : Handle<Object>::cast(isolate->factory()->undefined_value())); | 6147 : Handle<Object>::cast(isolate->factory()->null_value())); |
| 6148 Handle<Object> setter( | 6148 Handle<Object> setter( |
| 6149 desc->has_set() | 6149 desc->has_set() |
| 6150 ? desc->set() | 6150 ? desc->set() |
| 6151 : Handle<Object>::cast(isolate->factory()->undefined_value())); | 6151 : Handle<Object>::cast(isolate->factory()->null_value())); |
| 6152 MaybeHandle<Object> result = | 6152 MaybeHandle<Object> result = |
| 6153 JSObject::DefineAccessor(it, getter, setter, desc->ToAttributes()); | 6153 JSObject::DefineAccessor(it, getter, setter, desc->ToAttributes()); |
| 6154 if (result.is_null()) return false; | 6154 if (result.is_null()) return false; |
| 6155 } | 6155 } |
| 6156 } | 6156 } |
| 6157 // 2e. Return true. | 6157 // 2e. Return true. |
| 6158 return true; | 6158 return true; |
| 6159 } | 6159 } |
| 6160 // 3. Return true, if every field in Desc is absent. | 6160 // 3. Return true, if every field in Desc is absent. |
| 6161 // 4. Return true, if every field in Desc also occurs in current and the | 6161 // 4. Return true, if every field in Desc also occurs in current and the |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6334 MaybeHandle<Object> result = JSObject::DefineOwnPropertyIgnoreAttributes( | 6334 MaybeHandle<Object> result = JSObject::DefineOwnPropertyIgnoreAttributes( |
| 6335 it, value, attrs, JSObject::DONT_FORCE_FIELD); | 6335 it, value, attrs, JSObject::DONT_FORCE_FIELD); |
| 6336 if (result.is_null()) return false; | 6336 if (result.is_null()) return false; |
| 6337 } else { | 6337 } else { |
| 6338 DCHECK(desc_is_accessor_descriptor || | 6338 DCHECK(desc_is_accessor_descriptor || |
| 6339 (desc_is_generic_descriptor && | 6339 (desc_is_generic_descriptor && |
| 6340 PropertyDescriptor::IsAccessorDescriptor(¤t))); | 6340 PropertyDescriptor::IsAccessorDescriptor(¤t))); |
| 6341 Handle<Object> getter( | 6341 Handle<Object> getter( |
| 6342 desc->has_get() | 6342 desc->has_get() |
| 6343 ? desc->get() | 6343 ? desc->get() |
| 6344 : current.has_get() ? current.get() | 6344 : current.has_get() |
| 6345 : Handle<Object>::cast( | 6345 ? current.get() |
| 6346 isolate->factory()->undefined_value())); | 6346 : Handle<Object>::cast(isolate->factory()->null_value())); |
| 6347 Handle<Object> setter( | 6347 Handle<Object> setter( |
| 6348 desc->has_set() | 6348 desc->has_set() |
| 6349 ? desc->set() | 6349 ? desc->set() |
| 6350 : current.has_set() ? current.set() | 6350 : current.has_set() |
| 6351 : Handle<Object>::cast( | 6351 ? current.set() |
| 6352 isolate->factory()->undefined_value())); | 6352 : Handle<Object>::cast(isolate->factory()->null_value())); |
| 6353 MaybeHandle<Object> result = | 6353 MaybeHandle<Object> result = |
| 6354 JSObject::DefineAccessor(it, getter, setter, attrs); | 6354 JSObject::DefineAccessor(it, getter, setter, attrs); |
| 6355 if (result.is_null()) return false; | 6355 if (result.is_null()) return false; |
| 6356 } | 6356 } |
| 6357 } | 6357 } |
| 6358 | 6358 |
| 6359 // 11. Return true. | 6359 // 11. Return true. |
| 6360 return true; | 6360 return true; |
| 6361 } | 6361 } |
| 6362 | 6362 |
| (...skipping 11670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 18033 if (cell->value() != *new_value) { | 18033 if (cell->value() != *new_value) { |
| 18034 cell->set_value(*new_value); | 18034 cell->set_value(*new_value); |
| 18035 Isolate* isolate = cell->GetIsolate(); | 18035 Isolate* isolate = cell->GetIsolate(); |
| 18036 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 18036 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
| 18037 isolate, DependentCode::kPropertyCellChangedGroup); | 18037 isolate, DependentCode::kPropertyCellChangedGroup); |
| 18038 } | 18038 } |
| 18039 } | 18039 } |
| 18040 | 18040 |
| 18041 } // namespace internal | 18041 } // namespace internal |
| 18042 } // namespace v8 | 18042 } // namespace v8 |
| OLD | NEW |