Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
..
Failed to load latest commit information.
builtin Fix lookup of respond_to_missing? method and add some specs.
capi Fixed latent SEGVs from malloc() returning NULL.
codegen Moved lib to library.
drivers Rewrote Rubinius::Metrics.
dtrace Macro for cleaning up RBX_DTRACE_CONST char* usage
gc More Metrics cleanup.
include/capi Announces new capi hash functions.
instruments Converted Metrics to only counters.
llvm More Metrics cleanup.
missing Fixed latent SEGVs from malloc() returning NULL.
super-instruction Cleaned up debris from CompiledMethod rename.
test More Metrics cleanup.
util Fixed header file for GCC.
.gitignore Added ignores for generated C-API.
README Update Prerequisites in the vm README
accessor_primitives.cpp Split generated code for primitives.
arguments.cpp Introduce creating a dirty Tuple
arguments.hpp Fix on stack handling for Arguments
bug.hpp Fix a number of warnings exposed by http://clang-analyzer.llvm.org
bytecode_verification.cpp Renamed some vm files to be consistent.
bytecode_verification.hpp Define methods as const where appropriate
call_frame.cpp Use WeakRef to link SingletonClass to object.
call_frame.hpp Fix for compiling on clang 3.4.
compile.sh Compile the kernel, and load it in
compiled_file.cpp Renamed some vm files to be consistent.
compiled_file.hpp Additional header cleanup
config.h Wrap strerror_r to return the error message string
config_parser.cpp Fixed parsing config values with '.'.
config_parser.hpp Additional header cleanup
configuration.hpp Only include language mode macros header when needed.
console.cpp Rewrote Rubinius::Metrics.
console.hpp Removed SYNC_TL and other threading fixes.
detection.hpp Fix 64bit MACROs
dispatch.cpp Additional header cleanup
dispatch.hpp Additional header cleanup
environment.cpp Added config items -Xsystem.log.limit, -Xsystem.log.archives.
environment.hpp Reworked signal handling. Closes #3418.
exception.cpp Emit abort, bug, warn content with logger.
exception.hpp Mark functions as NORETURN that always raise a C++ exception
exception_point.cpp Renamed some vm files to be consistent.
exception_point.hpp Define methods as const where appropriate
executor.hpp Introduce State class as STATE
ffi.cpp Renamed some vm files to be consistent.
ffi_util.cpp Use primitive for signbit
ffi_util.hpp Add handling for varargs in FFI
fiber_data.cpp Fixed latent SEGVs from malloc() returning NULL.
fiber_data.hpp Return of tracking the fiber data explicitly
fiber_stack.cpp Fixed latent SEGVs from malloc() returning NULL.
fiber_stack.hpp Abstract use of tr1 a bit more.
field_offset.hpp Add missed file
global_cache.cpp Renamed some vm files to be consistent.
global_cache.hpp More locking fixes.
globals.hpp Fixed keyword object handling. Fixes #3237.
helpers.cpp Renamed some vm files to be consistent.
helpers.hpp Make autoload thread safe
instructions.cpp Cleaned up some JIT configuration options.
instructions.def Added more goto_if_xxx instructions.
instructions.hpp Use consistent naming in #include directives
instructions_util.hpp Use consistent naming in #include directives
internal_threads.cpp Rewrote Rubinius::Metrics.
internal_threads.hpp Rewrote Rubinius::Metrics.
invoke_primitives.cpp Split generated code for primitives.
jit_primitives.cpp Don't compile JIT primitives when LLVM disabled
linkedlist.cpp const ftw!
linkedlist.hpp Define methods as const where appropriate
lookup_data.hpp Fix #public_send to raise when sending protected methods
machine_code.cpp More Metrics cleanup.
machine_code.hpp Fixed MachineCode::jitted_p predicate name.
marshal.cpp Fixed latent SEGVs from malloc() returning NULL.
marshal.hpp Unmarshal Rational, Complex literals.
method_primitives.cpp Small cleanup of source
metrics.cpp Added a couple more machine metrics.
metrics.hpp More Metrics cleanup.
object_memory.cpp More Metrics cleanup.
object_memory.hpp More Metrics cleanup.
object_position.hpp Fix memory corruption bug, improve immix metadata
object_types.hpp Automate object_type enum and kind_of<>
object_utils.hpp Fix a __GNUC__ check to work with GCC 5
object_watch.hpp Add new Immix GC as the mature GC
on_stack.hpp Use spinlocks over object lock in method table
ontology.cpp Added RUBY_ENGINE_VERSION.
ontology.hpp API cleanup: move new_(class|module) out of VM
oop.cpp More Metrics cleanup.
oop.hpp "this" can not be null
park.cpp More locking fixes.
park.hpp Handle parked threads after fork().
paths.h Added missing paths.h
prelude.hpp Allow for variables in pack to be unused
primitives.hpp Small cleanup of source
raise_reason.hpp Correctly implement Thread#kill
release.h Handle release label and date from git, release tar, or random tar.
shared_state.cpp Rewrote Rubinius::Metrics.
shared_state.hpp Removed Thread#critical=.
signal.cpp Rewrote Rubinius::Metrics.
signal.hpp Removed SYNC_TL and other threading fixes.
signature.h Added missing signature file.
stack_variables.cpp Renamed some vm files to be consistent.
stack_variables.hpp Improve JIT fixup logic for inlined blocks
state.cpp More locking fixes.
state.hpp More locking fixes.
symbol_table.cpp More Metrics cleanup.
symbol_table.hpp More Metrics cleanup.
testable.hpp Fixed profiler.
type_info.cpp Renamed some vm files to be consistent.
type_info.hpp Added missing #include for OS X 10.9 cc.
unwind_info.cpp Ensure we copy the data from the thread data into the current frame
unwind_info.hpp Define methods as const where appropriate
vm.cpp Rewrote Rubinius::Metrics.
vm.hpp More locking fixes.
vm_jit.hpp Explicitly use vm_jit inside state
vm_thread_state.cpp Setup Ruby side object for ThreadState
vm_thread_state.hpp Define methods as const where appropriate
windows_compat.h Added missing dlclose for Windows.
world_state.hpp Rewrote Rubinius::Metrics.

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.