Passing an argument from C++ into JavaScript has 'borrow' semantics rather than ownership semantics.  That is, to keep a reference beyond the function call, you must call .clone().  This is necessary to avoid special-casing non-overridden virtual functions.  (I don't know if this change will stick.  It's possible it will have some problems.)