Hi,

Some 1.9 String methods (like scan, gsub) throw "string modified" 
RuntimeError as they do in 1.8.
Others, though, create a (shared/eager) copy of self and then operate on 
that copy so they won't notify original object being mutated (each_char, 
each_line).
Yet, there's still str_mod_check in those loops.

Q1: is ObjectSpace the only reason for these modification checks when a 
copy is created.
Q2: is there a more general contract what behavior to expect (throw 
error or ignore mutation) for such methods ?

String#each_byte a bit exceptional since it won't blow under GIL even if 
the receiver is modified, though it could screw under parallel threads, 
how should JRuby behave here ?

Marcin