From 78d8605d0b065e730198706ddb4fb6d06d3afa64 Mon Sep 17 00:00:00 2001 From: AutisticLulu Date: Sun, 9 Aug 2026 17:33:38 +0200 Subject: [PATCH] Fix cppia JIT "Bad move target" on untyped register moves CppiaCompiler::convert moves between two untyped registers in three places. getCommonType(jtAny, jtAny) returns jtAny, which move() rejects. --- src/hx/cppia/CppiaCompiler.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hx/cppia/CppiaCompiler.cpp b/src/hx/cppia/CppiaCompiler.cpp index e6f8087e9..3d16cd81f 100644 --- a/src/hx/cppia/CppiaCompiler.cpp +++ b/src/hx/cppia/CppiaCompiler.cpp @@ -898,7 +898,7 @@ class CppiaJitCompiler : public CppiaCompiler { if (inSrc.uses(SLJIT_R1)) { - move(sJitArg0, inSrc); + move(sJitArg0.as(jtInt), inSrc.as(jtInt)); add( sJitTemp1, inTarget.getReg(), inTarget.offset ); callNative( (void *)intToStr, sJitArg0.as(jtInt), sJitTemp1.as(jtPointer)); } @@ -917,7 +917,7 @@ class CppiaJitCompiler : public CppiaCompiler case etObject: if (inSrc.uses(SLJIT_R1)) { - move(sJitArg0, inSrc); + move(sJitArg0.as(jtPointer), inSrc.as(jtPointer)); add( sJitTemp1, inTarget.getReg(), inTarget.offset ); callNative( (void *)objToStr, sJitArg0.as(jtPointer), sJitTemp1.as(jtPointer) ); } @@ -944,7 +944,7 @@ class CppiaJitCompiler : public CppiaCompiler case etObject: if (inSrc==sJitTemp1) { - move(sJitArg0, inSrc); + move(sJitArg0.as(jtPointer), inSrc.as(jtPointer)); makeAddress(sJitTemp1,inTarget); callNative( (void *)objToFloat, sJitArg0.as(jtPointer), sJitTemp1.as(jtPointer)); }