// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. // // File: stubs.cpp // // This file contains stub functions for unimplemented features need to // run on the ARM platform. #include "common.h" #include "jitinterface.h" #include "comdelegate.h" #include "invokeutil.h" #include "excep.h" #include "class.h" #include "field.h" #include "dllimportcallback.h" #include "dllimport.h" #include "eeconfig.h" #include "cgensys.h" #include "asmconstants.h" #include "virtualcallstub.h" #include "gcdump.h" #include "rtlfunctions.h" #include "codeman.h" #include "ecall.h" #include "threadsuspend.h" // target write barriers EXTERN_C void JIT_WriteBarrier(Object **dst, Object *ref); EXTERN_C void JIT_WriteBarrier_End(); EXTERN_C void JIT_CheckedWriteBarrier(Object **dst, Object *ref); EXTERN_C void JIT_CheckedWriteBarrier_End(); EXTERN_C void JIT_ByRefWriteBarrier_End(); EXTERN_C void JIT_ByRefWriteBarrier_SP(Object **dst, Object *ref); // source write barriers EXTERN_C void JIT_WriteBarrier_SP_Pre(Object **dst, Object *ref); EXTERN_C void JIT_WriteBarrier_SP_Pre_End(); EXTERN_C void JIT_WriteBarrier_SP_Post(Object **dst, Object *ref); EXTERN_C void JIT_WriteBarrier_SP_Post_End(); EXTERN_C void JIT_WriteBarrier_MP_Pre(Object **dst, Object *ref); EXTERN_C void JIT_WriteBarrier_MP_Pre_End(); EXTERN_C void JIT_WriteBarrier_MP_Post(Object **dst, Object *ref); EXTERN_C void JIT_WriteBarrier_MP_Post_End(); EXTERN_C void JIT_CheckedWriteBarrier_SP_Pre(Object **dst, Object *ref); EXTERN_C void JIT_CheckedWriteBarrier_SP_Pre_End(); EXTERN_C void JIT_CheckedWriteBarrier_SP_Post(Object **dst, Object *ref); EXTERN_C void JIT_CheckedWriteBarrier_SP_Post_End(); EXTERN_C void JIT_CheckedWriteBarrier_MP_Pre(Object **dst, Object *ref); EXTERN_C void JIT_CheckedWriteBarrier_MP_Pre_End(); EXTERN_C void JIT_CheckedWriteBarrier_MP_Post(Object **dst, Object *ref); EXTERN_C void JIT_CheckedWriteBarrier_MP_Post_End(); EXTERN_C void JIT_ByRefWriteBarrier_SP_Pre(); EXTERN_C void JIT_ByRefWriteBarrier_SP_Pre_End(); EXTERN_C void JIT_ByRefWriteBarrier_SP_Post(); EXTERN_C void JIT_ByRefWriteBarrier_SP_Post_End(); EXTERN_C void JIT_ByRefWriteBarrier_MP_Pre(); EXTERN_C void JIT_ByRefWriteBarrier_MP_Pre_End(); EXTERN_C void JIT_ByRefWriteBarrier_MP_Post(Object **dst, Object *ref); EXTERN_C void JIT_ByRefWriteBarrier_MP_Post_End(); EXTERN_C void JIT_PatchedWriteBarrierStart(); EXTERN_C void JIT_PatchedWriteBarrierLast(); #ifndef DACCESS_COMPILE //----------------------------------------------------------------------- // InstructionFormat for conditional jump. //----------------------------------------------------------------------- class ThumbCondJump : public InstructionFormat { public: ThumbCondJump() : InstructionFormat(InstructionFormat::k16) { LIMITED_METHOD_CONTRACT; } virtual UINT GetSizeOfInstruction(UINT refsize, UINT variationCode) { LIMITED_METHOD_CONTRACT _ASSERTE(refsize == InstructionFormat::k16); return 2; } virtual UINT GetHotSpotOffset(UINT refsize, UINT variationCode) { LIMITED_METHOD_CONTRACT _ASSERTE(refsize == InstructionFormat::k16); return 4; } //CB{N}Z Rn,