OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 <memory> | 9 #include <memory> |
10 #include <sstream> | 10 #include <sstream> |
(...skipping 1334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1345 ASSIGN_RETURN_ON_EXCEPTION(isolate, receiver, | 1345 ASSIGN_RETURN_ON_EXCEPTION(isolate, receiver, |
1346 Object::ConvertReceiver(isolate, receiver), | 1346 Object::ConvertReceiver(isolate, receiver), |
1347 Object); | 1347 Object); |
1348 } | 1348 } |
1349 | 1349 |
1350 PropertyCallbackArguments args(isolate, info->data(), *receiver, *holder, | 1350 PropertyCallbackArguments args(isolate, info->data(), *receiver, *holder, |
1351 Object::DONT_THROW); | 1351 Object::DONT_THROW); |
1352 Handle<Object> result = args.Call(call_fun, name); | 1352 Handle<Object> result = args.Call(call_fun, name); |
1353 RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); | 1353 RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); |
1354 if (result.is_null()) return isolate->factory()->undefined_value(); | 1354 if (result.is_null()) return isolate->factory()->undefined_value(); |
1355 // Rebox handle before return. | 1355 Handle<Object> reboxed_result = handle(*result, isolate); |
1356 return handle(*result, isolate); | 1356 if (info->replace_on_access() && receiver->IsJSReceiver()) { |
| 1357 args.Call(reinterpret_cast<GenericNamedPropertySetterCallback>( |
| 1358 &Accessors::ReconfigureToDataProperty), |
| 1359 name, result); |
| 1360 RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); |
| 1361 } |
| 1362 return reboxed_result; |
1357 } | 1363 } |
1358 | 1364 |
1359 // Regular accessor. | 1365 // Regular accessor. |
1360 Handle<Object> getter(AccessorPair::cast(*structure)->getter(), isolate); | 1366 Handle<Object> getter(AccessorPair::cast(*structure)->getter(), isolate); |
1361 if (getter->IsFunctionTemplateInfo()) { | 1367 if (getter->IsFunctionTemplateInfo()) { |
1362 return Builtins::InvokeApiFunction( | 1368 return Builtins::InvokeApiFunction( |
1363 isolate, false, Handle<FunctionTemplateInfo>::cast(getter), receiver, 0, | 1369 isolate, false, Handle<FunctionTemplateInfo>::cast(getter), receiver, 0, |
1364 nullptr, isolate->factory()->undefined_value()); | 1370 nullptr, isolate->factory()->undefined_value()); |
1365 } else if (getter->IsCallable()) { | 1371 } else if (getter->IsCallable()) { |
1366 // TODO(rossberg): nicer would be to cast to some JSCallable here... | 1372 // TODO(rossberg): nicer would be to cast to some JSCallable here... |
(...skipping 18884 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
20251 ns, Accessors::ModuleNamespaceEntryInfo(isolate, name, attr)) | 20257 ns, Accessors::ModuleNamespaceEntryInfo(isolate, name, attr)) |
20252 .Check(); | 20258 .Check(); |
20253 } | 20259 } |
20254 JSObject::PreventExtensions(ns, THROW_ON_ERROR).ToChecked(); | 20260 JSObject::PreventExtensions(ns, THROW_ON_ERROR).ToChecked(); |
20255 | 20261 |
20256 return ns; | 20262 return ns; |
20257 } | 20263 } |
20258 | 20264 |
20259 } // namespace internal | 20265 } // namespace internal |
20260 } // namespace v8 | 20266 } // namespace v8 |
OLD | NEW |