4#ifndef QQMLJSCODEGENERATOR_P_H
5#define QQMLJSCODEGENERATOR_P_H
17#include <private/qqmljscompiler_p.h>
18#include <private/qqmljstypepropagator_p.h>
19#include <private/qqmljstyperesolver_p.h>
21#include <private/qv4bytecodehandler_p.h>
22#include <private/qv4codegen_p.h>
24#include <QtCore/qstring.h>
60 const QString accumulatorVariableIn;
61 const QString accumulatorVariableOut;
209 m_includes.append(include);
221 if (m_typeResolver->equals(to.
storedType(), contained)
224 || m_typeResolver->equals(from, contained)) {
233 return convertContained(m_typeResolver->globalType(from), to,
variable);
246 void reject(
const QString &thing);
253 void generateSetInstructionPointer();
254 void generateLookup(
const QString &lookup,
const QString &initialization,
260 void generateEnumLookup(
int index);
264 QString consumedAccumulatorVariableIn()
const;
266 QString changedRegisterVariable()
const;
268 bool shouldMoveRegister(
int index)
const;
276 void generateExceptionCheck();
277 void generateEqualityOperation(
int lhs,
const QString &function,
bool invert);
278 void generateCompareOperation(
int lhs,
const QString &cppOperator);
279 void generateArithmeticOperation(
int lhs,
const QString &cppOperator);
280 void generateShiftOperation(
int lhs,
const QString &cppOperator);
281 void generateArithmeticOperation(
283 void generateArithmeticConstOperation(
int lhsConst,
const QString &cppOperator);
284 void generateJumpCodeWithTypeConversions(
int relativeOffset);
285 void generateUnaryOperation(
const QString &cppOperator);
286 void generateInPlaceOperation(
const QString &cppOperator);
287 void generateMoveOutVar(
const QString &outVar);
288 void generateTypeLookup(
int index);
293 QString eqIntExpression(
int lhsConst);
297 bool inlineStringMethod(
const QString &
name,
int base,
int argc,
int argv);
298 bool inlineTranslateMethod(
const QString &
name,
int argc,
int argv);
299 bool inlineMathMethod(
const QString &
name,
int argc,
int argv);
300 bool inlineConsoleMethod(
const QString &
name,
int argc,
int argv);
301 bool inlineArrayMethod(
const QString &
name,
int base,
int argc,
int argv);
306 return m_typeResolver->jsGlobalObject()->property(u
"Math"_s).type();
312 return m_typeResolver->jsGlobalObject()->property(u
"console"_s).type();
315 QString resolveValueTypeContentPointer(
321 bool generateContentPointerCheck(
329 const InstructionAnnotations *m_annotations =
nullptr;
331 bool m_skipUntilNextLabel =
false;
QString conversion(const QQmlJSScope::ConstPtr &from, const QQmlJSRegisterContent &to, const QString &variable)
void addInclude(const QString &include)
~QQmlJSCodeGenerator()=default
void generate_YieldStar() override
void generate_CallValue(int, int, int) override
void generate_LoadRuntimeString(int) override
void generate_GetOptionalLookup(int, int) override
void generate_LoadImport(int) override
void generate_IteratorNextForYieldStar(int, int) override
void generate_LoadName(int) override
void generate_Yield() override
void generate_DeleteName(int) override
void generate_DeleteProperty(int, int) override
void generate_CreateUnmappedArgumentsObject() override
void generate_IteratorClose(int) override
void generate_CmpEqNull() override
void generate_BitAndConst(int) override
void generate_CmpEq(int) override
void generate_UnwindToLabel(int, int) override
void generate_MoveRegExp(int, int) override
void generate_PopScriptContext() override
void generate_UCompl() override
void generate_LoadFalse() override
void generate_CallGlobalLookup(int, int, int) override
void generate_UShrConst(int) override
void generate_CmpStrictNotEqual(int) override
void generate_CallPossiblyDirectEval(int, int) override
void generate_CmpLt(int) override
void generate_LoadQmlContextPropertyLookup(int) override
void generate_CloneBlockContext() override
void generate_UNot() override
void generate_Shl(int) override
void generate_LoadZero() override
void generate_Increment() override
void generate_CheckException() override
void generate_SetUnwindHandler(int) override
void generate_InitializeBlockDeadTemporalZone(int, int) override
void generate_CreateClass(int, int, int) override
void generate_LoadClosure(int) override
void generate_TypeofValue() override
void generate_ConstructWithSpread(int, int, int) override
void generate_JumpTrue(int) override
void generate_StoreProperty(int, int) override
void generate_JumpFalse(int) override
void generate_IteratorNext(int, int) override
void generate_UnwindDispatch() override
void generate_As(int) override
void generate_SetLookup(int, int) override
void generate_LoadTrue() override
void generate_ShlConst(int) override
void generate_CallWithSpread(int, int, int, int) override
void generate_LoadProperty(int) override
void generate_BitXor(int) override
void generate_StoreReg(int) override
void generate_LoadUndefined() override
void generate_Sub(int) override
void generate_LoadScopedLocal(int, int) override
void generate_StoreNameStrict(int) override
void generate_CreateCallContext() override
void generate_CmpGe(int) override
void generate_LoadConst(int) override
void generate_ToObject() override
void generate_SetException() override
void generate_CmpLe(int) override
void generate_Resume(int) override
void generate_StoreNameSloppy(int) override
void generate_Construct(int, int, int) override
void generate_Jump(int) override
void generate_CreateRestParameter(int) override
void generate_LoadReg(int) override
void generate_LoadGlobalLookup(int) override
void generate_StoreElement(int, int) override
void generate_Add(int) override
void generate_UMinus() override
void generate_CallName(int, int, int) override
void generate_Decrement() override
void generate_PushScriptContext(int) override
void generate_GetException() override
void generate_PushBlockContext(int) override
void generate_LoadInt(int) override
void generate_LoadElement(int) override
void generate_CallQmlContextPropertyLookup(int, int, int) override
void generate_Shr(int) override
void generate_PushWithContext() override
void generate_TypeofName(int) override
void generate_CallWithReceiver(int, int, int, int) override
void generate_BitXorConst(int) override
void generate_LoadLocal(int) override
void generate_CmpNeInt(int) override
void generate_MoveReg(int, int) override
void generate_Debug() override
void generate_StoreLocal(int) override
void generate_CmpNe(int) override
void generate_GetIterator(int) override
void generate_CmpGt(int) override
void generate_UPlus() override
void generate_CmpNeNull() override
void generate_DestructureRestElement() override
void generate_GetTemplateObject(int) override
void generate_CallProperty(int, int, int, int) override
void generate_StoreSuperProperty(int) override
void generate_BitOrConst(int) override
void generate_Exp(int) override
void generate_UShr(int) override
void generate_ShrConst(int) override
void generate_StoreScopedLocal(int, int) override
void generate_GetLookup(int) override
void generate_DefineArray(int, int) override
void generate_LoadSuperProperty(int) override
void generate_JumpNotUndefined(int) override
void generate_CmpStrictEqual(int) override
void generate_CreateMappedArgumentsObject() override
void generate_BitOr(int) override
void generate_Ret() override
void generate_PushCatchContext(int, int) override
void generate_MoveConst(int, int) override
void generate_ThrowException() override
void generate_TailCall(int, int, int, int) override
void generate_DeadTemporalZoneCheck(int) override
void generate_ThrowOnNullOrUndefined() override
void generate_JumpNoException(int) override
void generate_PopContext() override
void generate_LoadNull() override
void generate_BitAnd(int) override
void generate_ConvertThisToObject() override
void generate_Mod(int) override
void generate_CmpIn(int) override
void generate_CmpInstanceOf(int) override
void generate_CmpEqInt(int) override
void generate_Mul(int) override
void generate_DefineObjectLiteral(int, int, int) override
void generate_CallPropertyLookup(int, int, int, int) override
void generate_DeclareVar(int, int) override
void generate_Div(int) override
void generate_LoadOptionalProperty(int, int) override
void generate_LoadSuperConstructor() override
QQmlJSScope::ConstPtr storedType() const
bool isReferenceType() const
\macro QT_RESTRICTED_CAST_FROM_ASCII
bool isEmpty() const
Returns true if the string has no characters; otherwise returns false.
virtual void endInstruction(Moth::Instr::Type instr)=0
virtual Verdict startInstruction(Moth::Instr::Type instr)=0
Combined button and popup list for selecting options.
DBusConnection const char DBusError * error
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLenum GLuint GLint level
GLenum GLenum GLsizei count
GLenum GLuint GLintptr offset
static QString errorMessage(QUrlPrivate::ErrorCode errorCode, const QString &errorSource, qsizetype errorPosition)
QRandomGenerator generator(sseq)
obj metaObject() -> className()
Q_DISABLE_COPY_MOVE(AccumulatorConverter)
QString accumulatorVariableOut
QString accumulatorVariableIn