diff --git a/src/debug/createdump/datatarget.cpp b/src/debug/createdump/datatarget.cpp index 7ad889547381..4569aeb1a7ad 100644 --- a/src/debug/createdump/datatarget.cpp +++ b/src/debug/createdump/datatarget.cpp @@ -89,7 +89,7 @@ DumpDataTarget::GetMachineType( *machine = IMAGE_FILE_MACHINE_ARM64; #elif _X86_ *machine = IMAGE_FILE_MACHINE_I386; -#elif defined(__mips64__) +#elif _MIPS64_ ////FIXME for MIPS. *machine = IMAGE_FILE_MACHINE_MIPS64; #else diff --git a/src/jit/codegencommon.cpp b/src/jit/codegencommon.cpp index e0407de84d2f..a94347d17d6b 100644 --- a/src/jit/codegencommon.cpp +++ b/src/jit/codegencommon.cpp @@ -7030,7 +7030,6 @@ void CodeGen::genZeroInitFrame(int untrLclHi, int untrLclLo, regNumber initReg, #endif // !UNIX_AMD64_ABI #elif defined(_TARGET_MIPS64_) - /* FIXME for MIPS */ regNumber rAddr; regNumber rCnt = REG_NA; // Invalid @@ -7130,11 +7129,11 @@ void CodeGen::genZeroInitFrame(int untrLclHi, int untrLclLo, regNumber initReg, { if ((uCntBytes - REGSIZE_BYTES) == 0) { - getEmitter()->emitIns_R_R_I(INS_sd, EA_PTRSIZE, REG_R0, rAddr, 0); + getEmitter()->emitIns_R_R_I(INS_sd, EA_PTRSIZE, REG_R0, rAddr, padding); } else { - getEmitter()->emitIns_R_R_I(INS_sd, EA_PTRSIZE, REG_R0, rAddr, 0); + getEmitter()->emitIns_R_R_I(INS_sd, EA_PTRSIZE, REG_R0, rAddr, padding); getEmitter()->emitIns_R_R_I(INS_daddiu, EA_PTRSIZE, rAddr, rAddr, REGSIZE_BYTES); } uCntBytes -= REGSIZE_BYTES; @@ -7142,7 +7141,8 @@ void CodeGen::genZeroInitFrame(int untrLclHi, int untrLclLo, regNumber initReg, if (uCntBytes > 0) { assert(uCntBytes == sizeof(int)); - getEmitter()->emitIns_R_R_I(INS_sw, EA_4BYTE, REG_R0, rAddr, 0); + assert(padding == sizeof(int)); + getEmitter()->emitIns_R_R_I(INS_sw, EA_4BYTE, REG_R0, rAddr, padding); uCntBytes -= sizeof(int); } noway_assert(uCntBytes == 0); diff --git a/src/jit/emit.h b/src/jit/emit.h index b499dad0fa14..a5815a8048a4 100644 --- a/src/jit/emit.h +++ b/src/jit/emit.h @@ -358,7 +358,11 @@ struct insGroup ptr -= sizeof(VARSET_TP); } +#if defined(_TARGET_MIPS64_) + ptr -= sizeof(VARSET_TP); +#else ptr -= sizeof(unsigned); +#endif return *(unsigned*)ptr; } diff --git a/src/jit/emitmips64.cpp b/src/jit/emitmips64.cpp index a6b600fe32a7..423ccc7443d9 100644 --- a/src/jit/emitmips64.cpp +++ b/src/jit/emitmips64.cpp @@ -1925,20 +1925,16 @@ void emitter::emitIns_S_R(instruction ins, emitAttr attr, regNumber reg1, int va switch (ins) { case INS_sb: - assert(size == EA_1BYTE); break; case INS_sh: - assert(size == EA_2BYTE); break; case INS_sw: case INS_swc1: //case INS_swl: //case INS_swr: - assert(size == EA_4BYTE); break; case INS_sd: case INS_sdc1: - assert(size == EA_8BYTE); break; default: @@ -1987,26 +1983,22 @@ void emitter::emitIns_R_S(instruction ins, emitAttr attr, regNumber reg1, int va case INS_sb: case INS_lb: case INS_lbu: - assert(size == EA_1BYTE); break; case INS_sh: case INS_lh: case INS_lhu: - assert(size == EA_2BYTE); break; case INS_sw: case INS_lw: case INS_lwu: case INS_lwc1: - assert(size == EA_4BYTE); break; case INS_sd: case INS_ld: case INS_ldc1: - assert(size == EA_8BYTE); //assert(isValidGeneralDatasize(size) || isValidVectorDatasize(size)); break; @@ -4711,9 +4703,9 @@ size_t emitter::emitOutputInstr(insGroup* ig, instrDesc* id, BYTE** dp) { instrDescJmp* jmp = (instrDescJmp*) id; // bal 4 - // lui at, off-hi-16bits - // ori at, at, off-lo-16bits - // daddu reg, at, ra + // lui reg, off-hi-16bits + // ori reg, reg, off-lo-16bits + // daddu reg, reg, ra ssize_t imm = 4; *(code_t *)dst = emitInsOps(INS_bal, nullptr, &imm); dst += 4; @@ -4727,18 +4719,39 @@ size_t emitter::emitOutputInstr(insGroup* ig, instrDesc* id, BYTE** dp) assert(addrOffs < 0x7fffffff); assert(-((int64_t)1<<31) < addrOffs); - regs[0] = REG_AT; + //regs[0] = REG_AT; + regs[0] = jmp->idReg1(); imm = addrOffs >> 16; *(code_t *)dst = emitInsOps(INS_lui, regs, &imm); dst += 4; - regs[1] = REG_AT; + if (id->idGCref() != GCT_NONE) + { + emitGCregLiveUpd(id->idGCref(), id->idReg1(), dst); + } + else + { + emitGCregDeadUpd(id->idReg1(), dst); + } + + //regs[1] = REG_AT; + regs[1] = jmp->idReg1(); *(code_t *)dst = emitInsOps(INS_ori, regs, (ssize_t*) &addrOffs); dst += 4; - regs[0] = jmp->idReg1(); - //regs[1] = REG_AT; + if (id->idGCref() != GCT_NONE) + { + emitGCregLiveUpd(id->idGCref(), id->idReg1(), dst); + } + else + { + emitGCregDeadUpd(id->idReg1(), dst); + } + + //regs[0] = jmp->idReg1(); + //regs[1] = jmp->idReg1(); + ////regs[1] = REG_AT; regs[2] = REG_RA; *(code_t *)dst = emitInsOps(INS_daddu, regs, nullptr); @@ -8522,7 +8535,7 @@ regNumber emitter::emitInsTernary(instruction ins, emitAttr attr, GenTree* dst, ssize_t imm; // n * n bytes will store n bytes result - emitIns_R_R(ins, attr, src1->gtRegNum, src2->gtRegNum); + emitIns_R_R(ins, EA_SIZE(attr), src1->gtRegNum, src2->gtRegNum); emitIns_R(INS_mflo, attr, dst->gtRegNum); if (needCheckOv) @@ -8545,7 +8558,7 @@ regNumber emitter::emitInsTernary(instruction ins, emitAttr attr, GenTree* dst, else { emitIns_R(INS_mfhi, attr, REG_AT); - emitIns_R_R_I(attr == EA_8BYTE ? INS_dsra32 : INS_sra, attr, REG_T0, dst->gtRegNum, 31); + emitIns_R_R_I(EA_SIZE(attr) == EA_8BYTE ? INS_dsra32 : INS_sra, attr, REG_T0, dst->gtRegNum, 31); imm = emitComp->fgUseThrowHelperBlocks() ? (7<<2) : (9 << 2); emitIns_R_R_I(INS_beq, EA_PTRSIZE, REG_AT, REG_T0, imm); @@ -8558,7 +8571,7 @@ regNumber emitter::emitInsTernary(instruction ins, emitAttr attr, GenTree* dst, } else if (dst->OperGet() == GT_DIV || dst->OperGet() == GT_UDIV || dst->OperGet() == GT_MOD || dst->OperGet() == GT_UMOD) { - emitIns_R_R(ins, attr, src1->gtRegNum, src2->gtRegNum); + emitIns_R_R(ins, EA_SIZE(attr), src1->gtRegNum, src2->gtRegNum); if (dst->OperGet() == GT_DIV || dst->OperGet() == GT_UDIV) emitIns_R(INS_mflo, attr, dst->gtRegNum); diff --git a/src/pal/inc/pal_endian.h b/src/pal/inc/pal_endian.h index 06dec41bff96..b067fb69faa3 100644 --- a/src/pal/inc/pal_endian.h +++ b/src/pal/inc/pal_endian.h @@ -101,8 +101,9 @@ inline void SwapGuid(GUID *pGuid) #ifdef _ARM_ #define LOG2_PTRSIZE 2 #define ALIGN_ACCESS ((1<> 22) & 0x1f; - unwindWords = (xdata[0] >> 27) & 0x0f; + unwindWords = (xdata[0] >> 27) & 0x1f; } else { diff --git a/src/vm/mips64/asmhelpers.S b/src/vm/mips64/asmhelpers.S index 70adb18948e1..169034dba567 100644 --- a/src/vm/mips64/asmhelpers.S +++ b/src/vm/mips64/asmhelpers.S @@ -13,6 +13,14 @@ LEAF_ENTRY GetCurrentIP, _TEXT ori v0, ra, 0 LEAF_END GetCurrentIP, _TEXT +// LPVOID __stdcall GetCurrentSP(void)// +LEAF_ENTRY GetCurrentSP, _TEXT + .set noreorder + jr ra + ori v0, sp, 0 +LEAF_END GetCurrentSP, _TEXT + + //----------------------------------------------------------------------------- // The following Macros help in WRITE_BARRIER Implemetations // WRITE_BARRIER_ENTRY @@ -1370,6 +1378,7 @@ NESTED_END ExternalMethodFixupStub, _TEXT NESTED_ENTRY DelayLoad_MethodCall_FakeProlog, _TEXT, NoHandler DelayLoad_MethodCall: .global DelayLoad_MethodCall + .set noreorder PROLOG_WITH_TRANSITION_BLOCK ori a1, t8, 0 // Indirection cell @@ -1380,15 +1389,12 @@ DelayLoad_MethodCall: daddu t0, AT, t9 daddiu AT, t0, %lo(%neg(%gp_rel(DelayLoad_MethodCall_FakeProlog))) ld t9, %call16(ExternalMethodFixupWorker)(AT) - daddiu a0, sp, __PWTB_TransitionBlock // pTransitionBlock jalr t9 - - //FIXME for MIPS: Is it needed transfering t9 or t2 ??? - move t9, v0 + daddiu a0, sp, __PWTB_TransitionBlock // pTransitionBlock EPILOG_WITH_TRANSITION_BLOCK_TAILCALL - //// Share patch label - b ExternalMethodFixupPatchLabel + EPILOG_BRANCH_REG v0 + ori t9, v0, 0 NESTED_END DelayLoad_MethodCall_FakeProlog, _TEXT @@ -1421,12 +1427,12 @@ DelayLoad_Helper\suffix: ld v0, __PWTB_ArgumentRegisters(sp) EPILOG_WITH_TRANSITION_BLOCK_RETURN + nop LOCAL_LABEL(FakeProlog\suffix\()_0): - move t9, v0 EPILOG_WITH_TRANSITION_BLOCK_TAILCALL - EPILOG_BRANCH_REG t9 - nop + EPILOG_BRANCH_REG v0 + move t9, v0 NESTED_END DelayLoad_Helper\suffix\()_FakeProlog, _TEXT .endm diff --git a/src/vm/mips64/cgencpu.h b/src/vm/mips64/cgencpu.h index 2f7f175e66ea..18b9133d0e18 100644 --- a/src/vm/mips64/cgencpu.h +++ b/src/vm/mips64/cgencpu.h @@ -185,14 +185,7 @@ inline void SetRA(T_CONTEXT * context, TADDR ip) { context->Ra = ip; } -inline LPVOID __stdcall GetCurrentSP() -{ - LPVOID p; - __asm__ volatile ( - "move %0, $29 \n" //$29=sp - :"=r"(p)::); - return p; -} +extern "C" LPVOID __stdcall GetCurrentSP(); inline void SetSP(T_CONTEXT *context, TADDR sp) { LIMITED_METHOD_DAC_CONTRACT; diff --git a/src/vm/mips64/stubs.cpp b/src/vm/mips64/stubs.cpp index 2a2767afbb52..731fd5abb7d3 100644 --- a/src/vm/mips64/stubs.cpp +++ b/src/vm/mips64/stubs.cpp @@ -833,8 +833,8 @@ void TransitionFrame::UpdateRegDisplay(const PREGDISPLAY pRD) ClearRegDisplayArgumentAndScratchRegisters(pRD); // copy the control registers - pRD->pCurrentContext->Fp = pCalleeSaved->fp; - pRD->pCurrentContext->Ra = pCalleeSaved->ra; + //pRD->pCurrentContext->Fp = pCalleeSaved->fp;//not needed for duplicated. + //pRD->pCurrentContext->Ra = pCalleeSaved->ra;//not needed for duplicated. pRD->pCurrentContext->Pc = GetReturnAddress(); pRD->pCurrentContext->Sp = this->GetSP(); diff --git a/tests/mips64/problem_list_sh.txt b/tests/mips64/problem_list_sh.txt index e937c9d29b61..201aa87009a5 100644 --- a/tests/mips64/problem_list_sh.txt +++ b/tests/mips64/problem_list_sh.txt @@ -1,17 +1,8 @@ # # Copyright (c) Loongson Technology. All rights reserved. # -baseservices/threading/interlocked/add/InterlockedAddLongWithSubtract/InterlockedAddLongWithSubtract.sh mips64 # unstable on mips -baseservices/threading/interlocked/compareexchange/compareexchange2/compareexchange2.sh mips64 # failed when checked crossgen -baseservices/threading/interlocked/compareexchange/compareexchange3/compareexchange3.sh mips64 # failed when checked crossgen baseservices/threading/interlocked/compareexchange/CompareExchangeTClass_1/CompareExchangeTClass_1.sh mips64 #12739 failed on mips64 baseservices/threading/interlocked/compareexchange/CompareExchangeTString/CompareExchangeTString.sh mips64 #12739 failed on mips64 -baseservices/threading/interlocked/exchange/exchange2/exchange2.sh mips64 # failed when checked crossgen -baseservices/threading/interlocked/exchange/exchange3/exchange3.sh mips64 # failed when checked crossgen -baseservices/threading/interlocked/read/readthreads/readthreads.sh mips64 # failed when debug crossgen -CoreMangLib/system/runtime/interopservices/marshal/MarshalSizeOf1_PSC/MarshalSizeOf1_PSC.sh mips64 # failed when checked crossgen -CoreMangLib/system/threading/interlocked/InterlockedCompareExchange7/InterlockedCompareExchange7.sh mips64 # failed when checked crossgen -CoreMangLib/system/threading/interlocked/InterlockedExchange7/InterlockedExchange7.sh mips64 # failed when checked crossgen GC/Coverage/271010/271010.sh x64 mips64 #12863 failed item on x64 and mips64 GC/Features/LOHFragmentation/lohfragmentation/lohfragmentation.sh x64 mips64 #12863 failed item on x64 and mips64 GC/LargeMemory/Allocation/finalizertest/finalizertest.sh x64 mips64 #12863 failed item on x64 and mips64 @@ -19,13 +10,7 @@ GC/LargeMemory/API/gc/collect/collect.sh x64 mips64 #12863 failed item on x64 an GC/LargeMemory/API/gc/getgeneration/getgeneration.sh x64 mips64 #12863 failed item on x64 and mips64 GC/Regressions/dev10bugs/536168/536168/536168.sh x64 mips64 #12863 failed item on x64 and mips64 Interop/ExecInDefAppDom/ExecInDefAppDom/ExecInDefAppDom.sh x64 mips64 #12863 failed item on x64 and mips64 -Interop/NativeCallable/NativeCallableTest/NativeCallableTest.sh mips64 #12725 blocked on mips64 JIT/Directed/arglist/vararg/vararg.sh x64 mips64 #12863 failed item on x64 and mips64 -JIT/Directed/coverage/oldtests/cse2_cs_d/cse2_cs_d.sh mips64 # failed when checked crossgen -JIT/Directed/coverage/oldtests/cse2_cs_do/cse2_cs_do.sh mips64 # failed when checked crossgen -JIT/Directed/coverage/oldtests/cse2_cs_r/cse2_cs_r.sh mips64 # failed when checked crossgen -JIT/Directed/coverage/oldtests/cse2_cs_ro/cse2_cs_ro.sh mips64 # failed when checked crossgen -JIT/Directed/Misc/function_pointer/MutualThdRecur-fptr/MutualThdRecur-fptr.sh mips64 #12725 blocked on mips64 JIT/Directed/nullabletypes/boxunboxinterface_d/boxunboxinterface_d.sh mips64 # failed when crossgen JIT/Directed/nullabletypes/boxunboxinterface_do/boxunboxinterface_do.sh mips64 # failed when crossgen JIT/Directed/nullabletypes/boxunboxinterface_r/boxunboxinterface_r.sh mips64 # failed when crossgen @@ -41,43 +26,14 @@ JIT/Directed/nullabletypes/castclassvaluetype_ro/castclassvaluetype_ro.sh mips64 JIT/Directed/nullabletypes/Desktop/boxunboxvaluetype_do/boxunboxvaluetype_do.sh mips64 # failed when crossgen JIT/Directed/nullabletypes/Desktop/boxunboxvaluetype_r/boxunboxvaluetype_r.sh mips64 # failed when crossgen JIT/Directed/nullabletypes/Desktop/boxunboxvaluetype_ro/boxunboxvaluetype_ro.sh mips64 # failed when crossgen +JIT/Directed/perffix/primitivevt/mixed1_cs_do/mixed1_cs_do.sh mips64 #14049 crossgen +JIT/Directed/perffix/primitivevt/mixed1_cs_ro/mixed1_cs_ro.sh mips64 #14049 crossgen JIT/Directed/PREFIX/unaligned/1/arglist/arglist.sh x64 mips64 #12863 failed item on x64 and mips64 JIT/Directed/PREFIX/unaligned/2/arglist/arglist.sh x64 mips64 #12863 failed item on x64 and mips64 JIT/Directed/PREFIX/unaligned/4/arglist/arglist.sh x64 mips64 #12863 failed item on x64 and mips64 JIT/Directed/PREFIX/volatile/1/arglist/arglist.sh x64 mips64 #12863 failed item on x64 and mips64 -JIT/HardwareIntrinsics/General/Vector128_1/Vector128_1_ro/Vector128_1_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/General/Vector128_1/Vector128_1_r/Vector128_1_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/General/Vector128/Vector128_ro/Vector128_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/General/Vector128/Vector128_r/Vector128_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/General/Vector256_1/Vector256_1_ro/Vector256_1_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/General/Vector256_1/Vector256_1_r/Vector256_1_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/General/Vector256/Vector256_ro/Vector256_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/General/Vector256/Vector256_r/Vector256_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/General/Vector64_1/Vector64_1_ro/Vector64_1_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/General/Vector64_1/Vector64_1_r/Vector64_1_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/General/Vector64/Vector64_ro/Vector64_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/General/Vector64/Vector64_r/Vector64_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Avx2/Avx2_r/Avx2_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Avx2/Avx2_ro/Avx2_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Avx/Avx_r/Avx_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Avx/Avx_ro/Avx_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Avx_Vector128/Avx_r/Avx_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Avx_Vector128/Avx_ro/Avx_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Fma_Vector128/Fma_r/Fma_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Fma_Vector128/Fma_ro/Fma_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Fma_Vector256/Fma_r/Fma_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Fma_Vector256/Fma_ro/Fma_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Sse2/Sse2_ro/Sse2_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Sse2/Sse2_r/Sse2_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Sse2.X64/Sse2.X64_ro/Sse2.X64_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Sse2.X64/Sse2.X64_r/Sse2.X64_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Sse3/Sse3_ro/Sse3_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Sse3/Sse3_r/Sse3_r.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Sse41/Sse41_ro/Sse41_ro.sh mips64 # failed when checked crossgen -JIT/HardwareIntrinsics/X86/Sse41/Sse41_r/Sse41_r.sh mips64 # failed when checked crossgen JIT/IL_Conformance/Old/Conformance_Base/conv_ovf_i8_i/conv_ovf_i8_i.sh mips64 #12739 failed on mips64 JIT/jit64/mcc/interop/mcc_i00/mcc_i00.sh x64 mips64 #12863 failed item on x64 and mips64 -JIT/jit64/opt/rngchk/ArrayWithThread_o/ArrayWithThread_o.sh mips64 #12739 failed on mips64 JIT/jit64/valuetypes/nullable/box-unbox/box-unbox/box-unbox013/box-unbox013.sh mips64 # failed when crossgen JIT/jit64/valuetypes/nullable/box-unbox/generics/box-unbox-generics013/box-unbox-generics013.sh mips64 # failed when crossgen JIT/jit64/valuetypes/nullable/box-unbox/interface/box-unbox-interface018/box-unbox-interface018.sh mips64 # failed when crossgen @@ -85,96 +41,34 @@ JIT/jit64/valuetypes/nullable/box-unbox/value/box-unbox-value013/box-unbox-value JIT/jit64/valuetypes/nullable/castclass/castclass/castclass013/castclass013.sh mips64 # failed when crossgen JIT/jit64/valuetypes/nullable/castclass/generics/castclass-generics013/castclass-generics013.sh mips64 # failed when crossgen JIT/jit64/valuetypes/nullable/castclass/interface/castclass-interface018/castclass-interface018.sh mips64 # failed when crossgen -JIT/Methodical/Boxing/functional/_dbgsin_cs/_dbgsin_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/functional/_dbgsin_il/_dbgsin_il.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/functional/_odbgsin_cs/_odbgsin_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/functional/_orelsin_cs/_orelsin_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/functional/_relsin_cs/_relsin_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/functional/_relsin_il/_relsin_il.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/morph/_dbgsin_cs/_dbgsin_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/morph/_odbgsin_cs/_odbgsin_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/morph/_orelsin_cs/_orelsin_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/morph/_relsin_cs/_relsin_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/morph/sin3double/sin3double.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/seh/_dbgfault/_dbgfault.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/seh/_dbgfilter/_dbgfilter.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/seh/_dbgtry_cs/_dbgtry_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/seh/_dbgtry_il/_dbgtry_il.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/seh/_odbgtry_cs/_odbgtry_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/seh/_oreltry_cs/_oreltry_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/seh/_relfault/_relfault.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/seh/_relfilter/_relfilter.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/seh/_reltry_cs/_reltry_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/seh/_reltry_il/_reltry_il.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_dbgsin_cs_cs/_dbgsin_cs_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_dbgsin_cs_il/_dbgsin_cs_il.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_dbgsin_il_cs/_dbgsin_il_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_dbgsin_il_il/_dbgsin_il_il.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_odbgsin_cs_cs/_odbgsin_cs_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_odbgsin_cs_il/_odbgsin_cs_il.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_odbgsin_il_cs/_odbgsin_il_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_odbgsin_il_il/_odbgsin_il_il.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_orelsin_cs_cs/_orelsin_cs_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_orelsin_cs_il/_orelsin_cs_il.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_orelsin_il_cs/_orelsin_il_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_orelsin_il_il/_orelsin_il_il.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_relsin_cs_cs/_relsin_cs_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_relsin_cs_il/_relsin_cs_il.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_relsin_il_cs/_relsin_il_cs.sh mips64 # failed when checked crossgen -JIT/Methodical/Boxing/xlang/_relsin_il_il/_relsin_il_il.sh mips64 # failed when checked crossgen JIT/Methodical/Coverage/arglist_pos/arglist_pos.sh x64 mips64 #12863 failed item on x64 and mips64 JIT/Methodical/flowgraph/dev10_bug679955/volatileLocal1/volatileLocal1.sh mips64 #12739 failed on mips64 -JIT/Methodical/fp/apps/bouncingball_cs_d/bouncingball_cs_d.sh mips64 # failed when checked crossgen -JIT/Methodical/fp/apps/bouncingball_cs_do/bouncingball_cs_do.sh mips64 # failed when checked crossgen -JIT/Methodical/fp/apps/bouncingball_cs_r/bouncingball_cs_r.sh mips64 # failed when checked crossgen -JIT/Methodical/fp/apps/bouncingball_cs_ro/bouncingball_cs_ro.sh mips64 # failed when checked crossgen JIT/Methodical/fp/exgen/1000w1d_cs_do/1000w1d_cs_do.sh mips64 # failed when crossgen JIT/Methodical/fp/exgen/1000w1d_cs_ro/1000w1d_cs_ro.sh mips64 # failed when crossgen -JIT/Methodical/fp/exgen/10w5d_cs_d/10w5d_cs_d.sh mips64 # failed when crossgen and skipcrossgen JIT/Methodical/fp/exgen/10w5d_cs_do/10w5d_cs_do.sh mips64 # failed when crossgen and skipcrossgen -JIT/Methodical/fp/exgen/10w5d_cs_r/10w5d_cs_r.sh mips64 # failed when crossgen and skipcrossgen JIT/Methodical/fp/exgen/10w5d_cs_ro/10w5d_cs_ro.sh mips64 # failed when crossgen and skipcrossgen JIT/Methodical/fp/exgen/200w1d-02_cs_do/200w1d-02_cs_do.sh mips64 # failed when crossgen JIT/Methodical/fp/exgen/200w1d-02_cs_ro/200w1d-02_cs_ro.sh mips64 # failed when crossgen -JIT/Methodical/MDArray/basics/stringarr_cs_do/stringarr_cs_do.sh mips64 # failed when checked crossgen -JIT/Methodical/MDArray/basics/stringarr_cs_d/stringarr_cs_d.sh mips64 # failed when checked crossgen -JIT/Methodical/MDArray/basics/stringarr_cs_ro/stringarr_cs_ro.sh mips64 # failed when checked crossgen -JIT/Methodical/MDArray/basics/stringarr_cs_r/stringarr_cs_r.sh mips64 # failed when checked crossgen -JIT/Methodical/NaN/intrinsic_cs_d/intrinsic_cs_d.sh mips64 # failed when checked crossgen -JIT/Methodical/NaN/intrinsic_cs_do/intrinsic_cs_do.sh mips64 # failed when checked crossgen -JIT/Methodical/NaN/intrinsic_cs_r/intrinsic_cs_r.sh mips64 # failed when checked crossgen -JIT/Methodical/NaN/intrinsic_cs_ro/intrinsic_cs_ro.sh mips64 # failed when checked crossgen -JIT/Methodical/NaN/intrinsic_nonf_il_d/intrinsic_nonf_il_d.sh mips64 # failed when checked crossgen -JIT/Methodical/NaN/intrinsic_nonf_il_r/intrinsic_nonf_il_r.sh mips64 # failed when checked crossgen JIT/Methodical/refany/_il_dbgseq/_il_dbgseq.sh x64 mips64 #12863 failed item on x64 and mips64 JIT/Methodical/refany/_il_relseq/_il_relseq.sh x64 mips64 #12863 failed item on x64 and mips64 -JIT/opt/Inline/tests/mathfunc/mathfunc.sh mips64 # failed when checked crossgen JIT/opt/ObjectStackAllocation/ObjectStackAllocationTests/ObjectStackAllocationTests.sh mips64 # blocked on mips when crossgen -JIT/Performance/CodeQuality/BenchmarksGame/regex-redux/regex-redux-5/regex-redux-5.sh mips64 #12739 failed on mips64 -JIT/Performance/CodeQuality/Benchstones/BenchF/Adams/Adams/Adams.sh mips64 # failed when checked crossgen -JIT/Performance/CodeQuality/Roslyn/CscBench/CscBench.sh mips64 #12739 failed on mips64 -JIT/Performance/CodeQuality/Span/SpanBench/SpanBench.sh mips64 # failed when checked crossgen JIT/Regression/CLR-x86-EJIT/V1-M12-Beta2/b26323/b26323/b26323.sh x64 mips64 #12863 failed item on x64 and mips64 -JIT/Regression/CLR-x86-JIT/V1.1-M1-Beta1/b140711/b140711/b140711.sh mips64 # failed when checked crossgen JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b16423/b16423/b16423.sh x64 mips64 #12863 failed item on x64 and mips64 -JIT/Regression/CLR-x86-JIT/V1-M09.5-PDC/b29456/b29456/b29456.sh mips64 # failed when checked crossgen JIT/Regression/CLR-x86-JIT/V1-M11-Beta1/b41391/b41391/b41391.sh x64 mips64 #12863 failed item on x64 and mips64 JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b31746/b31746/b31746.sh x64 mips64 #12863 failed item on x64 and mips64 JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b37646/b37646/b37646.sh x64 mips64 #12863 failed item on x64 and mips64 JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b41852/b41852/b41852.sh x64 mips64 #12863 failed item on x64 and mips64 -JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b78694/b78694/b78694.sh mips64 # failed when checked crossgen -JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b425314/b425314/b425314.sh mips64 # unstable on mips JIT/Regression/CLR-x86-JIT/V2.0-Beta2/b426654/b426654/b426654.sh mips64 # blocked on mips when skipcrossgen -JIT/Regression/CLR-x86-JIT/v2.1/b610750/b610750_32vs64/b610750_32vs64.sh mips64 # failed when checked crossgen JIT/Regression/CLR-x86-JIT/v2.1/DDB/b175679/b175679/b175679.sh mips64 #12739 failed on mips64 JIT/Regression/JitBlue/DevDiv_362706/DevDiv_362706/DevDiv_362706.sh mips64 # failed when checked skipcrossgen JIT/Regression/JitBlue/DevDiv_370233/DevDiv_370233/DevDiv_370233.sh mips64 # failed when checked skipcrossgen JIT/Regression/JitBlue/GitHub_11408/GitHub_11408/GitHub_11408.sh x64 mips64 #12863 failed item on x64 and mips64 -JIT/Regression/VS-ia64-JIT/V1.2-M01/b10827/b10827/b10827.sh mips64 #12739 failed on mips64 JIT/superpmi/superpmicollect/10w5d_cs_do.sh mips64 # failed when crossgen and skipcrossgen JIT/superpmi/superpmicollect/superpmicollect.sh x64 mips64 #12863 failed item on x64 and mips64 Loader/AssemblyDependencyResolver/AssemblyDependencyResolverTests/AssemblyDependencyResolverTests/AssemblyDependencyResolverTests.sh mips64 # failed when checked crossgen Loader/AssemblyDependencyResolver/MissingHostPolicyTests/MissingHostPolicyTests/MissingHostPolicyTests.sh x64 mips64 #12863 failed item on x64 and mips64 readytorun/DynamicMethodGCStress/DynamicMethodGCStress/DynamicMethodGCStress.sh mips64 # failed when crossgen +readytorun/tests/versionbubbles/versionbubbles/versionbubbles.sh # failed when crossgen +tracing/eventcounter/incrementingpollingcounter/incrementingpollingcounter.sh mips64 # checked and debug tracing/eventcounter/pollingcounter/pollingcounter.sh mips64 #12739 failed on mips64 tracing/tracecontrol/tracecontrol/tracecontrol.sh x64 mips64 #12863 failed item on x64 and mips64 diff --git a/tests/src/tracing/eventcounter/eventcounter.cs b/tests/src/tracing/eventcounter/eventcounter.cs index de1a0f0e4170..1569b2ac0b67 100644 --- a/tests/src/tracing/eventcounter/eventcounter.cs +++ b/tests/src/tracing/eventcounter/eventcounter.cs @@ -41,6 +41,7 @@ internal sealed class SimpleEventListener : EventListener public string displayName; public string displayUnits; public int callbackCount; + public ManualResetEvent sawEvent; public SimpleEventListener(string targetSourceName, EventLevel level) { @@ -53,6 +54,7 @@ public SimpleEventListener(string targetSourceName, EventLevel level) means = new HashSet(); args = new Dictionary(); args.Add("EventCounterIntervalSec", "1"); + sawEvent = new ManualResetEvent(false); } protected override void OnEventSourceCreated(EventSource source) @@ -89,6 +91,7 @@ protected override void OnEventWritten(EventWrittenEventArgs eventData) } } } + sawEvent.Set(); callbackCount++; } } @@ -108,6 +111,7 @@ public bool validateMean() public static int Main(string[] args) { + // Create an EventListener. using (SimpleEventListener myListener = new SimpleEventListener("SimpleEventSource", EventLevel.Verbose)) { @@ -123,7 +127,7 @@ public static int Main(string[] args) eventSource.WriteOne(); } - Thread.Sleep(3000); + myListener.sawEvent.WaitOne(-1); // Block until we see at least one event if (!myListener.validateMean()) { diff --git a/tests/src/tracing/eventcounter/incrementingeventcounter.cs b/tests/src/tracing/eventcounter/incrementingeventcounter.cs index a50b859ecf1b..9ae848572263 100644 --- a/tests/src/tracing/eventcounter/incrementingeventcounter.cs +++ b/tests/src/tracing/eventcounter/incrementingeventcounter.cs @@ -15,6 +15,7 @@ namespace BasicEventSourceTests { public partial class TestIncrementingEventCounter { + private static ManualResetEvent evnt = new ManualResetEvent(false); [EventSource(Name = "SimpleEventSource")] private sealed class SimpleEventSource : EventSource @@ -37,17 +38,19 @@ internal sealed class SimpleEventListener : EventListener private readonly string _targetSourceName; private readonly EventLevel _level; private Dictionary args; - + private int _iter; + public int incrementSum; public string displayName; public string displayUnits; public string displayRateTimeScale; - public SimpleEventListener(string targetSourceName, EventLevel level) + public SimpleEventListener(string targetSourceName, EventLevel level, int iter) { // Store the arguments _targetSourceName = targetSourceName; _level = level; + _iter = iter; incrementSum = 0; displayName = ""; displayUnits = ""; @@ -91,20 +94,25 @@ protected override void OnEventWritten(EventWrittenEventArgs eventData) } } } + if (incrementSum == _iter) + { + evnt.Set(); + } } } } public static int Main(string[] args) { + int iter = 100; + // Create an EventListener. - using (SimpleEventListener myListener = new SimpleEventListener("SimpleEventSource", EventLevel.Verbose)) + using (SimpleEventListener myListener = new SimpleEventListener("SimpleEventSource", EventLevel.Verbose, iter)) { string displayName = "Mock Counter"; string displayUnits = "Count"; SimpleEventSource eventSource = new SimpleEventSource(displayName, displayUnits); - int iter = 100; // increment 100 times for (int i = 0; i < iter; i++) @@ -112,7 +120,7 @@ public static int Main(string[] args) eventSource.IncrementCounter(); } - Thread.Sleep(3000); + evnt.WaitOne(10000); if (iter != myListener.incrementSum) { @@ -146,4 +154,4 @@ public static int Main(string[] args) } } } -} \ No newline at end of file +}