http://codereview.chromium.org/487017/diff/18001/18002
File src/x64/codegen-x64.cc (right):

http://codereview.chromium.org/487017/diff/18001/18002#newcode664
src/x64/codegen-x64.cc:664: Reference ref(this, apply);
I still think you should get rid of this use of Reference.  There is no
reason for it.  Pass the property's object expression to CallApplyLazy
instead of the property itself (you've already established that the key
is the literal string "apply"), and you can write (for Expression*
object):

Load(object);
Handle<String> name = Factory::LookupAsciiSymbol("apply");
frame()->Push(name);
Result answer = frame()->CallLoadIC(RelocInfo::CODE_TARGET);
__ nop();
frame()->Push(&answer);

And you've evaluated the object and looked up its apply property.

No need for Dup and shuffling the extra copy of the object out from
under the result (implicitly via the Reference and GetValue).

I wouldn't worry about optimizing for an inobject property load in this
case, but if you are, you can abstract out the get-named-property code
from Reference::GetValue (it should be lifted out anyway) and call that.

http://codereview.chromium.org/487017/diff/18001/18002#newcode688
src/x64/codegen-x64.cc:688: Result probe = frame_->Pop();
I would just spill the frame here right after the Pop, and leave the
entire rest of the function spilled.

http://codereview.chromium.org/487017/diff/18001/18002#newcode785
src/x64/codegen-x64.cc:785: if (try_lazy) {  // Separate if (try_lazy)
body, without spilled scope.
I would eliminate this second test just to get out of the scope.  Use a
block instead.

http://codereview.chromium.org/487017
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to