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
