evanphx / rubinius

Rubinius, the Ruby VM

This URL has Read+Write access

commit  be3ef273ef9e65c81494a5237faaaef12bb26fed
tree    bc0849bbbe10cbf6dc6205596d54dfb1c544882e
parent  eb28db0f631349289b0ccdd952c2c75c14adce70
rubinius / vm
name age message
..
file .gitignore Fri Jul 18 19:15:23 -0700 2008 Rewrote vm/Rakefile pretty much from scratch [Ryan Davis]
file README Sun Aug 24 09:59:16 -0700 2008 Removed empty objects.hpp and fixed up includes. [brixen]
file ar.cpp Tue Jul 29 22:27:44 -0700 2008 A few more docs [evanphx]
file ar.hpp Sat Oct 18 17:07:14 -0700 2008 Changed all TODO:s to @todo so that doxygen pic... [rue]
directory builtin/ Loading commit data...
directory codegen/
file compile.sh Fri Aug 01 01:28:39 -0700 2008 Compile the kernel, and load it in Add loading... [evanphx]
file compiled_file.cpp
file compiled_file.hpp Sat Oct 18 15:17:52 -0700 2008 Changed all OBJECT, SYMBOL, FIXNUM, INTEGER to ... [rue]
file config.cpp
file config.hpp
file detection.hpp
directory doc/
directory drivers/
file environment.cpp
file environment.hpp
file event.cpp
file event.hpp
file exception.cpp
file exception.hpp
file executor.hpp
directory external_libs/
file ffi.cpp
file ffi.hpp Sat Oct 18 15:15:47 -0700 2008 Renamed vm/object.hpp to vm/object_utils.hpp. F... [rue]
file ffi_util.cpp
file ffi_util.hpp Fri Sep 12 16:53:04 -0700 2008 converted everything to cpp files to fix -Wno-d... [dgtized]
file flags.hpp Fri Oct 10 18:50:55 -0700 2008 Remove/flag debugging and add compiler hints *... [evanphx]
file gc.cpp
file gc.hpp
file gc_baker.cpp
file gc_baker.hpp
file gc_debug.cpp
file gc_debug.hpp
file gc_marksweep.cpp
file gc_marksweep.hpp
file gc_object_mark.hpp
file gc_root.cpp
file gc_root.hpp
file global_cache.hpp
file globals.hpp
file heap.cpp
file heap.hpp
file instructions.bc
file instructions.rb
file jit_state.h
file linkedlist.cpp Mon Sep 15 14:35:30 -0700 2008 Migrate Roots and Root to a LinkedList We were... [evanphx]
file linkedlist.hpp
file llvm.cpp
file llvm.hpp
directory llvm/
file marshal.cpp
file marshal.hpp
file message.cpp
file message.hpp
file native_libraries.cpp
file native_libraries.hpp
file object_position.hpp
file object_types.hpp Mon Sep 22 15:40:58 -0700 2008 Automate object_type enum and kind_of<> * obje... [evanphx]
file object_utils.hpp
file objectmemory.cpp
file objectmemory.hpp
file ontology.cpp
file oop.cpp
file oop.hpp
file optimize.hpp
directory parser/
file prelude.hpp
file primitives.cpp
file primitives.hpp
file profiler.cpp
file profiler.hpp
file quantum_stack_leap.hpp
file strlcat.cpp
file strlcat.hpp
file strlcpy.cpp
file strlcpy.hpp
directory subtend/
file symboltable.cpp
file symboltable.hpp
directory test/
file type_info.cpp
file type_info.hpp
file virtual.cpp Sat Oct 18 15:15:47 -0700 2008 Renamed vm/object.hpp to vm/object_utils.hpp. F... [rue]
file virtual.hpp Sat Oct 18 15:17:52 -0700 2008 Changed all OBJECT, SYMBOL, FIXNUM, INTEGER to ... [rue]
file vm.cpp
file vm.hpp
file vmmethod.cpp
file vmmethod.hpp
vm/README
 VM: a C++ VM for running ruby code
------------------------------------
(Could probably use a better name than VM)


 Prerequisites
---------------

* LLVM 2.3 or later, http://llvm.org


 Building
----------

You should be in the vm directory for all of these.

`rake build`


 Running
---------

For now, just run the tests.


 Tests and Specs
-----------------

* `rake test` builds and runs all of the tests in test/test_*
* `rake coverage` runs the tests as above and then generates
  a coverage report based on those in coverage/index.html.


 Notes
-------

* Classes defined in builtin/*.hpp are C++ classes mapped directly to ruby
  objects.

* Because of the previous point, NO virtual functions are allowed in these
  classes. C++ inserts a pointer into every object which has virtual functions
  and we must have complete control over the body of an object.

* Similarly, only use single inheritance. This keeps the order of data
  members consistent.