]> git.llucax.com Git - z.facultad/75.00/informe.git/blobdiff - source/gc.rst
Aclarar qué variables son globales en copying collector
[z.facultad/75.00/informe.git] / source / gc.rst
index 1bf5867a85eabd449157e2fb303ccee90b2d2cd2..66c64bdbc9efaf360630d7776e8b63f044000445 100644 (file)
@@ -1263,7 +1263,7 @@ contador de ``h2`` que queda en 0, transformándose en *basura* (ver figura
             };
 
             h1 [ label = "h1\n0|<l> l|<r> r" ];
-            h2 [ label = "h2\n1|<l> l|<r> r" ];
+            h2 [ label = "h2\n0|<l> l|<r> r" ];
             h3 [ label = "h3\n2|<l> l\n*|<r> r" ];
             h4 [ label = "h4\n1|<l> l|<r> r" ];
             h5 [ label = "h5\n2|<l> l|<r> r" ];
@@ -1331,7 +1331,7 @@ de actualizar la referencia ``h3.l`` para que apunte a ``h5`` (ver figura
             };
 
             h1 [ label = "h1\n0|<l> l|<r> r" ];
-            h2 [ label = "h2\n1|<l> l|<r> r" ];
+            h2 [ label = "h2\n0|<l> l|<r> r" ];
             h3 [ label = "h3\n2|<l> l\n*|<r> r" ];
             h4 [ label = "h4\n0|<l> l|<r> r" ];
             h5 [ label = "h5\n2|<l> l|<r> r" ];
@@ -1384,7 +1384,7 @@ de actualizar la referencia ``h3.l`` para que apunte a ``h5`` (ver figura
             };
 
             h1 [ label = "h1\n0|<l> l|<r> r" ];
-            h2 [ label = "h2\n1|<l> l|<r> r" ];
+            h2 [ label = "h2\n0|<l> l|<r> r" ];
             h3 [ label = "h3\n2|<l> l\n*|<r> r" ];
             h4 [ label = "h4\n0|<l> l|<r> r" ];
             h5 [ label = "h5\n1|<l> l|<r> r" ];
@@ -1730,13 +1730,13 @@ recolectores deben estar íntimamente relacionados con el *low level
 allocator*, ya que la organización del *heap* y la forma de asignar memoria es
 parte fundamental de este algoritmo. Se asume que ya hay dos áreas de memoria
 del mismo tamaño destinadas al *Fromspace* y *Tospace*, y la existencia de
-4 variables: ``fromspace`` (que apunta a la base del *Fromspace*), ``tospace``
-(que apunta a la base del *Tospace*), ``spacesize`` (que contiene el tamaño de
-un semi-espacio) y ``free`` (que apunta al lugar del *Fromspace* donde
-comienza la memoria libre). También vale aclarar que este algoritmo soporta
-inherentemente celdas de tamaño variable, por lo que los servicios ``alloc()``
-y ``new()`` [#gccopynew]_ reciben como parámetro el tamaño de la celda
-a asignar::
+4 variables globales: ``fromspace`` (que apunta a la base del *Fromspace*),
+``tospace`` (que apunta a la base del *Tospace*), ``spacesize`` (que contiene
+el tamaño de un semi-espacio) y ``free`` (que apunta al lugar del *Fromspace*
+donde comienza la memoria libre). También vale aclarar que este algoritmo
+soporta inherentemente celdas de tamaño variable, por lo que los servicios
+``alloc()`` y ``new()`` [#gccopynew]_ reciben como parámetro el tamaño de la
+celda a asignar::
 
    function alloc(size) is
       if free + size > fromspace + spacesize
@@ -1764,6 +1764,7 @@ a asignar::
    function copy(cell) is
       if cell.forwarding_address is null
          cell.forwarding_address = free
+         cell.copy_to(free)
          free = free + cell.size
          foreach child in cell
             child = copy(child)