Skip to content
This repository

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
arguments.cpp
arguments.hpp
async_message.hpp
call_frame.cpp
call_frame.hpp
call_frame_list.hpp
compile.sh Compile the kernel, and load it in
compiled_file.cpp
compiled_file.hpp
config.h
config_parser.cpp
config_parser.hpp
configuration.hpp
detection.hpp Revert "Disable fibers on >= 10.7. Fixes #815"
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 Add missed file
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_thread.cpp
native_thread.hpp
object_position.hpp Fix memory corruption bug, improve immix metadata
object_types.hpp Automate object_type enum and kind_of<>
object_utils.hpp
object_watch.hpp Add new Immix GC as the mature GC
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 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
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.