| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "include/dart_api.h" | 5 #include "include/dart_api.h" |
| 6 #include "platform/assert.h" | 6 #include "platform/assert.h" |
| 7 #include "platform/json.h" | 7 #include "platform/json.h" |
| 8 #include "platform/utils.h" | 8 #include "platform/utils.h" |
| 9 #include "vm/class_finalizer.h" | 9 #include "vm/class_finalizer.h" |
| 10 #include "vm/dart_api_impl.h" | 10 #include "vm/dart_api_impl.h" |
| (...skipping 6715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6726 | 6726 |
| 6727 str = Dart_NewString32(NULL, 0); | 6727 str = Dart_NewString32(NULL, 0); |
| 6728 EXPECT_VALID(str); | 6728 EXPECT_VALID(str); |
| 6729 EXPECT(Dart_IsString(str)); | 6729 EXPECT(Dart_IsString(str)); |
| 6730 len = -1; | 6730 len = -1; |
| 6731 EXPECT_VALID(Dart_StringLength(str, &len)); | 6731 EXPECT_VALID(Dart_StringLength(str, &len)); |
| 6732 EXPECT_EQ(0, len); | 6732 EXPECT_EQ(0, len); |
| 6733 } | 6733 } |
| 6734 | 6734 |
| 6735 | 6735 |
| 6736 // Try to allocate a peer with a handles to objects of prohibited |
| 6737 // subtypes. |
| 6738 TEST_CASE(InvalidGetSetPeer) { |
| 6739 void* out = &out; |
| 6740 EXPECT(Dart_IsError(Dart_GetPeer(Dart_Null(), &out))); |
| 6741 EXPECT(out == &out); |
| 6742 EXPECT(Dart_IsError(Dart_SetPeer(Dart_Null(), &out))); |
| 6743 out = &out; |
| 6744 EXPECT(Dart_IsError(Dart_GetPeer(Dart_True(), &out))); |
| 6745 EXPECT(out == &out); |
| 6746 EXPECT(Dart_IsError(Dart_SetPeer(Dart_True(), &out))); |
| 6747 out = &out; |
| 6748 EXPECT(Dart_IsError(Dart_GetPeer(Dart_False(), &out))); |
| 6749 EXPECT(out == &out); |
| 6750 EXPECT(Dart_IsError(Dart_SetPeer(Dart_False(), &out))); |
| 6751 out = &out; |
| 6752 Dart_Handle smi = Dart_NewInteger(0); |
| 6753 EXPECT(Dart_IsError(Dart_GetPeer(smi, &out))); |
| 6754 EXPECT(out == &out); |
| 6755 EXPECT(Dart_IsError(Dart_SetPeer(smi, &out))); |
| 6756 out = &out; |
| 6757 Dart_Handle big = Dart_NewIntegerFromHexCString("0x10000000000000000"); |
| 6758 EXPECT(Dart_IsError(Dart_GetPeer(big, &out))); |
| 6759 EXPECT(out == &out); |
| 6760 EXPECT(Dart_IsError(Dart_SetPeer(big, &out))); |
| 6761 Dart_Handle dbl = Dart_NewDouble(0.0); |
| 6762 EXPECT(Dart_IsError(Dart_GetPeer(dbl, &out))); |
| 6763 EXPECT(out == &out); |
| 6764 EXPECT(Dart_IsError(Dart_SetPeer(dbl, &out))); |
| 6765 } |
| 6766 |
| 6767 |
| 6768 // Allocates an object in new space and assigns it a peer. Removes |
| 6769 // the peer and checks that the count of peer objects is decremented |
| 6770 // by one. |
| 6771 TEST_CASE(OneNewSpacePeer) { |
| 6772 Isolate* isolate = Isolate::Current(); |
| 6773 Dart_Handle str = Dart_NewString("a string"); |
| 6774 EXPECT_VALID(str); |
| 6775 EXPECT(Dart_IsString(str)); |
| 6776 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6777 void* out = &out; |
| 6778 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 6779 EXPECT(out == NULL); |
| 6780 int peer = 1234; |
| 6781 EXPECT_VALID(Dart_SetPeer(str, &peer)); |
| 6782 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6783 out = &out; |
| 6784 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 6785 EXPECT(out == reinterpret_cast<void*>(&peer)); |
| 6786 EXPECT_VALID(Dart_SetPeer(str, NULL)); |
| 6787 out = &out; |
| 6788 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 6789 EXPECT(out == NULL); |
| 6790 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6791 } |
| 6792 |
| 6793 |
| 6794 // Allocates an object in new space and assigns it a peer. Allows the |
| 6795 // peer referent to be garbage collected and checks that the count of |
| 6796 // peer objects is decremented by one. |
| 6797 TEST_CASE(CollectOneNewSpacePeer) { |
| 6798 Isolate* isolate = Isolate::Current(); |
| 6799 Dart_EnterScope(); |
| 6800 { |
| 6801 DARTSCOPE_NOCHECKS(isolate); |
| 6802 Dart_Handle str = Dart_NewString("a string"); |
| 6803 EXPECT_VALID(str); |
| 6804 EXPECT(Dart_IsString(str)); |
| 6805 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6806 void* out = &out; |
| 6807 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 6808 EXPECT(out == NULL); |
| 6809 int peer = 1234; |
| 6810 EXPECT_VALID(Dart_SetPeer(str, &peer)); |
| 6811 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6812 out = &out; |
| 6813 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 6814 EXPECT(out == reinterpret_cast<void*>(&peer)); |
| 6815 isolate->heap()->CollectGarbage(Heap::kNew); |
| 6816 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6817 out = &out; |
| 6818 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 6819 EXPECT(out == reinterpret_cast<void*>(&peer)); |
| 6820 } |
| 6821 Dart_ExitScope(); |
| 6822 isolate->heap()->CollectGarbage(Heap::kNew); |
| 6823 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6824 } |
| 6825 |
| 6826 |
| 6827 // Allocates two objects in new space and assigns them peers. Removes |
| 6828 // the peers and checks that the count of peer objects is decremented |
| 6829 // by two. |
| 6830 TEST_CASE(TwoNewSpacePeers) { |
| 6831 Isolate* isolate = Isolate::Current(); |
| 6832 Dart_Handle s1 = Dart_NewString("s1"); |
| 6833 EXPECT_VALID(s1); |
| 6834 EXPECT(Dart_IsString(s1)); |
| 6835 void* o1 = &o1; |
| 6836 EXPECT_VALID(Dart_GetPeer(s1, &o1)); |
| 6837 EXPECT(o1 == NULL); |
| 6838 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6839 int p1 = 1234; |
| 6840 EXPECT_VALID(Dart_SetPeer(s1, &p1)); |
| 6841 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6842 EXPECT_VALID(Dart_GetPeer(s1, &o1)); |
| 6843 EXPECT(o1 == reinterpret_cast<void*>(&p1)); |
| 6844 Dart_Handle s2 = Dart_NewString("a string"); |
| 6845 EXPECT_VALID(s2); |
| 6846 EXPECT(Dart_IsString(s2)); |
| 6847 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6848 void* o2 = &o2; |
| 6849 EXPECT(Dart_GetPeer(s2, &o2)); |
| 6850 EXPECT(o2 == NULL); |
| 6851 int p2 = 5678; |
| 6852 EXPECT_VALID(Dart_SetPeer(s2, &p2)); |
| 6853 EXPECT_EQ(2, isolate->heap()->PeerCount()); |
| 6854 EXPECT_VALID(Dart_GetPeer(s2, &o2)); |
| 6855 EXPECT(o2 == reinterpret_cast<void*>(&p2)); |
| 6856 EXPECT_VALID(Dart_SetPeer(s1, NULL)); |
| 6857 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6858 EXPECT(Dart_GetPeer(s1, &o1)); |
| 6859 EXPECT(o1 == NULL); |
| 6860 EXPECT_VALID(Dart_SetPeer(s2, NULL)); |
| 6861 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6862 EXPECT(Dart_GetPeer(s2, &o2)); |
| 6863 EXPECT(o2 == NULL); |
| 6864 } |
| 6865 |
| 6866 |
| 6867 // Allocates two objects in new space and assigns them a peer. Allow |
| 6868 // the peer referents to be garbage collected and check that the count |
| 6869 // of peer objects is decremented by two. |
| 6870 TEST_CASE(CollectTwoNewSpacePeers) { |
| 6871 Isolate* isolate = Isolate::Current(); |
| 6872 Dart_EnterScope(); |
| 6873 { |
| 6874 DARTSCOPE_NOCHECKS(isolate); |
| 6875 Dart_Handle s1 = Dart_NewString("s1"); |
| 6876 EXPECT_VALID(s1); |
| 6877 EXPECT(Dart_IsString(s1)); |
| 6878 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6879 void* o1 = &o1; |
| 6880 EXPECT(Dart_GetPeer(s1, &o1)); |
| 6881 EXPECT(o1 == NULL); |
| 6882 int p1 = 1234; |
| 6883 EXPECT_VALID(Dart_SetPeer(s1, &p1)); |
| 6884 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6885 EXPECT_VALID(Dart_GetPeer(s1, &o1)); |
| 6886 EXPECT(o1 == reinterpret_cast<void*>(&p1)); |
| 6887 Dart_Handle s2 = Dart_NewString("s2"); |
| 6888 EXPECT_VALID(s2); |
| 6889 EXPECT(Dart_IsString(s2)); |
| 6890 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6891 void* o2 = &o2; |
| 6892 EXPECT(Dart_GetPeer(s2, &o2)); |
| 6893 EXPECT(o2 == NULL); |
| 6894 int p2 = 5678; |
| 6895 EXPECT_VALID(Dart_SetPeer(s2, &p2)); |
| 6896 EXPECT_EQ(2, isolate->heap()->PeerCount()); |
| 6897 EXPECT_VALID(Dart_GetPeer(s2, &o2)); |
| 6898 EXPECT(o2 == reinterpret_cast<void*>(&p2)); |
| 6899 } |
| 6900 Dart_ExitScope(); |
| 6901 isolate->heap()->CollectGarbage(Heap::kNew); |
| 6902 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6903 } |
| 6904 |
| 6905 |
| 6906 // Allocates several objects in new space. Performs successive |
| 6907 // garbage collections and checks that the peer count is stable. |
| 6908 TEST_CASE(CopyNewSpacePeers) { |
| 6909 const int kPeerCount = 10; |
| 6910 Isolate* isolate = Isolate::Current(); |
| 6911 Dart_Handle s[kPeerCount]; |
| 6912 for (int i = 0; i < kPeerCount; ++i) { |
| 6913 s[i] = Dart_NewString("a string"); |
| 6914 EXPECT_VALID(s[i]); |
| 6915 EXPECT(Dart_IsString(s[i])); |
| 6916 void* o = &o; |
| 6917 EXPECT_VALID(Dart_GetPeer(s[i], &o)); |
| 6918 EXPECT(o == NULL); |
| 6919 } |
| 6920 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6921 int p[kPeerCount]; |
| 6922 for (int i = 0; i < kPeerCount; ++i) { |
| 6923 EXPECT_VALID(Dart_SetPeer(s[i], &p[i])); |
| 6924 EXPECT_EQ(i + 1, isolate->heap()->PeerCount()); |
| 6925 void* o = &o; |
| 6926 EXPECT_VALID(Dart_GetPeer(s[i], &o)); |
| 6927 EXPECT(o == reinterpret_cast<void*>(&p[i])); |
| 6928 } |
| 6929 EXPECT_EQ(kPeerCount, isolate->heap()->PeerCount()); |
| 6930 isolate->heap()->CollectGarbage(Heap::kNew); |
| 6931 EXPECT_EQ(kPeerCount, isolate->heap()->PeerCount()); |
| 6932 isolate->heap()->CollectGarbage(Heap::kNew); |
| 6933 EXPECT_EQ(kPeerCount, isolate->heap()->PeerCount()); |
| 6934 } |
| 6935 |
| 6936 |
| 6937 // Allocates an object in new space and assigns it a peer. Promotes |
| 6938 // the peer to old space. Removes the peer and check that the count |
| 6939 // of peer objects is decremented by one. |
| 6940 TEST_CASE(OnePromotedPeer) { |
| 6941 Isolate* isolate = Isolate::Current(); |
| 6942 Dart_Handle str = Dart_NewString("a string"); |
| 6943 EXPECT_VALID(str); |
| 6944 EXPECT(Dart_IsString(str)); |
| 6945 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6946 void* out = &out; |
| 6947 EXPECT(Dart_GetPeer(str, &out)); |
| 6948 EXPECT(out == NULL); |
| 6949 int peer = 1234; |
| 6950 EXPECT_VALID(Dart_SetPeer(str, &peer)); |
| 6951 out = &out; |
| 6952 EXPECT(Dart_GetPeer(str, &out)); |
| 6953 EXPECT(out == reinterpret_cast<void*>(&peer)); |
| 6954 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6955 isolate->heap()->CollectGarbage(Heap::kNew); |
| 6956 isolate->heap()->CollectGarbage(Heap::kNew); |
| 6957 { |
| 6958 DARTSCOPE_NOCHECKS(isolate); |
| 6959 String& handle = String::Handle(); |
| 6960 handle ^= Api::UnwrapHandle(str); |
| 6961 EXPECT(handle.IsOld()); |
| 6962 } |
| 6963 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 6964 EXPECT(out == reinterpret_cast<void*>(&peer)); |
| 6965 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6966 EXPECT_VALID(Dart_SetPeer(str, NULL)); |
| 6967 out = &out; |
| 6968 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 6969 EXPECT(out == NULL); |
| 6970 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6971 } |
| 6972 |
| 6973 |
| 6974 // Allocates an object in old space and assigns it a peer. Removes |
| 6975 // the peer and checks that the count of peer objects is decremented |
| 6976 // by one. |
| 6977 TEST_CASE(OneOldSpacePeer) { |
| 6978 Isolate* isolate = Isolate::Current(); |
| 6979 Dart_Handle str = Api::NewHandle(isolate, String::New("str", Heap::kOld)); |
| 6980 EXPECT_VALID(str); |
| 6981 EXPECT(Dart_IsString(str)); |
| 6982 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 6983 void* out = &out; |
| 6984 EXPECT(Dart_GetPeer(str, &out)); |
| 6985 EXPECT(out == NULL); |
| 6986 int peer = 1234; |
| 6987 EXPECT_VALID(Dart_SetPeer(str, &peer)); |
| 6988 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6989 out = &out; |
| 6990 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 6991 EXPECT(out == reinterpret_cast<void*>(&peer)); |
| 6992 isolate->heap()->CollectGarbage(Heap::kOld); |
| 6993 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 6994 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 6995 EXPECT(out == reinterpret_cast<void*>(&peer)); |
| 6996 EXPECT_VALID(Dart_SetPeer(str, NULL)); |
| 6997 out = &out; |
| 6998 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 6999 EXPECT(out == NULL); |
| 7000 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 7001 } |
| 7002 |
| 7003 |
| 7004 // Allocates an object in old space and assigns it a peer. Allow the |
| 7005 // peer referent to be garbage collected and check that the count of |
| 7006 // peer objects is decremented by one. |
| 7007 TEST_CASE(CollectOneOldSpacePeer) { |
| 7008 Isolate* isolate = Isolate::Current(); |
| 7009 Dart_EnterScope(); |
| 7010 { |
| 7011 DARTSCOPE_NOCHECKS(isolate); |
| 7012 Dart_Handle str = Api::NewHandle(isolate, String::New("str", Heap::kOld)); |
| 7013 EXPECT_VALID(str); |
| 7014 EXPECT(Dart_IsString(str)); |
| 7015 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 7016 void* out = &out; |
| 7017 EXPECT(Dart_GetPeer(str, &out)); |
| 7018 EXPECT(out == NULL); |
| 7019 int peer = 1234; |
| 7020 EXPECT_VALID(Dart_SetPeer(str, &peer)); |
| 7021 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 7022 out = &out; |
| 7023 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 7024 EXPECT(out == reinterpret_cast<void*>(&peer)); |
| 7025 isolate->heap()->CollectGarbage(Heap::kOld); |
| 7026 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 7027 EXPECT_VALID(Dart_GetPeer(str, &out)); |
| 7028 EXPECT(out == reinterpret_cast<void*>(&peer)); |
| 7029 } |
| 7030 Dart_ExitScope(); |
| 7031 isolate->heap()->CollectGarbage(Heap::kOld); |
| 7032 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 7033 } |
| 7034 |
| 7035 |
| 7036 // Allocates two objects in old space and assigns them peers. Removes |
| 7037 // the peers and checks that the count of peer objects is decremented |
| 7038 // by two. |
| 7039 TEST_CASE(TwoOldSpacePeers) { |
| 7040 Isolate* isolate = Isolate::Current(); |
| 7041 Dart_Handle s1 = Api::NewHandle(isolate, String::New("s1", Heap::kOld)); |
| 7042 EXPECT_VALID(s1); |
| 7043 EXPECT(Dart_IsString(s1)); |
| 7044 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 7045 void* o1 = &o1; |
| 7046 EXPECT(Dart_GetPeer(s1, &o1)); |
| 7047 EXPECT(o1 == NULL); |
| 7048 int p1 = 1234; |
| 7049 EXPECT_VALID(Dart_SetPeer(s1, &p1)); |
| 7050 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 7051 o1 = &o1; |
| 7052 EXPECT_VALID(Dart_GetPeer(s1, &o1)); |
| 7053 EXPECT(o1 == reinterpret_cast<void*>(&p1)); |
| 7054 Dart_Handle s2 = Api::NewHandle(isolate, String::New("s2", Heap::kOld)); |
| 7055 EXPECT_VALID(s2); |
| 7056 EXPECT(Dart_IsString(s2)); |
| 7057 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 7058 void* o2 = &o2; |
| 7059 EXPECT(Dart_GetPeer(s2, &o2)); |
| 7060 EXPECT(o2 == NULL); |
| 7061 int p2 = 5678; |
| 7062 EXPECT_VALID(Dart_SetPeer(s2, &p2)); |
| 7063 EXPECT_EQ(2, isolate->heap()->PeerCount()); |
| 7064 o2 = &o2; |
| 7065 EXPECT_VALID(Dart_GetPeer(s2, &o2)); |
| 7066 EXPECT(o2 == reinterpret_cast<void*>(&p2)); |
| 7067 EXPECT_VALID(Dart_SetPeer(s1, NULL)); |
| 7068 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 7069 o1 = &o1; |
| 7070 EXPECT(Dart_GetPeer(s1, &o1)); |
| 7071 EXPECT(o1 == NULL); |
| 7072 EXPECT_VALID(Dart_SetPeer(s2, NULL)); |
| 7073 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 7074 o2 = &o2; |
| 7075 EXPECT_VALID(Dart_GetPeer(s2, &o2)); |
| 7076 EXPECT(o2 == NULL); |
| 7077 } |
| 7078 |
| 7079 |
| 7080 // Allocates two objects in old space and assigns them a peer. Allows |
| 7081 // the peer referents to be garbage collected and checks that the |
| 7082 // count of peer objects is decremented by two. |
| 7083 TEST_CASE(CollectTwoOldSpacePeers) { |
| 7084 Isolate* isolate = Isolate::Current(); |
| 7085 Dart_EnterScope(); |
| 7086 { |
| 7087 DARTSCOPE_NOCHECKS(isolate); |
| 7088 Dart_Handle s1 = Api::NewHandle(isolate, String::New("s1", Heap::kOld)); |
| 7089 EXPECT_VALID(s1); |
| 7090 EXPECT(Dart_IsString(s1)); |
| 7091 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 7092 void* o1 = &o1; |
| 7093 EXPECT(Dart_GetPeer(s1, &o1)); |
| 7094 EXPECT(o1 == NULL); |
| 7095 int p1 = 1234; |
| 7096 EXPECT_VALID(Dart_SetPeer(s1, &p1)); |
| 7097 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 7098 o1 = &o1; |
| 7099 EXPECT_VALID(Dart_GetPeer(s1, &o1)); |
| 7100 EXPECT(o1 == reinterpret_cast<void*>(&p1)); |
| 7101 Dart_Handle s2 = Api::NewHandle(isolate, String::New("s2", Heap::kOld)); |
| 7102 EXPECT_VALID(s2); |
| 7103 EXPECT(Dart_IsString(s2)); |
| 7104 EXPECT_EQ(1, isolate->heap()->PeerCount()); |
| 7105 void* o2 = &o2; |
| 7106 EXPECT(Dart_GetPeer(s2, &o2)); |
| 7107 EXPECT(o2 == NULL); |
| 7108 int p2 = 5678; |
| 7109 EXPECT_VALID(Dart_SetPeer(s2, &p2)); |
| 7110 EXPECT_EQ(2, isolate->heap()->PeerCount()); |
| 7111 o2 = &o2; |
| 7112 EXPECT_VALID(Dart_GetPeer(s2, &o2)); |
| 7113 EXPECT(o2 == reinterpret_cast<void*>(&p2)); |
| 7114 } |
| 7115 Dart_ExitScope(); |
| 7116 isolate->heap()->CollectGarbage(Heap::kOld); |
| 7117 EXPECT_EQ(0, isolate->heap()->PeerCount()); |
| 7118 } |
| 7119 |
| 6736 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). | 7120 #endif // defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64). |
| 6737 | 7121 |
| 6738 } // namespace dart | 7122 } // namespace dart |
| OLD | NEW |