Format zero without "0x" prefix when using "%#x" and "%#X" on 1.9
Add failing spec in -X19 and -X20 for shadowing pattern arguments
Fix pattern arguments when shadowing outer variables. Fixes #1953
Scan mature objects in finalizers list

These objects might refer to young objects that need to be scanned. This
is done by treating these mature finalizer objects are promoted so they
are scanned and young objects are kept alive if needed.
Merge pull request #2261 from txus/fix-shadowing-pattern-arguments

Fix shadowing pattern arguments
Merge pull request #2257 from leocassarani/zero-without-prefix

Format zero without "0x" prefix when using "%#x" and "%#X" on 1.9
Add spec for treating Time marshal data as binary
Check marshalled data length based on bytes

Fixes #2262
Setup correct call frame when going into native extension

We now properly scan objects allocated inside C extensions, so we should
also setup the right call frame here so they get scanned properly.
Use naming conventions the same to other places constructing call frames

We call the existing call frame previous, so we do that here as well, so
when for example doing the check_async, we pass down the new call frame
instead of the old one. This could cause issues, since that call frame
doesn't refer properly to the objects that the current frame has handles
to.

This name change wasn't directly necessary, but doing this makes it
consistent so issues aren't overlooked easily like they were now causing
issues.
Make sure to set call_frame before collection
Extend the 1.9 Sprinter to handle negative numbers in hex, octal, binary

Correctly append ".." in front of negative integers when they are
formatted into hex, octal or binary (%x, %X, %o, %b).

Also remove dead code and pointless predicate methods that simply
delegate to ivars.
Merge pull request #2263 from leocassarani/sprinter-negative-int

Extend the 1.9 Sprinter to handle negative numbers in hex, octal, binary
Pass down CallFrame into methods that might GC

This ensures that we always have the proper call_frame passed down, so
we never see an old call frame when doing a GC. This style also prevents
issues like this for the future.
Use mmap for allocation for young space

mprotect() according to POSIX is only defined on mmap'ed memory, so we
use that so the mprotect() guards have defined behavior.
Fix remaining 1.9 String#% RubySpec by making "%u" an alias of "%d"

Also fix two other failing RubySpecs for Kernel#sprintf that were
affected by the change.
Add RubySpec for Kernel#sprintf and the "%d" format
Fix a race condition when going GC dependent

This is a fun one. The problem is here that a thread goes GC dependent.
This means it's going to access GC managed memory etc. and doesn't allow
GC anymore. For this it checks whether it needs to stop or not. If it
doesn't have to stop, it increments the thread count and continues.

What happens here is that when it checks should_stop, the value is still
false. After this check another thread will set thread_stop and check
how much pending threads there are. This happens before the other thread
increases the count, which leads to the thread wanting to GC thinking
it's ok to GC and the other thread thinking it's ok to continue.

This never really shows up normally, because of the timing of course and
the fact that in the next checkpoint the thread that originally
continued now sees a GC is requested and will halt. So the way this bug
shows itself, is usually the following.

When the thread thinks it can continue it will setup a new call frame
and store some references, for example a local. This however means that
when the GC walks the call frames, it might be too late, so this new
call frame isn't actually scanned by the GC. So this means the bug shows
itself as for example a local variable that isn't properly forwarded by
the GC.

This is also the reason that setting the call frame properly was also a
first suspect (and actually there were cases where that logic was
missing), but the deeper issue was also this race condition causing the
problem to occur less often but not entirely disappear with the changes
to the call frames.

Race conditions... When found they seem so obvious, when looking it
takes days...
Merge pull request #2265 from leocassarani/sprinter-19-ints

Make "%u" an alias of "%d" on 1.9
Use the correct number of arguments for OnStack