OLD | NEW |
---|---|
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/runtime/runtime-utils.h" | 5 #include "src/runtime/runtime-utils.h" |
6 | 6 |
7 #include "src/arguments.h" | 7 #include "src/arguments.h" |
8 #include "src/bootstrapper.h" | 8 #include "src/bootstrapper.h" |
9 #include "src/debug/debug.h" | 9 #include "src/debug/debug.h" |
10 #include "src/isolate-inl.h" | 10 #include "src/isolate-inl.h" |
(...skipping 658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
669 LookupIterator it = LookupIterator::PropertyOrElement( | 669 LookupIterator it = LookupIterator::PropertyOrElement( |
670 isolate, object, name, object, LookupIterator::OWN); | 670 isolate, object, name, object, LookupIterator::OWN); |
671 // Cannot fail since this should only be called when | 671 // Cannot fail since this should only be called when |
672 // creating an object literal. | 672 // creating an object literal. |
673 CHECK(JSObject::DefineOwnPropertyIgnoreAttributes(&it, value, attrs, | 673 CHECK(JSObject::DefineOwnPropertyIgnoreAttributes(&it, value, attrs, |
674 Object::DONT_THROW) | 674 Object::DONT_THROW) |
675 .IsJust()); | 675 .IsJust()); |
676 return *object; | 676 return *object; |
677 } | 677 } |
678 | 678 |
679 RUNTIME_FUNCTION(Runtime_DefineDataProperty) { | |
Dan Ehrenberg
2016/09/15 21:26:58
The change to DefineDataProperty, which works on P
bakkot
2016/09/17 00:11:10
It has been; it got copied over here by accident.
| |
680 HandleScope scope(isolate); | |
681 DCHECK(args.length() == 5); | |
682 CONVERT_ARG_HANDLE_CHECKED(JSReceiver, receiver, 0); | |
683 CONVERT_ARG_HANDLE_CHECKED(Name, name, 1); | |
684 CONVERT_ARG_HANDLE_CHECKED(Object, value, 2); | |
685 CONVERT_PROPERTY_ATTRIBUTES_CHECKED(attrs, 3); | |
686 CONVERT_SMI_ARG_CHECKED(set_function_name, 4); | |
687 | |
688 if (set_function_name) { | |
689 DCHECK(value->IsJSFunction()); | |
690 JSFunction::SetName(Handle<JSFunction>::cast(value), name, | |
691 isolate->factory()->empty_string()); | |
692 } | |
693 | |
694 PropertyDescriptor desc; | |
695 desc.set_writable(!(attrs & ReadOnly)); | |
696 desc.set_enumerable(!(attrs & DontEnum)); | |
697 desc.set_configurable(!(attrs & DontDelete)); | |
698 desc.set_value(value); | |
699 | |
700 Maybe<bool> result = JSReceiver::DefineOwnProperty(isolate, receiver, name, | |
701 &desc, Object::DONT_THROW); | |
702 RETURN_FAILURE_IF_SCHEDULED_EXCEPTION(isolate); | |
703 if (result.IsNothing()) { | |
704 DCHECK(isolate->has_pending_exception()); | |
705 return isolate->heap()->exception(); | |
706 } | |
707 | |
708 return *receiver; | |
709 } | |
710 | |
679 // Return property without being observable by accessors or interceptors. | 711 // Return property without being observable by accessors or interceptors. |
680 RUNTIME_FUNCTION(Runtime_GetDataProperty) { | 712 RUNTIME_FUNCTION(Runtime_GetDataProperty) { |
681 HandleScope scope(isolate); | 713 HandleScope scope(isolate); |
682 DCHECK(args.length() == 2); | 714 DCHECK(args.length() == 2); |
683 CONVERT_ARG_HANDLE_CHECKED(JSReceiver, object, 0); | 715 CONVERT_ARG_HANDLE_CHECKED(JSReceiver, object, 0); |
684 CONVERT_ARG_HANDLE_CHECKED(Name, name, 1); | 716 CONVERT_ARG_HANDLE_CHECKED(Name, name, 1); |
685 return *JSReceiver::GetDataProperty(object, name); | 717 return *JSReceiver::GetDataProperty(object, name); |
686 } | 718 } |
687 | 719 |
688 RUNTIME_FUNCTION(Runtime_GetConstructorName) { | 720 RUNTIME_FUNCTION(Runtime_GetConstructorName) { |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
922 isolate, o, key, &success, LookupIterator::OWN); | 954 isolate, o, key, &success, LookupIterator::OWN); |
923 if (!success) return isolate->heap()->exception(); | 955 if (!success) return isolate->heap()->exception(); |
924 MAYBE_RETURN( | 956 MAYBE_RETURN( |
925 JSReceiver::CreateDataProperty(&it, value, Object::THROW_ON_ERROR), | 957 JSReceiver::CreateDataProperty(&it, value, Object::THROW_ON_ERROR), |
926 isolate->heap()->exception()); | 958 isolate->heap()->exception()); |
927 return *value; | 959 return *value; |
928 } | 960 } |
929 | 961 |
930 } // namespace internal | 962 } // namespace internal |
931 } // namespace v8 | 963 } // namespace v8 |
OLD | NEW |