| 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 593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 604 Object); | 604 Object); |
| 605 } | 605 } |
| 606 ASSIGN_RETURN_ON_EXCEPTION(isolate, lhs, Object::ToNumber(lhs), Object); | 606 ASSIGN_RETURN_ON_EXCEPTION(isolate, lhs, Object::ToNumber(lhs), Object); |
| 607 ASSIGN_RETURN_ON_EXCEPTION(isolate, rhs, Object::ToNumber(rhs), Object); | 607 ASSIGN_RETURN_ON_EXCEPTION(isolate, rhs, Object::ToNumber(rhs), Object); |
| 608 } | 608 } |
| 609 return isolate->factory()->NewNumberFromInt(NumberToInt32(*lhs) ^ | 609 return isolate->factory()->NewNumberFromInt(NumberToInt32(*lhs) ^ |
| 610 NumberToInt32(*rhs)); | 610 NumberToInt32(*rhs)); |
| 611 } | 611 } |
| 612 | 612 |
| 613 | 613 |
| 614 Maybe<bool> Object::IsArray(Handle<Object> object) { |
| 615 if (object->IsJSArray()) return Just(true); |
| 616 if (object->IsJSProxy()) { |
| 617 Handle<JSProxy> proxy = Handle<JSProxy>::cast(object); |
| 618 Isolate* isolate = proxy->GetIsolate(); |
| 619 if (proxy->IsRevoked()) { |
| 620 isolate->Throw(*isolate->factory()->NewTypeError( |
| 621 MessageTemplate::kProxyRevoked, |
| 622 isolate->factory()->NewStringFromAsciiChecked("IsArray"))); |
| 623 return Nothing<bool>(); |
| 624 } |
| 625 return Object::IsArray(handle(proxy->target(), isolate)); |
| 626 } |
| 627 return Just(false); |
| 628 } |
| 629 |
| 630 |
| 614 bool Object::IsPromise(Handle<Object> object) { | 631 bool Object::IsPromise(Handle<Object> object) { |
| 615 if (!object->IsJSObject()) return false; | 632 if (!object->IsJSObject()) return false; |
| 616 auto js_object = Handle<JSObject>::cast(object); | 633 auto js_object = Handle<JSObject>::cast(object); |
| 617 // Promises can't have access checks. | 634 // Promises can't have access checks. |
| 618 if (js_object->map()->is_access_check_needed()) return false; | 635 if (js_object->map()->is_access_check_needed()) return false; |
| 619 auto isolate = js_object->GetIsolate(); | 636 auto isolate = js_object->GetIsolate(); |
| 620 // TODO(dcarney): this should just be read from the symbol registry so as not | 637 // TODO(dcarney): this should just be read from the symbol registry so as not |
| 621 // to be context dependent. | 638 // to be context dependent. |
| 622 auto key = isolate->factory()->promise_status_symbol(); | 639 auto key = isolate->factory()->promise_status_symbol(); |
| 623 // Shouldn't be possible to throw here. | 640 // Shouldn't be possible to throw here. |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 976 THROW_NEW_ERROR(isolate, | 993 THROW_NEW_ERROR(isolate, |
| 977 NewTypeError(MessageTemplate::kProxyHandlerTrapMissing, | 994 NewTypeError(MessageTemplate::kProxyHandlerTrapMissing, |
| 978 handler, trap_name), | 995 handler, trap_name), |
| 979 Object); | 996 Object); |
| 980 } | 997 } |
| 981 // 13. Return handlerProto. | 998 // 13. Return handlerProto. |
| 982 return handler_proto; | 999 return handler_proto; |
| 983 } | 1000 } |
| 984 | 1001 |
| 985 | 1002 |
| 986 bool JSProxy::IsRevoked() { | 1003 bool JSProxy::IsRevoked() const { |
| 987 // TODO(neis): Decide on how to represent revocation. For now, revocation is | 1004 // TODO(neis): Decide on how to represent revocation. For now, revocation is |
| 988 // unsupported. | 1005 // unsupported. |
| 989 DCHECK(target()->IsJSReceiver()); | 1006 DCHECK(target()->IsJSReceiver()); |
| 990 DCHECK(handler()->IsJSReceiver()); | 1007 DCHECK(handler()->IsJSReceiver()); |
| 991 return false; | 1008 return false; |
| 992 } | 1009 } |
| 993 | 1010 |
| 994 | 1011 |
| 995 MaybeHandle<Object> Object::GetPropertyWithAccessor( | 1012 MaybeHandle<Object> Object::GetPropertyWithAccessor( |
| 996 LookupIterator* it, LanguageMode language_mode) { | 1013 LookupIterator* it, LanguageMode language_mode) { |
| (...skipping 18058 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 19055 if (cell->value() != *new_value) { | 19072 if (cell->value() != *new_value) { |
| 19056 cell->set_value(*new_value); | 19073 cell->set_value(*new_value); |
| 19057 Isolate* isolate = cell->GetIsolate(); | 19074 Isolate* isolate = cell->GetIsolate(); |
| 19058 cell->dependent_code()->DeoptimizeDependentCodeGroup( | 19075 cell->dependent_code()->DeoptimizeDependentCodeGroup( |
| 19059 isolate, DependentCode::kPropertyCellChangedGroup); | 19076 isolate, DependentCode::kPropertyCellChangedGroup); |
| 19060 } | 19077 } |
| 19061 } | 19078 } |
| 19062 | 19079 |
| 19063 } // namespace internal | 19080 } // namespace internal |
| 19064 } // namespace v8 | 19081 } // namespace v8 |
| OLD | NEW |