Skip to content

Commit

Permalink
Regen Spanish doc site for Packager and Writer stages of the compiler
Browse files Browse the repository at this point in the history
  • Loading branch information
Josep M. Bach committed Mar 26, 2012
1 parent 1db96dc commit b4ab27c
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 36 deletions.
2 changes: 1 addition & 1 deletion web/_site/doc/en/bytecode-compiler/packager/index.html
Expand Up @@ -213,7 +213,7 @@ <h2 id="customization">Customization</h2>
CompiledMethod with a group of variables. However, you could also use CompiledMethod with a group of variables. However, you could also use
the packager to populate another object with the same interface. the packager to populate another object with the same interface.
However, it would not necessarily be useful on its own, without However, it would not necessarily be useful on its own, without
additional customizations later on</p> additional customizations later on.</p>




</div> </div>
Expand Down
80 changes: 61 additions & 19 deletions web/_site/doc/es/bytecode-compiler/packager/index.html
Expand Up @@ -147,28 +147,70 @@
<h2>Etapa de Empaquetación</h2> <h2>Etapa de Empaquetación</h2>




<div class="review">
<p>This page was machine translated. Please help us improve it.</p>

<p>
See <a href="/doc/es/how-to/translate-documentation">How-To - Translate Documentation</a>
</p>
</div>







<p>Una vez que el generador ha sido correctamente codificado en la etapa de
<div class="review"> Codificación, Rubinius empaqueta el bytecode creando un nuevo método compilado
<p>This topic has missing or partial documentation. Please help us improve it.</p> (un objeto CompiledMethod) con ciertos atributos.</p>


<p> <p>Estos atributos están expuestos en cualquier CompiledMethod. Es posible
See <a href="/doc/es/how-to/write-documentation">How-To - Write Documentation</a> extraer un CompiledMethod a partir de un método de Ruby llamando <code>executable</code>
</p> sobre el método.</p>
</div>

<ul>

<li><em>iseq</em>: un objeto Tuple con la secuencia de instrucciones</li>

<li><em>literals</em>: un objeto Tuple con los literales utilizados en el método. Los

literales se utilizan internamente por Rubinius para valores como Strings,
y las instrucciones que los manipulan son <code>push_literal</code> y <code>set_literal</code>.</li>
<li><em>lines</em>: un Array que contiene el primer puntero de instrucción para cada
línea representada en el bytecode</li>
<li><em>required_args</em>: el número de argumentos requerido por el método</li>
<li><em>total_args</em>: el número total de argumentos, incluyendo argumentos
opcionales exceptuando <code>*args</code></li>
<li><em>splat</em>: la posición del argumento splat, si existe</li>
<li><em>local_count</em>: el número de variables locales, incluyendo parámetros</li>
<li><em>local_names</em>: un objeto Tuple con una lista de nombres de todas las
variables locales. Los primeros nombres serán los argumentos requeridos,
opcionales, splat y de bloque, en ese orden exactamente.</li>
<li><em>file</em> el nombre del fichero que se utilizará en los stack traces y otra
información de debugging.</li>
<li><em>name</em>: el nombre del método</li>
<li><em>primitive</em>: el nombre de la primitiva asociada a este método, si es que hay</li>
<li>metadatos: es posible almacenar metadatos adicionales en un método
compilado. Éste tiene un metadato llamado <code>for_block</code> con el valor <code>true</code> si
el generador original fue creado para un bloque.</li>
</ul>

<p>La etapa de Empaquetación se encarga también de que cualquier generador hijo
(como por ejemplo los generadores para bloques o métodos) también sean
convertidos en métodos compilados. Estos métodos compilados hijos se incluyen
en la tupla de literales del método compilado padre.</p>

<p>Después de que el Generator ha terminado de empaquetarse a sí mismo como un
CompiledMethod, invoca la etapa de Escritura, con el CompiledMethod como
entrada.</p>

<h2 id="ficheros-mencionados">Ficheros mencionados</h2>

<ul>
<li><em>kernel/bootstrap/compiled_method.rb</em>: la implementación básica de
CompiledMethod, básicamente compuesta de diversas primitivas</li>
<li><em>kernel/common/compiled_method.rb</em>: una implementación más robusta de
CompiledMethod, una combinación de métodos primitivos y métodos escritos en
Ruby</li>
<li><em>vm/builtin/compiledmethod.cpp</em>: la implementación en C++ de las primitivas
de un CompiledMethod</li>
<li><em>lib/compiler/generator.rb</em>: La implementación del método <code>package</code>, el cual
popula el CompiledMethod con información sobre el objeto Generator.</li>
</ul>

<h2 id="personalizacin">Personalización</h2>

<p>En general, el método <code>package</code> está diseñado para popular el CompiledMethod
con un grupo de variables. Sin embargo, también se podría utilizar el
empaquetador para popular otro objeto con la misma interfaz. A pesar de todo,
esto podría no ser útil en sí mismo sin otras personalizaciones más adelante.</p>




</div> </div>
Expand Down
47 changes: 31 additions & 16 deletions web/_site/doc/es/bytecode-compiler/writer/index.html
Expand Up @@ -147,28 +147,43 @@
<h2>Etapa de Escritura</h2> <h2>Etapa de Escritura</h2>




<div class="review">
<p>This page was machine translated. Please help us improve it.</p>

<p>
See <a href="/doc/es/how-to/translate-documentation">How-To - Translate Documentation</a>
</p>
</div>







<p>Una vez el Packager ha creado el CompiledMethod, Rubinius escribirá el método
<div class="review"> en un fichero para consumo futuro. Por ejemplo, después de que un fichero es
<p>This topic has missing or partial documentation. Please help us improve it.</p> requerido por primera vez, si se requiere más adelante cargará el fichero del
disco, en vez de cargar el código Ruby, analizarlo y compilarlo de nuevo.</p>


<p> <p>Esta etapa es extremadamente simple. Toma el nombre del fichero original, le
See <a href="/doc/es/how-to/write-documentation">How-To - Write Documentation</a> añade una <code>c</code> al final, y llama a Rubinius::CompiledFile.dump con el
</p> CompiledMethod de la etapa anterior y el nuevo nombre de fichero donde
</div> escribir.</p>



<p>Después de escribir el fichero en disco, devuelve la entrada (el
CompiledMethod), el cual pasa a ser el valor de retorno de todo el proceso de
compilación.</p>



<h2 id="ficheros-mencionados">Ficheros mencionados</h2>

<ul>
<li><em>lib/compiler/compiled_file.rb</em>: la implementación de CompiledFile.
<code>CompiledFile.dump</code> es el método llamado para realizar toda la escritura.</li>
</ul>

<h2 id="personalizacin">Personalización</h2>

<p>Esta etapa es opcional, y sólo se usa cuando compilamos un fichero. En el caso
de compilar un String, como con eval, nos saltamos esta etapa. En ese caso, el
compilador se detiene en la etapa de Empaquetación, y devuelve el
CompiledMethod de esa etapa como valor de retorno del compilador.</p>

<p>Dada la arquitectura del compilador de Rubinius, es muy sencillo añadir etapas
adicionales al final del proceso. Siempre y cuando cada una de dichas etapas
devuelva el mismo CompiledMethod (o uno diferente), todo irá como se espera.</p>

<p>Para más información, léase <a href="/doc/en/bytecode-compiler/customization/">Personalizando las
etapas</a>.</p>




</div> </div>
Expand Down

0 comments on commit b4ab27c

Please sign in to comment.