http://codereview.chromium.org/492002/diff/24/27 File src/fast-codegen.cc (right):
http://codereview.chromium.org/492002/diff/24/27#newcode499 src/fast-codegen.cc:499: // the fially block through finally_entry label. Fixed http://codereview.chromium.org/492002/diff/24/27#newcode504 src/fast-codegen.cc:504: // and a value in the result register (rax/eax/r0), both of which must Done http://codereview.chromium.org/492002/diff/24/27#newcode525 src/fast-codegen.cc:525: Visit(stmt->finally_block()); It should be ok (you can't label the blocks, so there is no reason to visit the blocks themselves). Will change. http://codereview.chromium.org/492002/diff/24/27#newcode526 src/fast-codegen.cc:526: ReturnFromFinallyBlock(); // Performs a return to the calling code. Fixed. (The point was that it actually did a return at the end, so it was named to show that control didn't fall through. I'll just use a comment). http://codereview.chromium.org/492002/diff/24/27#newcode532 src/fast-codegen.cc:532: __ PushTryHandler(IN_JAVASCRIPT, TRY_FINALLY_HANDLER); Done http://codereview.chromium.org/492002/diff/24/29 File src/ia32/fast-codegen-ia32.cc (right): http://codereview.chromium.org/492002/diff/24/29#newcode1642 src/ia32/fast-codegen-ia32.cc:1642: __ mov(edx, Operand(esp, 0)); Good idea. Done. http://codereview.chromium.org/492002/diff/24/29#newcode1649 src/ia32/fast-codegen-ia32.cc:1649: __ push(eax); Indeed. Half an abstractions is ... useless. http://codereview.chromium.org/492002/diff/24/29#newcode1657 src/ia32/fast-codegen-ia32.cc:1657: __ mov(edx, Operand(esp, 0)); The CPU has a call/return stack that expects calls/returns to be properly nested. If they aren't, the stack gets out of sync, and return becomes slower. I don't know if messing with stack values break it anyway (I'm guess it won't, which is why I cook and uncook without popping, so that the next expected return value is never outside the stack). We definitely get out of sync with the try-handler chain management, so maybe it's not worth keeping it here. I'll keep it for now, and try to do a little research on whether we break it, and how much it matters. http://codereview.chromium.org/492002 -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
