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 |