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 1177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1188 RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); | 1188 RETURN_EXCEPTION_IF_SCHEDULED_EXCEPTION(isolate, Object); |
1189 if (result.is_null()) return ReadAbsentProperty(isolate, receiver, name); | 1189 if (result.is_null()) return ReadAbsentProperty(isolate, receiver, name); |
1190 // Rebox handle before return. | 1190 // Rebox handle before return. |
1191 return handle(*result, isolate); | 1191 return handle(*result, isolate); |
1192 } | 1192 } |
1193 | 1193 |
1194 // Regular accessor. | 1194 // Regular accessor. |
1195 Handle<Object> getter(AccessorPair::cast(*structure)->getter(), isolate); | 1195 Handle<Object> getter(AccessorPair::cast(*structure)->getter(), isolate); |
1196 if (getter->IsFunctionTemplateInfo()) { | 1196 if (getter->IsFunctionTemplateInfo()) { |
1197 return Builtins::InvokeApiFunction( | 1197 return Builtins::InvokeApiFunction( |
1198 isolate, Handle<FunctionTemplateInfo>::cast(getter), receiver, 0, | 1198 isolate, false, Handle<FunctionTemplateInfo>::cast(getter), receiver, 0, |
1199 nullptr); | 1199 nullptr, isolate->factory()->undefined_value()); |
1200 } else if (getter->IsCallable()) { | 1200 } else if (getter->IsCallable()) { |
1201 // TODO(rossberg): nicer would be to cast to some JSCallable here... | 1201 // TODO(rossberg): nicer would be to cast to some JSCallable here... |
1202 return Object::GetPropertyWithDefinedGetter( | 1202 return Object::GetPropertyWithDefinedGetter( |
1203 receiver, Handle<JSReceiver>::cast(getter)); | 1203 receiver, Handle<JSReceiver>::cast(getter)); |
1204 } | 1204 } |
1205 // Getter is not a function. | 1205 // Getter is not a function. |
1206 return ReadAbsentProperty(isolate, receiver, it->GetName()); | 1206 return ReadAbsentProperty(isolate, receiver, it->GetName()); |
1207 } | 1207 } |
1208 | 1208 |
1209 // static | 1209 // static |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1271 RETURN_VALUE_IF_SCHEDULED_EXCEPTION(isolate, Nothing<bool>()); | 1271 RETURN_VALUE_IF_SCHEDULED_EXCEPTION(isolate, Nothing<bool>()); |
1272 return Just(true); | 1272 return Just(true); |
1273 } | 1273 } |
1274 | 1274 |
1275 // Regular accessor. | 1275 // Regular accessor. |
1276 Handle<Object> setter(AccessorPair::cast(*structure)->setter(), isolate); | 1276 Handle<Object> setter(AccessorPair::cast(*structure)->setter(), isolate); |
1277 if (setter->IsFunctionTemplateInfo()) { | 1277 if (setter->IsFunctionTemplateInfo()) { |
1278 Handle<Object> argv[] = {value}; | 1278 Handle<Object> argv[] = {value}; |
1279 RETURN_ON_EXCEPTION_VALUE( | 1279 RETURN_ON_EXCEPTION_VALUE( |
1280 isolate, Builtins::InvokeApiFunction( | 1280 isolate, Builtins::InvokeApiFunction( |
1281 isolate, Handle<FunctionTemplateInfo>::cast(setter), | 1281 isolate, false, Handle<FunctionTemplateInfo>::cast(setter), |
1282 receiver, arraysize(argv), argv), | 1282 receiver, arraysize(argv), argv, |
| 1283 isolate->factory()->undefined_value()), |
1283 Nothing<bool>()); | 1284 Nothing<bool>()); |
1284 return Just(true); | 1285 return Just(true); |
1285 } else if (setter->IsCallable()) { | 1286 } else if (setter->IsCallable()) { |
1286 // TODO(rossberg): nicer would be to cast to some JSCallable here... | 1287 // TODO(rossberg): nicer would be to cast to some JSCallable here... |
1287 return SetPropertyWithDefinedSetter( | 1288 return SetPropertyWithDefinedSetter( |
1288 receiver, Handle<JSReceiver>::cast(setter), value, should_throw); | 1289 receiver, Handle<JSReceiver>::cast(setter), value, should_throw); |
1289 } | 1290 } |
1290 | 1291 |
1291 RETURN_FAILURE(isolate, should_throw, | 1292 RETURN_FAILURE(isolate, should_throw, |
1292 NewTypeError(MessageTemplate::kNoSetterInCallback, | 1293 NewTypeError(MessageTemplate::kNoSetterInCallback, |
(...skipping 17744 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
19037 for (PrototypeIterator iter(isolate, this, kStartAtReceiver, | 19038 for (PrototypeIterator iter(isolate, this, kStartAtReceiver, |
19038 PrototypeIterator::END_AT_NULL); | 19039 PrototypeIterator::END_AT_NULL); |
19039 !iter.IsAtEnd(); iter.AdvanceIgnoringProxies()) { | 19040 !iter.IsAtEnd(); iter.AdvanceIgnoringProxies()) { |
19040 if (iter.GetCurrent<Object>()->IsJSProxy()) return true; | 19041 if (iter.GetCurrent<Object>()->IsJSProxy()) return true; |
19041 } | 19042 } |
19042 return false; | 19043 return false; |
19043 } | 19044 } |
19044 | 19045 |
19045 } // namespace internal | 19046 } // namespace internal |
19046 } // namespace v8 | 19047 } // namespace v8 |
OLD | NEW |