| 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 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 LookupIterator it = LookupIterator::PropertyOrElement( | 673 LookupIterator it = LookupIterator::PropertyOrElement( |
| 674 isolate, object, name, object, LookupIterator::OWN); | 674 isolate, object, name, object, LookupIterator::OWN); |
| 675 // Cannot fail since this should only be called when | 675 // Cannot fail since this should only be called when |
| 676 // creating an object literal. | 676 // creating an object literal. |
| 677 CHECK(JSObject::DefineOwnPropertyIgnoreAttributes(&it, value, attrs, | 677 CHECK(JSObject::DefineOwnPropertyIgnoreAttributes(&it, value, attrs, |
| 678 Object::DONT_THROW) | 678 Object::DONT_THROW) |
| 679 .IsJust()); | 679 .IsJust()); |
| 680 return *object; | 680 return *object; |
| 681 } | 681 } |
| 682 | 682 |
| 683 RUNTIME_FUNCTION(Runtime_StoreTypeInformation) { |
| 684 HandleScope scope(isolate); |
| 685 DCHECK_EQ(4, args.length()); |
| 686 CONVERT_ARG_HANDLE_CHECKED(Name, name, 0); |
| 687 CONVERT_ARG_HANDLE_CHECKED(Object, value, 1); |
| 688 CONVERT_ARG_HANDLE_CHECKED(FeedbackVector, vector, 2); |
| 689 CONVERT_SMI_ARG_CHECKED(index, 3); |
| 690 |
| 691 DCHECK(FLAG_type_profile); |
| 692 |
| 693 StoreDataPropertyInLiteralICNexus nexus(vector, vector->ToSlot(index)); |
| 694 if (nexus.ic_state() == UNINITIALIZED) { |
| 695 if (name->IsUniqueName()) { |
| 696 printf("."); |
| 697 nexus.ConfigureMonomorphic(name, handle(name->map())); |
| 698 } else { |
| 699 nexus.ConfigureMegamorphic(); |
| 700 } |
| 701 } else if (nexus.ic_state() == MONOMORPHIC) { |
| 702 printf("1"); |
| 703 if (nexus.FindFirstMap() != name->map() || |
| 704 nexus.GetFeedbackExtra() != *name) { |
| 705 nexus.ConfigureMegamorphic(); |
| 706 } |
| 707 } |
| 708 |
| 709 // We want to print the type profile, i.e., variable name and result of |
| 710 // value.constructor.name or typeof value. |
| 711 |
| 712 printf("name: "); |
| 713 name->Print(); |
| 714 printf("value: "); |
| 715 Object::TypeOf(isolate, value)->Print(); |
| 716 printf("\n"); |
| 717 |
| 718 return *value; |
| 719 } |
| 720 |
| 683 // Return property without being observable by accessors or interceptors. | 721 // Return property without being observable by accessors or interceptors. |
| 684 RUNTIME_FUNCTION(Runtime_GetDataProperty) { | 722 RUNTIME_FUNCTION(Runtime_GetDataProperty) { |
| 685 HandleScope scope(isolate); | 723 HandleScope scope(isolate); |
| 686 DCHECK_EQ(2, args.length()); | 724 DCHECK_EQ(2, args.length()); |
| 687 CONVERT_ARG_HANDLE_CHECKED(JSReceiver, object, 0); | 725 CONVERT_ARG_HANDLE_CHECKED(JSReceiver, object, 0); |
| 688 CONVERT_ARG_HANDLE_CHECKED(Name, name, 1); | 726 CONVERT_ARG_HANDLE_CHECKED(Name, name, 1); |
| 689 return *JSReceiver::GetDataProperty(object, name); | 727 return *JSReceiver::GetDataProperty(object, name); |
| 690 } | 728 } |
| 691 | 729 |
| 692 RUNTIME_FUNCTION(Runtime_GetConstructorName) { | 730 RUNTIME_FUNCTION(Runtime_GetConstructorName) { |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 984 if (!success) return isolate->heap()->exception(); | 1022 if (!success) return isolate->heap()->exception(); |
| 985 MAYBE_RETURN( | 1023 MAYBE_RETURN( |
| 986 JSReceiver::CreateDataProperty(&it, value, Object::THROW_ON_ERROR), | 1024 JSReceiver::CreateDataProperty(&it, value, Object::THROW_ON_ERROR), |
| 987 isolate->heap()->exception()); | 1025 isolate->heap()->exception()); |
| 988 return *value; | 1026 return *value; |
| 989 } | 1027 } |
| 990 | 1028 |
| 991 | 1029 |
| 992 } // namespace internal | 1030 } // namespace internal |
| 993 } // namespace v8 | 1031 } // namespace v8 |
| OLD | NEW |