If we can perform the runtime call without removing the arguments from the stack, we can simplify this quite a bit. Other than that it LGTM.
http://codereview.chromium.org/12673/diff/401/611 File src/codegen-arm.cc (right): http://codereview.chromium.org/12673/diff/401/611#newcode2438 Line 2438: if (FLAG_debug_info) RecordStatementPosition(node); RecordStatementPosition checks the debug_info flag, so no need to do it here. The rest of the code just calls without the check. http://codereview.chromium.org/12673/diff/401/611#newcode2447 Line 2447: __ CallRuntime(Runtime::kResolvePossiblyDirectEval, args->length() + 1); We should try to avoid copying all the arguments to the heap and then immediately copying them back to the stack. Can we make a runtime call that does not touch the arguments and then patch the function and receiver when we return? http://codereview.chromium.org/12673/diff/401/611#newcode2466 Line 2466: Label args_0, args_1, args_n, after_call; We should be able to just do CallFunctionStub stub(args->length()) __ CallStub(&stub); here. That would certainly be the case if we can do the runtime call without popping the arguments. http://codereview.chromium.org/12673/diff/401/615 File src/codegen-ia32.cc (right): http://codereview.chromium.org/12673/diff/401/615#newcode2839 Line 2839: void CodeGenerator::VisitCallEval(CallEval* node) { See comments to ARM version. http://codereview.chromium.org/12673 --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
