diff --git a/IDEHelper/Backend/BeMCContext.cpp b/IDEHelper/Backend/BeMCContext.cpp index 97fc4fbc..4cf5ed7e 100644 --- a/IDEHelper/Backend/BeMCContext.cpp +++ b/IDEHelper/Backend/BeMCContext.cpp @@ -5578,6 +5578,9 @@ void BeMCContext::DisableRegister(const BeMCOperand& operand, X64CPURegister reg case X64Reg_RAX: vregInfo->mDisableRAX = true; break; + case X64Reg_RDX: + vregInfo->mDisableRDX = true; + break; case X64Reg_SIL: vregInfo->mDisableEx = true; break; @@ -9228,6 +9231,8 @@ bool BeMCContext::DoLegalization() { // This is to avoid overlap with PreserveRAX DisableRegister(inst->mArg0, X64Reg_RAX); + if (preserveRDX) + DisableRegister(inst->mArg0, X64Reg_RDX); } } AllocInst(BeMCInstKind_Mov, inst->mArg0, mcRemaindier, instIdx++ + 1); @@ -14709,7 +14714,7 @@ void BeMCContext::Generate(BeFunction* function) mDbgPreferredRegs[32] = X64Reg_R8;*/ //mDbgPreferredRegs[8] = X64Reg_RAX; - //mDebugging = function->mName == "?Hey@Blurg@bf@@SAXXZ"; + mDebugging = function->mName == "?Dequeue@?$Queue@Tint@@@Generic@Collections@System@bf@@QEAATint@@XZ"; //"?ColorizeCodeString@IDEUtils@IDE@bf@@SAXPEAVString@System@3@W4CodeKind@123@@Z"; //"?Main@Program@bf@@CAHPEAV?$Array1@PEAVString@System@bf@@@System@2@@Z"; diff --git a/IDEHelper/Compiler/BfCompiler.cpp b/IDEHelper/Compiler/BfCompiler.cpp index 0baa40b2..0cb2fb97 100644 --- a/IDEHelper/Compiler/BfCompiler.cpp +++ b/IDEHelper/Compiler/BfCompiler.cpp @@ -428,6 +428,7 @@ BfCompiler::BfCompiler(BfSystem* bfSystem, bool isResolveOnly) mTypeTypeDef = NULL; mUnboundAttributeTypeDef = NULL; mValueTypeTypeDef = NULL; + mResultTypeDef = NULL; mObsoleteAttributeTypeDef = NULL; mErrorAttributeTypeDef = NULL; mWarnAttributeTypeDef = NULL; @@ -5923,6 +5924,7 @@ bool BfCompiler::DoCompile(const StringImpl& outputDirectory) mFriendAttributeTypeDef = _GetRequiredType("System.FriendAttribute"); mCheckedAttributeTypeDef = _GetRequiredType("System.CheckedAttribute"); mUncheckedAttributeTypeDef = _GetRequiredType("System.UncheckedAttribute"); + mResultTypeDef = _GetRequiredType("System.Result", 1); mFunctionTypeDef = _GetRequiredType("System.Function"); mGCTypeDef = _GetRequiredType("System.GC"); mGenericIEnumerableTypeDef = _GetRequiredType("System.Collections.Generic.IEnumerable"); diff --git a/IDEHelper/Compiler/BfCompiler.h b/IDEHelper/Compiler/BfCompiler.h index e2a2ae01..1384b02f 100644 --- a/IDEHelper/Compiler/BfCompiler.h +++ b/IDEHelper/Compiler/BfCompiler.h @@ -345,6 +345,7 @@ public: BfTypeDef* mStringTypeDef; BfTypeDef* mTypeTypeDef; BfTypeDef* mValueTypeTypeDef; + BfTypeDef* mResultTypeDef; BfTypeDef* mFunctionTypeDef; BfTypeDef* mGCTypeDef; BfTypeDef* mGenericIEnumerableTypeDef;