addInstruction(ret);
}
-void InstructionSelection::callBuiltinInvalid(IR::Expr *func, IR::ExprList *args, IR::Temp *result)
+void InstructionSelection::callBuiltinInvalid(IR::Name *func, IR::ExprList *args, IR::Temp *result)
{
const int scratchIndex = scratchTempIndex();
Instruction::LoadName load;
- load.name = engine()->newString(*func->asCall()->base->asName()->id);
+ load.name = engine()->newString(*func->id);
load.targetTempIndex = scratchIndex;
addInstruction(load);
virtual void visitCJump(IR::CJump *);
virtual void visitRet(IR::Ret *);
- virtual void callBuiltinInvalid(IR::Expr *func, IR::ExprList *args, IR::Temp *result);
+ virtual void callBuiltinInvalid(IR::Name *func, IR::ExprList *args, IR::Temp *result);
virtual void callBuiltinTypeofMember(IR::Temp *base, const QString &name, IR::Temp *result);
virtual void callBuiltinTypeofSubscript(IR::Temp *base, IR::Temp *index, IR::Temp *result);
virtual void callBuiltinTypeofName(const QString &name, IR::Temp *result);
qSwap(_llvmModule, llvmModule);
}
-void InstructionSelection::callBuiltinInvalid(IR::Expr *func, IR::ExprList *args, IR::Temp *result)
+void InstructionSelection::callBuiltinInvalid(IR::Name *func, IR::ExprList *args, IR::Temp *result)
{
// TODO
assert(!"TODO!");
void buildLLVMModule(IR::Module *module, llvm::Module *llvmModule, llvm::FunctionPassManager *fpm);
public: // methods from InstructionSelection:
- virtual void callBuiltinInvalid(IR::Expr *func, IR::ExprList *args, IR::Temp *result);
+ virtual void callBuiltinInvalid(IR::Name *func, IR::ExprList *args, IR::Temp *result);
virtual void callBuiltinTypeofMember(IR::Temp *base, const QString &name, IR::Temp *result);
virtual void callBuiltinTypeofSubscript(IR::Temp *base, IR::Temp *index, IR::Temp *result);
virtual void callBuiltinTypeofName(const QString &name, IR::Temp *result);
_asm = oldAssembler;
}
-void InstructionSelection::callBuiltinInvalid(IR::Expr *func, IR::ExprList *args, IR::Temp *result)
+void InstructionSelection::callBuiltinInvalid(IR::Name *func, IR::ExprList *args, IR::Temp *result)
{
callRuntimeMethod(result, __qmljs_call_activation_property, func, args);
}
virtual void run(VM::Function *vmFunction, IR::Function *function);
protected:
- virtual void callBuiltinInvalid(IR::Expr *func, IR::ExprList *args, IR::Temp *result);
+ virtual void callBuiltinInvalid(IR::Name *func, IR::ExprList *args, IR::Temp *result);
virtual void callBuiltinTypeofMember(IR::Temp *base, const QString &name, IR::Temp *result);
virtual void callBuiltinTypeofSubscript(IR::Temp *base, IR::Temp *index, IR::Temp *result);
virtual void callBuiltinTypeofName(const QString &name, IR::Temp *result);
switch (baseName->builtin) {
case IR::Name::builtin_invalid:
- callBuiltinInvalid(call->base, call->args, result);
+ callBuiltinInvalid(baseName, call->args, result);
return;
case IR::Name::builtin_typeof: {
virtual void visitExp(IR::Exp *s);
public: // to implement by subclasses:
- virtual void callBuiltinInvalid(IR::Expr *func, IR::ExprList *args, IR::Temp *result) = 0;
+ virtual void callBuiltinInvalid(IR::Name *func, IR::ExprList *args, IR::Temp *result) = 0;
virtual void callBuiltinTypeofMember(IR::Temp *base, const QString &name, IR::Temp *result) = 0;
virtual void callBuiltinTypeofSubscript(IR::Temp *base, IR::Temp *index, IR::Temp *result) = 0;
virtual void callBuiltinTypeofName(const QString &name, IR::Temp *result) = 0;