Carbone Ruby VM
README
COPYING
THANKS
FEATURES
TODO
ChangeLog
doc/guide.txt
doc/generator.txt
doc/input_language.txt
doc/gc.txt
doc/proposals.txt
20020416_1129

Some Source Guide
-----------------

Important note:

   I did change the name of Matz' "Method" to "BoundMethod", and
   Matz' "UnboundMethod" is called "Method" here.

   What the code that executes inside the VM sees behind the constants
   ::Method and ::UnboundMethod is another question and facile to
   change.


In fact, there are two central files:

   vm/rb-inst.vmg

     This file contains definitions of the VM primitives. You may have
     a look at Anton Ertl's Paper about vmgen and also the vmgen-ex
     ("ex" reads "example") delivered with the said gforth snapshot. 

     vmgen (and some helper scripts in Ruby) produce the files
     in carbone/vm/gen; have a look at carbone/vm/Makefile
 


   comp/generator.c

     The code in this file does the last process of the compiler:
     generating a sequence of instructions.

     The intermediary language that other compilers use as input for
     this step is exactly what you pipe into carbone. (i.e. ./gen)


and then:

   fond/rb.h

     structs for all known classes of objects


   fond/value.h

     VALUE space definitions; immediate v. indirect objects






Basic Processes
---------------


class creation:

   send class def to Class#define_class (carbone/builtins.lg); compile
   class  definition code  to  a method;  execute  this internal  (and
   hidden) method with the new class as self.


method creation:

   send  method  def to  Class#define_method.  This  Method itself  is
   (still) hardcoded in /main.c;  it uses meth_from_list() to create a
   Method object  (which is  unbound!) and then  calls meth_generate()
   which compiles the given code;


proc creation: