presidentbeef/brakeman — pull request #287 by presidentbeef (2013-03-07 06:47:15+00:00)
Title: Use custom deep_clone for Sexp

I've been wanting to get rid of `Marshal.dump/load` for a while now. We don't really need full deep clones of Sexps, since the non-Sexp values should not change. But we do need clones of all the Sexps, if only to have correct line numbers.

This change also allows Brakeman to set the line numbers at the same time as cloning the Sexps, which avoids a second recursive trip through.

This approach is slightly faster (~10% in my testing).