Skip to content
This repository

Fetching latest commit…

Cannot retrieve the latest commit at this time

..
builtin
capi
codegen
drivers
gc
instruments
llvm
missing
super-instruction
test
util
.gitignore
README
accessor_primitives.cpp
agent.cpp
agent.hpp
agent_components.cpp
agent_components.hpp
arguments.cpp
arguments.hpp
auxiliary_threads.cpp
auxiliary_threads.hpp
bug.hpp
bytecode_verification.cpp
bytecode_verification.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
fiber_data.cpp
fiber_data.hpp
fiber_stack.cpp
fiber_stack.hpp
field_offset.hpp
global_cache.cpp
global_cache.hpp
globals.hpp
helpers.cpp
helpers.hpp
inline_cache.cpp
inline_cache.hpp
instructions.cpp
instructions.def
instructions.hpp
instructions_util.hpp
invoke_primitives.cpp
jit_primitives.cpp
kcode.cpp
kcode.hpp
linkedlist.cpp
linkedlist.hpp
lock.cpp
lock.hpp
lookup_data.hpp
marshal.cpp
marshal.hpp
method_primitives.cpp
object_position.hpp
object_types.hpp
object_utils.hpp
object_watch.hpp
objectmemory.cpp
objectmemory.hpp
on_stack.hpp
ontology.cpp
ontology.hpp
oop.cpp
oop.hpp
park.cpp
park.hpp
prelude.hpp
primitives.hpp
raise_reason.hpp
revision.h
shared_state.cpp
shared_state.hpp
signal.cpp
signal.hpp
stack_variables.cpp
stack_variables.hpp
state.cpp
state.hpp
stats.hpp
symboltable.cpp
symboltable.hpp
testable.hpp Fixed profiler.
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
windows_compat.h
world_state.hpp
README
 VM: a C++ VM for running ruby code
------------------------------------
(Could probably use a better name than VM)


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

* LLVM 3.0 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.