Details
-
Bug
-
Resolution: Fixed
-
P1: Critical
-
6.5.0
-
None
-
f9271771c (dev), 4f1b9156a (dev)
Description
Currently, all QObject method calls have to run through QObjectMethod::virtualCall(). virtualCall only accepts JavaScript types. There is no virtualCallWithMetaTypes(), yet. This means that when calling a C++ method from AOT-compiled code with perfectly matching arguments we convert all arguments and return values twice.
So far we can do overload resolution only on JS types and we can only call QQmlV4Function methods with JS types. Everything else, however, should be callable with metaCall formatted arguments. And once the overload resolution is done, we don't have to convert the JS types once again. We can just use the original arguments and call the resulting C++ method.
Attachments
For Gerrit Dashboard: QTBUG-113258 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
474832,11 | QML: Implement QObjectMethod::virtualCallWithMetaTypes | dev | qt/qtdeclarative | Status: MERGED | +2 | 0 |
506366,4 | QQmlPropertyCache: Make space for an extra flag | dev | qt/qtdeclarative | Status: MERGED | +2 | 0 |