Apply the VM-to-State transition to the JIT code
Since the following commit, many C++ functions are changed to take a pointer to a State, not a pointer to a VM. But the LLVM code hasn't catch up the change. 35a49f3 Introduce State class as STATE This is very confusing. Just update it. The reason Rubinius doesn't currently break in this situation is that the LLVM IR type system is completely independent of the actual C++ type system.
Fix infinite loop when parsing RBXOPT
Since the following commit, BlockEnvironment::under_call_frame's last argument called "index" isn't used in the function definition. Just remove the unused argument. e838319 Fix JIT bug wrt blocks as methods
Also, don't assume a field order for timespec. Picoseconds case still fails due to lack of support for Rational subseconds.
Also, implement %:z and %::z strftime formats, by hand porting the additions from MRI's strftime. The offset calculation done by strftime for local times was pulled out to Time::utc_offset() and is now used by Time#utc_offset. Since it is a mess of #ifdefs, we may want to instead implement the previous Ruby definition of Time#utc_offset in C. This appears to be what MRI does. Rational offsets are not yet supported.
CALL_FLAG_CONCAT's definition is duplicated under both Generator and InstructionSet. Generator's one is hard-coded, InstructionSet's one is auto- generated. Use InstructionSet::CALL_FLAG_CONCAT and remove Generator::CALL_FLAG_CONCAT. The commit (1) introduced InstructionSet::CALL_FLAG_CONCAT and replaced Generator::CALL_FLAG_CONCAT with it. But the commit (2) removed the use of InstructionSet::CALL_FLAG_CONCAT and the commit (3) incorrectly used Generator::CALL_FLAG_CONCAT. (1) 9b60cfd Rework VM instruction parsing and generation. (2) 55175ce Requiem for an era: o/~ oh compiler, your sexp expressions... o/~ (3) 911f390 Moved lib/compiler-ng to lib/compiler. Easily confirmed by following commands: $ git log -S::CALL_FLAG_CONCAT --stat $ git log -SCALL_FLAG_CONCAT --stat -p ./lib/ ./kernel Well, this is the power of git. :p
This constant is not used since the following commit: 17d0fa7 Add allow_private instruction to allow private sends