Selaa lähdekoodia

fix: gc冻结使用了comparVarList函数

SongZihuan 4 vuotta sitten
vanhempi
sitoutus
d8643d8c29
2 muutettua tiedostoa jossa 2 lisäystä ja 8 poistoa
  1. 1 7
      gc/freeze.c
  2. 1 1
      src/var.c

+ 1 - 7
gc/freeze.c

@@ -14,13 +14,7 @@ void gc_freezeHashTable(HashTable *ht, bool is_lock){
 
 void iterFreezeVarList(VarList *freeze, VarList *base, bool is_lock){
     for (PASS; freeze != NULL; freeze = freeze->next){
-        bool need_freeze = true;
-        for (VarList *tmp = base; tmp != NULL;tmp = tmp->next)
-            if (tmp->hashtable == freeze->hashtable){
-                need_freeze = false;
-                break;
-            }
-        if (need_freeze)
+        if (!comparVarList(freeze, base))
             gc_freezeHashTable(freeze->hashtable, is_lock);
     }
 }

+ 1 - 1
src/var.c

@@ -196,7 +196,7 @@ VarList *connectVarListBack(VarList *base, VarList *back){
     return base;
 }
 
-bool comparVarList(VarList *dest, VarList *src) {  // TODO-szh GC使用这个函数
+bool comparVarList(VarList *dest, VarList *src) {
     for (PASS; src != NULL; src = src->next)
         if (src->hashtable == dest->hashtable)
             return true;