@@ -347,16 +347,6 @@ static RawObject* Send1Arg(const Instance& receiver,
347
347
}
348
348
349
349
350
- WeakReferenceSetBuilder* ApiState::NewWeakReferenceSetBuilder () {
351
- return new WeakReferenceSetBuilder (this );
352
- }
353
-
354
-
355
- void ApiState::DelayWeakReferenceSet (WeakReferenceSet* reference_set) {
356
- WeakReferenceSet::Push (reference_set, &delayed_weak_reference_sets_);
357
- }
358
-
359
-
360
350
Dart_Handle Api::InitNewHandle (Isolate* isolate, RawObject* raw) {
361
351
LocalHandles* local_handles = Api::TopScope (isolate)->local_handles ();
362
352
ASSERT (local_handles != NULL );
@@ -691,8 +681,7 @@ FinalizablePersistentHandle* FinalizablePersistentHandle::Cast(
691
681
Dart_WeakPersistentHandle handle) {
692
682
#if defined(DEBUG)
693
683
ApiState* state = Isolate::Current ()->api_state ();
694
- ASSERT (state->IsValidWeakPersistentHandle (handle) ||
695
- state->IsValidPrologueWeakPersistentHandle (handle));
684
+ ASSERT (state->IsValidWeakPersistentHandle (handle));
696
685
#endif
697
686
return reinterpret_cast <FinalizablePersistentHandle*>(handle);
698
687
}
@@ -710,11 +699,7 @@ void FinalizablePersistentHandle::Finalize(
710
699
(*callback)(isolate->init_callback_data (), object, peer);
711
700
ApiState* state = isolate->api_state ();
712
701
ASSERT (state != NULL );
713
- if (handle->IsPrologueWeakPersistent ()) {
714
- state->prologue_weak_persistent_handles ().FreeHandle (handle);
715
- } else {
716
- state->weak_persistent_handles ().FreeHandle (handle);
717
- }
702
+ state->weak_persistent_handles ().FreeHandle (handle);
718
703
}
719
704
720
705
@@ -1018,7 +1003,6 @@ DART_EXPORT void Dart_SetPersistentHandle(Dart_PersistentHandle obj1,
1018
1003
static Dart_WeakPersistentHandle AllocateFinalizableHandle (
1019
1004
Thread* thread,
1020
1005
Dart_Handle object,
1021
- bool is_prologue,
1022
1006
void * peer,
1023
1007
intptr_t external_allocation_size,
1024
1008
Dart_WeakPersistentHandleFinalizer callback) {
@@ -1027,7 +1011,6 @@ static Dart_WeakPersistentHandle AllocateFinalizableHandle(
1027
1011
ref = Api::UnwrapHandle (object);
1028
1012
FinalizablePersistentHandle* finalizable_ref =
1029
1013
FinalizablePersistentHandle::New (thread->isolate (),
1030
- is_prologue,
1031
1014
ref,
1032
1015
peer,
1033
1016
callback,
@@ -1048,26 +1031,6 @@ DART_EXPORT Dart_WeakPersistentHandle Dart_NewWeakPersistentHandle(
1048
1031
}
1049
1032
return AllocateFinalizableHandle (thread,
1050
1033
object,
1051
- false ,
1052
- peer,
1053
- external_allocation_size,
1054
- callback);
1055
- }
1056
-
1057
-
1058
- DART_EXPORT Dart_WeakPersistentHandle Dart_NewPrologueWeakPersistentHandle (
1059
- Dart_Handle object,
1060
- void * peer,
1061
- intptr_t external_allocation_size,
1062
- Dart_WeakPersistentHandleFinalizer callback) {
1063
- Thread* thread = Thread::Current ();
1064
- CHECK_ISOLATE (thread->isolate ());
1065
- if (callback == NULL ) {
1066
- return NULL ;
1067
- }
1068
- return AllocateFinalizableHandle (thread,
1069
- object,
1070
- true ,
1071
1034
peer,
1072
1035
external_allocation_size,
1073
1036
callback);
@@ -1098,81 +1061,7 @@ DART_EXPORT void Dart_DeleteWeakPersistentHandle(
1098
1061
FinalizablePersistentHandle* weak_ref =
1099
1062
FinalizablePersistentHandle::Cast (object);
1100
1063
weak_ref->EnsureFreeExternal (isolate);
1101
- if (weak_ref->IsPrologueWeakPersistent ()) {
1102
- ASSERT (state->IsValidPrologueWeakPersistentHandle (object));
1103
- state->prologue_weak_persistent_handles ().FreeHandle (weak_ref);
1104
- } else {
1105
- ASSERT (!state->IsValidPrologueWeakPersistentHandle (object));
1106
- state->weak_persistent_handles ().FreeHandle (weak_ref);
1107
- }
1108
- }
1109
-
1110
-
1111
- DART_EXPORT bool Dart_IsPrologueWeakPersistentHandle (
1112
- Dart_WeakPersistentHandle object) {
1113
- FinalizablePersistentHandle* weak_ref =
1114
- FinalizablePersistentHandle::Cast (object);
1115
- return weak_ref->IsPrologueWeakPersistent ();
1116
- }
1117
-
1118
-
1119
- DART_EXPORT Dart_WeakReferenceSetBuilder Dart_NewWeakReferenceSetBuilder () {
1120
- Isolate* isolate = Isolate::Current ();
1121
- CHECK_ISOLATE (isolate);
1122
- ApiState* state = isolate->api_state ();
1123
- ASSERT (state != NULL );
1124
- return reinterpret_cast <Dart_WeakReferenceSetBuilder>(
1125
- state->NewWeakReferenceSetBuilder ());
1126
- }
1127
-
1128
-
1129
- DART_EXPORT Dart_WeakReferenceSet Dart_NewWeakReferenceSet (
1130
- Dart_WeakReferenceSetBuilder set_builder,
1131
- Dart_WeakPersistentHandle key,
1132
- Dart_WeakPersistentHandle value) {
1133
- ASSERT (set_builder != NULL && key != NULL );
1134
- WeakReferenceSetBuilder* builder =
1135
- reinterpret_cast <WeakReferenceSetBuilder*>(set_builder);
1136
- ApiState* state = builder->api_state ();
1137
- ASSERT (state == Isolate::Current ()->api_state ());
1138
- WeakReferenceSet* reference_set = builder->NewWeakReferenceSet ();
1139
- reference_set->AppendKey (key);
1140
- if (value != NULL ) {
1141
- reference_set->AppendValue (value);
1142
- }
1143
- state->DelayWeakReferenceSet (reference_set);
1144
- return reinterpret_cast <Dart_WeakReferenceSet>(reference_set);
1145
- }
1146
-
1147
-
1148
- DART_EXPORT Dart_Handle Dart_AppendToWeakReferenceSet (
1149
- Dart_WeakReferenceSet reference_set,
1150
- Dart_WeakPersistentHandle key,
1151
- Dart_WeakPersistentHandle value) {
1152
- ASSERT (reference_set != NULL );
1153
- WeakReferenceSet* set = reinterpret_cast <WeakReferenceSet*>(reference_set);
1154
- set->Append (key, value);
1155
- return Api::Success ();
1156
- }
1157
-
1158
-
1159
- DART_EXPORT Dart_Handle Dart_AppendKeyToWeakReferenceSet (
1160
- Dart_WeakReferenceSet reference_set,
1161
- Dart_WeakPersistentHandle key) {
1162
- ASSERT (reference_set != NULL );
1163
- WeakReferenceSet* set = reinterpret_cast <WeakReferenceSet*>(reference_set);
1164
- set->AppendKey (key);
1165
- return Api::Success ();
1166
- }
1167
-
1168
-
1169
- DART_EXPORT Dart_Handle Dart_AppendValueToWeakReferenceSet (
1170
- Dart_WeakReferenceSet reference_set,
1171
- Dart_WeakPersistentHandle value) {
1172
- ASSERT (reference_set != NULL );
1173
- WeakReferenceSet* set = reinterpret_cast <WeakReferenceSet*>(reference_set);
1174
- set->AppendValue (value);
1175
- return Api::Success ();
1064
+ state->weak_persistent_handles ().FreeHandle (weak_ref);
1176
1065
}
1177
1066
1178
1067
@@ -1217,53 +1106,6 @@ DART_EXPORT Dart_Handle Dart_SetGcCallbacks(
1217
1106
}
1218
1107
1219
1108
1220
- class PrologueWeakVisitor : public HandleVisitor {
1221
- public:
1222
- PrologueWeakVisitor (Thread* thread,
1223
- Dart_GcPrologueWeakHandleCallback callback)
1224
- : HandleVisitor(thread),
1225
- callback_ (callback) {
1226
- }
1227
-
1228
-
1229
- void VisitHandle (uword addr) {
1230
- NoSafepointScope no_safepoint;
1231
- FinalizablePersistentHandle* handle =
1232
- reinterpret_cast <FinalizablePersistentHandle*>(addr);
1233
- RawObject* raw_obj = handle->raw ();
1234
- if (raw_obj->IsHeapObject ()) {
1235
- ASSERT (handle->IsPrologueWeakPersistent ());
1236
- ReusableInstanceHandleScope reused_instance_handle (thread ());
1237
- Instance& instance = reused_instance_handle.Handle ();
1238
- instance ^= reinterpret_cast <RawInstance*>(handle->raw ());
1239
- intptr_t num_native_fields = instance.NumNativeFields ();
1240
- intptr_t * native_fields = instance.NativeFieldsDataAddr ();
1241
- if (native_fields != NULL ) {
1242
- callback_ (thread ()->isolate ()->init_callback_data (),
1243
- reinterpret_cast <Dart_WeakPersistentHandle>(addr),
1244
- num_native_fields,
1245
- native_fields);
1246
- }
1247
- }
1248
- }
1249
-
1250
- private:
1251
- Dart_GcPrologueWeakHandleCallback callback_;
1252
-
1253
- DISALLOW_COPY_AND_ASSIGN (PrologueWeakVisitor);
1254
- };
1255
-
1256
-
1257
- DART_EXPORT Dart_Handle Dart_VisitPrologueWeakHandles (
1258
- Dart_GcPrologueWeakHandleCallback callback) {
1259
- Thread* thread = Thread::Current ();
1260
- CHECK_ISOLATE (thread->isolate ());
1261
- PrologueWeakVisitor visitor (thread, callback);
1262
- thread->isolate ()->VisitPrologueWeakPersistentHandles (&visitor);
1263
- return Api::Success ();
1264
- }
1265
-
1266
-
1267
1109
// --- Initialization and Globals ---
1268
1110
1269
1111
DART_EXPORT const char * Dart_VersionString () {
@@ -4976,8 +4818,7 @@ DART_EXPORT void Dart_SetWeakHandleReturnValue(Dart_NativeArguments args,
4976
4818
Isolate* isolate = arguments->thread ()->isolate ();
4977
4819
ASSERT (isolate == Isolate::Current ());
4978
4820
ASSERT (isolate->api_state () != NULL &&
4979
- (isolate->api_state ()->IsValidWeakPersistentHandle (rval) ||
4980
- isolate->api_state ()->IsValidPrologueWeakPersistentHandle (rval)));
4821
+ (isolate->api_state ()->IsValidWeakPersistentHandle (rval)));
4981
4822
#endif
4982
4823
Api::SetWeakHandleReturnValue (arguments, rval);
4983
4824
}
0 commit comments