marshal.c: use rb_gc_force_recycle for GC-safety

Putting rb_gc_force_recycle at the end of the function has a nice
side-effect of keeping wrapper visible to GC until the moment of
recycle, preventing GC from prematurely killing live objects.
volatile is a common source of compiler bugs/differences, avoid it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44994 b2dd03c8-39d4-4d8f-98ff-823fe69b080e