LGTM. There's one more requirement to making an array copy-on-write that should be documented somewhere: its elements must be primitive. AFAIU it is true for regexp matches which contain either strings or undefined.
http://codereview.chromium.org/3158020/diff/10018/11003 File src/arm/full-codegen-arm.cc (right): http://codereview.chromium.org/3158020/diff/10018/11003#newcode2539 src/arm/full-codegen-arm.cc:2539: void FullCodeGenerator::EmitRegExpCloneResult(ZoneList<Expression*>* args) { Can this be moved to the architecture independent full-codegen? http://codereview.chromium.org/3158020/diff/10018/11003#newcode2542 src/arm/full-codegen-arm.cc:2542: __ CallRuntime(Runtime::kRegExpConstructResult, 1); kRegExpConstructResult -> kRegExpCloneResult. http://codereview.chromium.org/3158020/diff/10018/11008 File src/ia32/codegen-ia32.cc (right): http://codereview.chromium.org/3158020/diff/10018/11008#newcode7407 src/ia32/codegen-ia32.cc:7407: if (FLAG_debug_code) { Should be checked in arm and x64 versions as well. http://codereview.chromium.org/3158020/diff/10018/11012 File src/runtime.cc (right): http://codereview.chromium.org/3158020/diff/10018/11012#newcode1407 src/runtime.cc:1407: // No write barrier is necessary when writing old-space pointer. I don't think we need to have this comment or assert for map assignment. http://codereview.chromium.org/3158020/diff/10018/11014 File src/x64/codegen-x64.cc (right): http://codereview.chromium.org/3158020/diff/10018/11014#newcode4834 src/x64/codegen-x64.cc:4834: __ push(save_register); push -> pop. http://codereview.chromium.org/3158020/show -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
