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
-~----------~----~----~----~------~----~------~--~---

Reply via email to