Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Fetching latest commit…

Cannot retrieve the latest commit at this time

..
builtin
capi
codegen
drivers
external_libs
gc
instruments
llvm
super-instruction
test
util
.gitignore
README
agent.cpp
agent.hpp
agent_components.cpp
agent_components.hpp
ar.cpp
ar.hpp
arguments.cpp
arguments.hpp
async_message.hpp
call_frame.cpp
call_frame.hpp
call_frame_list.hpp
compile.sh
compiled_file.cpp
compiled_file.hpp
config.h
config_parser.cpp
config_parser.hpp
configuration.hpp
detection.hpp
dispatch.cpp
dispatch.hpp
environment.cpp
environment.hpp
exception.cpp
exception.hpp
exception_point.cpp
exception_point.hpp
executor.hpp
ffi.cpp
ffi.hpp
ffi_util.cpp
ffi_util.hpp
field_offset.hpp
flags.hpp
global_cache.cpp
global_cache.hpp
global_lock.cpp
global_lock.hpp
globals.hpp
helpers.cpp
helpers.hpp
inline_cache.cpp
inline_cache.hpp
instructions.cpp
instructions.def
instructions.hpp
instructions_util.hpp
jit_state.h
kcode.cpp
kcode.hpp
linkedlist.cpp
linkedlist.hpp
lookup_data.hpp
maps.hpp
marshal.cpp
marshal.hpp
native_libraries.cpp
native_libraries.hpp
native_thread.cpp
native_thread.hpp
object_position.hpp
object_types.hpp
object_utils.hpp
object_watch.hpp
objectmemory.cpp
objectmemory.hpp
on_stack.hpp
ontology.cpp
oop.cpp
oop.hpp
prelude.hpp
primitives.cpp
primitives.hpp
raise_reason.hpp
shared_state.cpp
shared_state.hpp
signal.cpp
signal.hpp
stack_variables.cpp
stack_variables.hpp
stats.hpp
symboltable.cpp
symboltable.hpp
testable.hpp
thread_state.cpp
thread_state.hpp
type_info.cpp
type_info.hpp
unwind_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.