Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
You can very well compile a chunk of Ruby code to the bytecode using the interpreter (of course, only the Ruby MRI 1.9 will work, as it is the only implementation which uses the YARV virtual machine), and get its Ruby-ish representation:
This is exactly what HotRuby does: it uses MRI as a parser and AST-to-YARV translator, and then just executes the code in JavaScript.
You can get the bytecode for an existing method with the
RubyVM::InstructionSequence.disasmmethod. It expects aProcas an argument, so first convert your method to a block by usingobject.method(:name).to_proc.I’m not quite sure what do you mean by ‘post-mortem’. In an exception handler? After Ruby has crashed with SEGV? The latter is hardly possible due to inability of damaged interpreter to run any Ruby code successfully. You’ll need to make a C extension for that, and do quite a lot of dirty hacks. Using this trick in the exception handler is perfectly possible, through.