diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2012-06-06 15:58:21 +0200 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2012-06-06 15:58:21 +0200 |
commit | 80188db9d87bc4f31826b8652f8e9a39cc29d5d5 (patch) | |
tree | 0e9df86c0f3eb23ecaf9cafc1ba6ded313fccda0 /qv4isel_llvm.cpp | |
parent | cee0095e2062285dc1702578fad2ecbe3050b0be (diff) |
Generate LLVM code for the `this-expression'.
Diffstat (limited to 'qv4isel_llvm.cpp')
-rw-r--r-- | qv4isel_llvm.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/qv4isel_llvm.cpp b/qv4isel_llvm.cpp index d7829bf034..0f882e0a3b 100644 --- a/qv4isel_llvm.cpp +++ b/qv4isel_llvm.cpp @@ -356,9 +356,15 @@ void LLVMInstructionSelection::visitString(IR::String *e) void LLVMInstructionSelection::visitName(IR::Name *e) { llvm::Value *result = newLLVMTemp(_valueTy); - llvm::Value *name = getIdentifier(*e->id); - CreateCall3(_llvmModule->getFunction("__qmljs_get_activation_property"), - _llvmFunction->arg_begin(), result, name); + + if (e->id == QStringLiteral("this")) { + CreateCall2(_llvmModule->getFunction("__qmljs_llvm_get_this_object"), + _llvmFunction->arg_begin(), result); + } else { + llvm::Value *name = getIdentifier(*e->id); + CreateCall3(_llvmModule->getFunction("__qmljs_get_activation_property"), + _llvmFunction->arg_begin(), result, name); + } _llvmValue = CreateLoad(result); } |