Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Fetching latest commit…

Cannot retrieve the latest commit at this time

..
Failed to load latest commit information.
builtin
codegen
doc
drivers
external_libs
llvm
parser
subtend
test
.gitignore
README
ar.cpp
ar.hpp
compile.sh
compiled_file.cpp
compiled_file.hpp
config.cpp
config.hpp
detection.hpp
environment.cpp
environment.hpp
event.cpp
event.hpp
exception.cpp
exception.hpp
executor.hpp
ffi.cpp
ffi.hpp
ffi_util.cpp
ffi_util.hpp
flags.hpp
gc.cpp
gc.hpp
gc_baker.cpp
gc_baker.hpp
gc_debug.cpp
gc_debug.hpp
gc_marksweep.cpp
gc_marksweep.hpp
gc_object_mark.hpp
gc_root.cpp
gc_root.hpp
global_cache.hpp
globals.hpp
heap.cpp
heap.hpp
instructions.bc
instructions.rb
jit_state.h
linkedlist.cpp
linkedlist.hpp
llvm.cpp
llvm.hpp
marshal.cpp
marshal.hpp
message.cpp
message.hpp
native_libraries.cpp
native_libraries.hpp
object_position.hpp
object_types.hpp
object_utils.hpp
objectmemory.cpp
objectmemory.hpp
ontology.cpp
oop.cpp
oop.hpp
optimize.hpp
prelude.hpp
primitives.cpp
primitives.hpp
profiler.cpp
profiler.hpp
quantum_stack_leap.hpp
strlcat.cpp
strlcat.hpp
strlcpy.cpp
strlcpy.hpp
symboltable.cpp
symboltable.hpp
type_info.cpp
type_info.hpp
virtual.cpp
virtual.hpp
vm.cpp
vm.hpp
vmmethod.cpp
vmmethod.hpp

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.

Something went wrong with that request. Please try again.