Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Fix Ruby 2.0+ behavior for respond_to? on protected methods.

From Ruby 2.0 forward, respond_to? returns false for protected methods.
Resolves #3328
latest commit 55e4848320
Joe Eli McIlvain jemc authored
..
Failed to load latest commit information.
builtin Fix Ruby 2.0+ behavior for respond_to? on protected methods.
capi Fixed Console plumbing.
codegen Moved lib to library.
drivers Reworked MetricsData location.
dtrace Macro for cleaning up RBX_DTRACE_CONST char* usage
gc Fixed Console plumbing.
include/capi Expand rb_data_type_struct to match MRI.
instruments Use WeakRef to link SingletonClass to object.
llvm Moved JIT OnStack out of loop.
missing Added missing strnlen. Fixes #2616.
super-instruction Cleaned up debris from CompiledMethod rename.
test Fixed Console plumbing.
util Extend atomic::poll.
.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 Cleanup unused code and invalid comments
config_parser.hpp Additional header cleanup
configuration.hpp Only include language mode macros header when needed.
console.cpp Fixed Console plumbing.
console.hpp Renamed AuxiliaryThread to InternalThread.
detection.hpp Fix 64bit MACROs
dispatch.cpp Additional header cleanup
dispatch.hpp Additional header cleanup
environment.cpp Renamed Handlers to Threads.
environment.hpp Renamed Handlers to Threads.
exception.cpp Fix VMException copy constructor
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 Return of tracking the fiber data explicitly
fiber_data.hpp Return of tracking the fiber data explicitly
fiber_stack.cpp Free trampoline from fiber stacks when allocated
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 Renamed some vm files to be consistent.
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 Set up all internal threads for C-API code.
internal_threads.hpp Renamed AuxiliaryThread to InternalThread.
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
lock.cpp Introduce State class as STATE
lock.hpp Handle parked threads after fork().
lookup_data.hpp Fix #public_send to raise when sending protected methods
machine_code.cpp Small keyword tweak.
machine_code.hpp Fixed MachineCode::jitted_p predicate name.
marshal.cpp Fixed keyword object handling. Fixes #3237.
marshal.hpp Unmarshal Rational, Complex literals.
method_primitives.cpp Small cleanup of source
metrics.cpp Create Integers for Metrics values. Related to #3316.
metrics.hpp Renamed AuxiliaryThread to InternalThread.
object_memory.cpp Renamed Handlers to Threads.
object_memory.hpp Renamed Handlers to Threads.
object_position.hpp Fix memory corruption bug, improve immix metadata
object_types.hpp Automate object_type enum and kind_of<>
object_utils.hpp Clang reports as being GCC 4.2 compatible, but has the 4.3 behavior
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 Unlock objects after fork() without locking.
oop.hpp Unlock objects after fork() without locking.
park.cpp Handle parked threads after fork().
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 Renamed Handlers to Threads.
shared_state.hpp Renamed Handlers to Threads.
signal.cpp Renamed Handlers to Threads.
signal.hpp Renamed Handlers to Threads.
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 Fix raising exception into root fiber when killing thread
state.hpp Handle parked threads after fork().
symbol_table.cpp Remove outdated special operators
symbol_table.hpp Renamed some vm files to be consistent.
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 Fixed Console plumbing.
vm.hpp Deref Thread from VM when function exits.
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 Major refactor of AuxiliaryThread.

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.