summaryrefslogtreecommitdiff
path: root/src/vm/arm64/stubs.cpp
AgeCommit message (Collapse)AuthorFilesLines
2020-06-18Implement instantiating and unboxing through portable stublinker code… (#106)JUNG DONG-HEON1-12/+55
* Implement instantiating and unboxing through portable stublinker code - Handle only the cases with register to register moves - Shares abi processing logic with delegate shuffle thunk creation - Architecture specific logic is relatively simple - Do not permit use of HELPERREG in computed instantiating stubs - Fix GetArgLoc such that it works on all architectures and OS combinations Add a JIT stress test case for testing all of the various combinations - Use the same calling convention test architecture that was used as part of tail call work Rename secure delegates to wrapper delegates - Secure delegates are no longer a feature of the runtime - But the wrapper delegate lives on as a workaround for a weird detail of the ARM32 abi
2019-02-12Enable portable fast alloc helpers on ARM64 Windows. (#22541)Aditya Mandaleeka1-2/+0
2019-01-15Bringing Unix write barrier changes to Windows.Aditya Mandaleeka1-3/+0
2018-10-26Implement interface dispatch to COM for ARM64 (#20618)David Wrighton1-8/+0
* Implement interface dispatch to COM for ARM64 - Implement missing stub (GenericComPlusCallStub) * Re-enable IDispatch test for Arm64 (Fix issue #20580 )
2018-09-01i386: Fixed definition with declaration in eetoprofinterfaceimpl.cpp (#18792)sergey ignatov1-1/+1
2018-06-03Typo (#18266)John Doe1-1/+1
* addres -> address * depedant -> dependent * gaurantee -> guarantee * gaurantees -> guarantees * lable -> label * lazieness -> laziness * lcoation -> location * enquing -> enqueuing * enregsitered -> enregistered * ensurin -> ensuring
2018-03-24Delete unused files from src/inc (#17186)Jan Kotas1-1/+0
2018-03-22[ARM64] Fix UMEntryThunkCode::Poison method (#17122)Konstantin Baladurin1-1/+1
Fix hex value of the instruction ldp x16, x0, [x12]
2018-03-15[Arm64] Fix EmitShuffleThunk reg allocation (#16947)Steve MacLean1-7/+7
2018-01-12Improve UMEntryThunkCode::Poison method.Konstantin Baladurin1-2/+10
Improve UMEntryThunkCode::Poison to produce diagnostic message when collected delegate was called.
2017-10-11Delete !FEATURE_IMPLICIT_TLS (#14398)Jan Kotas1-39/+0
Linux and Windows arm64 are using the regular C/C++ thread local statics. This change unifies the remaining Windows architectures to be on the same plan.
2017-09-29StompWriteBarrier initialization path refactoring (#14105)Sergey1-4/+13
* refactored arm, arm64, amd64 and x86 to signal about icache flush and ee restarts * refactored gc init stage to stomp write barrier (hence flush icache) only once * review fixes, care taken of icache invalidation during StompResize * fixed heap boundaries initialization bug introduced after refactoring gc.cpp * stylistic review fixe * global variable rename * global variable rename once more
2017-08-25[Arm64/Windows] Disable JIT_WriteBarrier optimizationSteve MacLean, Qualcomm Datacenter Technologies Inc1-0/+4
2017-08-25[Arm64] Optimize JIT_WriteBarriersSteve MacLean1-5/+12
Fixes #5833 Fixes #11374 Fixes #12197
2017-08-22[Arm64/Unix] Use portable MP optimized new/alloc (#12333)Steve MacLean1-0/+26
2017-07-31[Arm64] Implement Poison()Steve MacLean, Qualcomm Datacenter Technologies Inc1-1/+2
Fixes #13117
2017-07-31 Fill freed loader heap chunk with non-zero value (#12731)Jonghyun Park1-0/+4
* Add FEATURE_LOADER_HEAP_GUARD feature * Invoke memset only for reclaimed regions * Enable FEATURE_LOADER_HEAP_GUARD by default * Insert trap inside UMEntryThunk::Terminate * Make all exectuable heaps not to zero-initialize itself Use fZeroInit (instead of fMakeRelazed) * Add comment * Revert unnecessary changes * Add and use 'Poison' method to insert a trap * Do NOT invoke FlushInstructionCache * Update comment * Add comment on ARM Poisoning instruction * Use X86_INSTR_INT3 instead of 0xCC
2017-06-15Revert "[Arm64] JIT_WriteBarrier optimization (#12227)"Jarret Shook1-12/+5
This reverts commit b5914c8d1b20be898b8982a4dfcf9d8e9046b2ec.
2017-06-14[Arm64] JIT_WriteBarrier optimization (#12227)Steve MacLean1-5/+12
* [Arm64] JIT_WriteBarrier optimization Add skipEphemeralCheck if gcServer=1 Copy all gc parameters into a literal pool which fits in single cache line Add dmb ishst on gcHeap changes Reduce unpredictable branches Remove unneeded instructiuons Fixes #11374 Fixes #12197 * [Arm64] fix typo in asm * Fixup asm * [Arm64] Revise per comments Nits - Whitespace, Labels to PascalCase Fix state change order Add Suspend/Resume to fix race Fix errors in Windows arm64 assembly * [Arm64] Remove SuspendEE/RestartEE in StompWriteBarrierResize * Use Volatile<> for g_highest_address * Revise synchronization per comments
2017-05-05[Arm64/Unix] Enable FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP (#11375)Steve MacLean1-0/+13
* [Arm64/Unix] Enable FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP * [Arm64/Unix] Enable FEATURE_MANUALLY_MANAGED_CARD_BUNDLES
2017-04-12Add platform (x64 & arm64) specific optimized jit helpers for statics access ↵Rahul Kumar1-1/+14
(#10912)
2017-02-17[ARM64/Unix] (#9500)Steve MacLean1-17/+77
* [Arm64/Unix] Update arm64 *.S files to match *.asm * [Arm64/Unix] Fix CONTEXTToNativeContext() * [Arm64/Unix] ThrowExceptionFromContextInternal * [Arm64/Unix] Preserve x8 argument register * [ARM64/Unix] Add CFI directives Add native unwind info * [Arm64/Unix] Fix RtlRestoreContext * [Arm64/Unix] Restore FP from CurrentContextPointers * [Arm64/Unix] fix pointer math * [Arm64/Unix] Fix CallDescrWorkerInternal personality * [Arm64/Unix] More Fp fixups * [Arm64/Unix] CallEHFunclet machine state Restore non-volatile machine state in CallEHFunclet * [Arm64/Unix] CallDescrWorkerInternal Use empty stack slot to save argument * [Arm64/Unix] RtlVirtualUnwind update pointers * [Arm64] LazyMachState fixes * [Arm64/Unix] disable USE_REDIRECT_FOR_GCSTRESS When FEATURE_PAL is enableds USE_REDIRECT_FOR_GCSTRESS is not supported * [Arm64] ClearRegDisplayArgumentAndScratchRegisters() * [Arm64] Remove unnecesary copy in TransitionFrame * [Arm64/Unix] Fix comment per review * [Arm64/Unix] move constants per review * [Arm64/Unix] Use ldp per review Also fix indentation * [Arm64/Unix] Fix indentation per review * [Arm64/Unix] Remove m_Unwound per review comments * [Arm64/Unix] Use PREPARE_EXTERNAL_VAR to access globals * [Arm64/Unix] Fix more whitespace per earlier review comments
2017-02-10[Arm64] Add more GCROOTS logging (#9514)Steve MacLean1-2/+9
2016-09-02Implement FixupPrecode for Arm64Rama Krishnan Raghupathy1-8/+91
2016-08-20Fix ARM64 build breakage (#6819)Peter Jas1-1/+1
2016-08-10ARM64: Fix for ARM64TODORahul Kumar1-95/+43
2016-08-07Check PAL_VirtualUnwind failure during GC (#6598)Jonghyun Park1-1/+6
As discussed in #6525, PAL_VirtualUnwind sometimes fails during GC. This GC failure leads to very unpredicatble behavior (which is very hard to analyze). This commit tries to stop the execution at the point where error happens.
2016-07-25Arm64: DebuggerRama Krishnan Raghupathy1-17/+0
Instruction emulation for Break Points Debugger::FuncEvalSetup NativeWalker ExceptionHijack Exception intercept Managed Return Value
2016-06-23Enable out-of-proc unwinding on ARM (#5946)kvochko1-3/+11
Fix #5855
2016-06-21Arm64:return buffer arg should be passed in x8Rahul Kumar1-2/+2
2016-06-21Generic dictionary minor performance improvement and simplification for R2R ↵Fadi Hanna1-7/+17
(#5690) A set of refactoring changes to slighly improve the performance of generic dictionary access on R2R images, and simplifying the codebase: 1) Removing dependency on CEEInfo::ComputeRuntimeLookupForSharedGenericTokenStatic (and deleting the API). 2) Stop parsing the generic type/method signatures when generating the R2R dictionary lookup assembly stub. 3) Avoid re-encoding the generic type/method signatures in a new in-memory blob using a SigBuilder (signatures used directly from the R2R image) 4) Moved the parsing/loading of type/method signatures to Dictionary::PopulateEntry() 5) Dictionary index and slot number are now encoded in the generated assembly stub instead of the signature (stub takes a pointer to a data blob, which contains the signature, the dictionary index and slot, and the module pointer)
2016-06-09Merge pull request #5666 from swaroop-sridhar/LRSwaroop Sridhar1-8/+6
ARM64: Don't track LR as part of NV-Context
2016-06-09ARM64: Don't track LR as part of NV-ContextSwaroop Sridhar1-8/+6
The _pc and _sp fields actually refer to the caller's PC and SP values. So, remove read/writes of LR in captureX19_X29 array of ARM64 MachState. This change fixes a buffer overflow problem.
2016-06-08Renable disabled arm64 R2R testsRahul Kumar1-2/+2
2016-06-06ARM64: R2R - Implement CreateDictionaryLookupHelper stubRahul Kumar1-12/+139
2016-05-18ARM64: Fix LR update in a few stubs (#5013)Swaroop Sridhar1-3/+9
Fix LR capture/restore in a few stubs helpers. This change fixed failures in 6 GC tests under GCStress.
2016-05-14Fix build breaks in arm64 and legacy internal amd64 buildsJan Kotas1-0/+8
[tfs-changeset: 1604829]
2016-05-09[Arm64] Helpers for ReadyToRunRahul Kumar1-14/+244
2016-05-04[Arm64] Initialize indirection cell for delegatesRama Krishnan Raghupathy1-0/+2
2016-05-02Arm64:Implemeting ThisPtrRetBufPrecode:Rama Krishnan Raghupathy1-1/+19
Precode to shuffle this and retbuf for closed delegates over static methods with return buffer
2016-04-30Merge pull request #4687 from kyulee1/zapKyungwoo Lee1-7/+0
ARM64: Enabling Crossgen End-to-End Mscorlib
2016-04-29ARM64: Enabling Crossgen End-to-End MscorlibKyungwoo Lee1-7/+0
Fixes https://github.com/dotnet/coreclr/issues/4350 Fixes https://github.com/dotnet/coreclr/issues/4615 This is a bit large change across VM/Zap/JIT to properly support crossgen scenario. 1. Fix incorrect `ldr` encoding with size. 2. Enforce JIT data following JIT code per method by allocating them together. This guarantees correct PC-relative encoding for such constant data access without fix-up. 3. For the general fix-up data acceess, use `adrp/add` instruction pairs with fix-ups. Two more relocations types are implemented in all sides. 4. Interface dispatch stub is now implemented which is needed for interface call for crossgen. I've verified hello world runs with mscorlib.ni.dll.
2016-04-28ARM64: Update FP-context-pointer in ExceptionFrameSwaroop Sridhar1-4/+2
Update the CurrentContextPointers for FP and LR registers in FaultingExceptionFrame::UpdateRegDisplay() This change fixes a few GCStress=0xC failures on ARM64.
2016-04-12Merge pull request #4074 from kouvel/SoftwareWriteWatchKoundinya Veluri1-2/+2
Implement software write watch and make concurrent GC functional outs…
2016-04-12Implement software write watch and make concurrent GC functional outside WindowsKoundinya Veluri1-2/+2
- Implemented software write watch using write barriers - A new set of write barriers is introduced, each corresponding to an existing one, but which also updates the write watch table. The GC switches to a write watch barrier during concurrent GC, and switches back to a non write watch barrier after the final query for dirty pages. - The write watch table is alloacted along with the card table - Since the card table is used differently, different synchonization is used for the write watch table. The runtime is suspended during resize since that is the most infrequently occuring operation, of that, ResetWriteWatch, and GetWriteWatch. - ResetWriteWatch() doesn't need a suspend, but since the software WW version is much faster than the Windows version, moved it into the suspended region to avoid some synchronization that would otherwise be required - The background calls to GetWriteWatch() don't need or do a suspend. They only need to synchronize with the resize path, not for the purpose of correct functionality, but to not miss dirty pages such that concurrent GC is effective. Miscellaneous: - Fixed runtests.sh to copy mscorlib.dll and delete the Windows version of mscorlib.ni.dll
2016-04-06Fixes Updating Registers for managed frames in stack walksRama Krishnan Raghupathy1-0/+4
2016-03-22ARM64: Implementation of Thread hijacking and thread redirection required ↵Rahul Kumar1-54/+0
for GCSuspension
2016-02-29Fixes issue #2643 and #2731Rahul Kumar1-77/+80
2016-01-27Update license headersdotnet-bot1-4/+3
2015-11-19Fix ARM64 build breakJan Kotas1-3/+5
[tfs-changeset: 1550309]