diff options
author | Erik Verbruggen <erik.verbruggen@qt.io> | 2017-06-16 15:24:28 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-06-20 10:03:37 +0000 |
commit | 24969e19b18ea68019ae66c99982f04b2d05a9d1 (patch) | |
tree | a4939d916d301b86659d82b30e63d8b1f184ff6e /src/qml/jit/qv4isel_masm.cpp | |
parent | b829693623f886975a3e79c2f6804a7564449977 (diff) |
Support object literals
Change-Id: I7fc4565044caf23bec239561be4fbc020ccc2468
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/jit/qv4isel_masm.cpp')
-rw-r--r-- | src/qml/jit/qv4isel_masm.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/qml/jit/qv4isel_masm.cpp b/src/qml/jit/qv4isel_masm.cpp index 7784eb364e..e1974f5776 100644 --- a/src/qml/jit/qv4isel_masm.cpp +++ b/src/qml/jit/qv4isel_masm.cpp @@ -339,15 +339,16 @@ void InstructionSelection<JITAssembler>::callBuiltinDefineObjectLiteral(IR::Expr { Q_ASSERT(result); + QVector<Compiler::JSUnitGenerator::MemberInfo> members; int argc = 0; - const int classId = registerJSClass(keyValuePairCount, keyValuePairs); - IR::ExprList *it = keyValuePairs; for (int i = 0; i < keyValuePairCount; ++i, it = it->next) { + QString key = *it->expr->asName()->id; it = it->next; bool isData = it->expr->asConst()->value; + members.append({ key, !isData }); it = it->next; _as->copyValue(_as->stackLayout().argumentAddressForCall(argc++), it->expr, WriteBarrier::NoBarrier); @@ -358,6 +359,8 @@ void InstructionSelection<JITAssembler>::callBuiltinDefineObjectLiteral(IR::Expr } } + const int classId = registerJSClass(members); + it = arrayEntries; uint arrayValueCount = 0; while (it) { |