X64 Crankshaft: Start using LCallFunction, remove errors in it.
Review URL: http://codereview.chromium.org/6529053 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6826 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
8e1796a4b0
commit
7e38b1bb01
@ -2142,12 +2142,12 @@ void LCodeGen::DoCallNamed(LCallNamed* instr) {
|
||||
|
||||
|
||||
void LCodeGen::DoCallFunction(LCallFunction* instr) {
|
||||
ASSERT(ToRegister(instr->context()).is(rsi));
|
||||
ASSERT(ToRegister(instr->result()).is(rax));
|
||||
|
||||
int arity = instr->arity();
|
||||
CallFunctionStub stub(arity, NOT_IN_LOOP, RECEIVER_MIGHT_BE_VALUE);
|
||||
CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
|
||||
__ movq(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
|
||||
__ Drop(1);
|
||||
}
|
||||
|
||||
|
@ -1219,8 +1219,9 @@ LInstruction* LChunkBuilder::DoCallNew(HCallNew* instr) {
|
||||
|
||||
|
||||
LInstruction* LChunkBuilder::DoCallFunction(HCallFunction* instr) {
|
||||
Abort("Unimplemented: %s", "DoCallFunction");
|
||||
return NULL;
|
||||
argument_count_ -= instr->argument_count();
|
||||
LCallFunction* result = new LCallFunction();
|
||||
return MarkAsCall(DefineFixed(result, rax), instr);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1313,16 +1313,13 @@ class LCallNamed: public LTemplateInstruction<1, 0, 0> {
|
||||
};
|
||||
|
||||
|
||||
class LCallFunction: public LTemplateInstruction<1, 1, 0> {
|
||||
class LCallFunction: public LTemplateInstruction<1, 0, 0> {
|
||||
public:
|
||||
explicit LCallFunction(LOperand* context) {
|
||||
inputs_[0] = context;
|
||||
}
|
||||
LCallFunction() {}
|
||||
|
||||
DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function")
|
||||
DECLARE_HYDROGEN_ACCESSOR(CallFunction)
|
||||
|
||||
LOperand* context() { return inputs_[0]; }
|
||||
int arity() const { return hydrogen()->argument_count() - 2; }
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user