Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corert.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-11-14Compile "Module" code manager for ProjectN only (#4924)Jan Kotas
2017-11-03ProjectX: New GetOsModuleHandle API to ICodeManagerdotnet-bot
The new GetOsModuleHandle API is used by the StackTraceMetadata code in both ProjectN and ProjectX. [tfs-changeset: 1680143]
2017-09-13These changes provide a way for ProjectX/CoreRT to get the target of custom ↵Fadi Hanna
instantiating unboxing stubs. The implementation uses a general purpose infrastructure that can associate custom data to methods with unwind info, given the fact that unwind info lookups are very fast. Similar to GC info and EH info, this implementation now provides a way to associate any custom data to methods, by adding a flag and a reloc to the data in the method's unwind info. The custom data that can be attached to methods begin with a flag (indicating what data follows), followed by data. Right now, the only custom data we have for methods are unboxing stub target pointers. The dependency analysis models this custom data using a new node type: MethodAssociatedDataNode. The custom data (when it exists) can be be retrieved using a new API on ICodeManager. The changes also include all the necessary plumbing to link custom data nodes symbols for PX (given that it's UTC that emits the unwind info) [tfs-changeset: 1673664]
2016-11-22Implement Exception.get_StackTrace (#2240)Michal Strehovský
This relies on the existing logic that tries DIA first, and then falls back to reflection metadata to find method names. If fallback fails, you get RVAs. Conveniently, the DIA path doesn't even try to run.
2016-11-01Rename ModuleManager to TypeManagerJan Kotas
[tfs-changeset: 1636196]
2016-08-18 Here are the changes to remove generic instance descs from the binder ↵Peter Sollich
and the runtime. Overview - here's what generic instance descs were used for and how this functionality is provided now: - They were needed to support generic unification. For the release scenario, this is no longer necessary because global analysis places generics. For the F5 scenario, we will again have generic unification, but it will be done differently and is not in this code review yet. - They were used for GC reporting of statics on generic types. Statics on statically built generic types are now merged into the static GC desc of their containing module. Statics on dynamic types are reported via two new lists on the RuntimeInstance class, one for regular GC statics, the other one for thread statics. - They were also used to hold statics information for dynamically loaded types. This information is now attached to the EEType instead. - Similarly, generic instance descs held information about the open generic type, the instantiation parameter, and the parameter variance information. This information is now also attached to the EEType. Detail notes: - EEType.Constants.cs, EEType.cs, eetype.h, eetype.inl: Provide for attaching generic and static information to eetypes. The latter is only used for dynamic types. - MiscHelpers.cpp, module.cpp, module.h, RuntimeInstance.cpp/.h: Remove GenericInstanceDesc logic, provide equivalent functionality. - rhbinder.h, ZapHeaders.cpp: Bump version number, remove GenericInstanceDesc related fields from module header. - EETypeCreator.cs: logic to set rareFlags appropriately for attached statics. - TypeLoaderEnvironment.StaticsLookup.cs: the logic turned out to be wrong for the TLS index - the binder encoded always zero for the index, which cannot work at runtime. So I changed the binder (see comment below), and I also changed the runtime logic to apply an indirection. For consistency, I did the same for the thread static offset - this isn't necessary now but may become necessary for the F5 scenario. - common.h: Add separateCompilation flag to g_BindOptions as prep work for F5 scenario. - CompactLayoutReader.cpp: for release scenario, merge generic statics and their GC descs early rather than relying on generic instance descs. - MethodTable.h, MakePdb.cpp, MdilModule.cpp/.h: attach "InstantiatedTypeZapNodes" data structure to method table rather than finding it via a hash table lookup. This is just a cleanup change. - MdilModule.cpp/.h: Remove generic instance desc logic, add logic to generate the "GenericComposition" data structure instead, attach that and the generic definition to eetypes, add a rare flag for eetypes with sealed virtuals, add indirection cells where we used to indirect through generic instance descs, remove unused "GetReadonlyBlobNode" method, change encoding of native layout info for thread statics (see comments above for TypeLoaderEnvironment.StaticsLookup.cs). - ZapImage.cpp/.h: remove generic instance desc sections. - various copies of rhbind.exe and rhbindui.dll: these are used to build mrt100_app.dll. The change updates rhbind.exe to put the new version number into the module header of mrt100_app.dll. [tfs-changeset: 1622930]
2016-06-15ICodeManager refactoring to support separated funcletsScott Mosier
Today, we assume that funclets are separate methods, in the sense that they get unique unwind information, but that's where the separation ends. They are still tightly coupled to their "parent method" in other ways. One of those couplings is the fact that they must be laid out contiguously with the parent method. These changes update the EH dispatcher and the ICodeManager abstraction to allow for funclets to be disconnected from their parent method. This mostly falls into the category of using addresses instead of offsets when referring to handlers and when handling the special case of "remapping" a hardware fault location to a safe point in an associated handler. [tfs-changeset: 1612757]
2016-03-08Enable hardware exception handling on WindowsJan Kotas
2016-02-27Delete SimpleModule registrationJan Kotas
2016-02-27Multi-module compilation preparationSimon Nattress
Add a new command-line switch to ILC: /multifile. When specified, only the assemblies passed as input will have methods compiled. Referenced types / methods from other assemblies are not compiled into the output object file. This switch is most likely temporary as we hone our compilation story and implementation. Each managed module adds pointers to the start and end of a module global data header to a custom section of the object file, .modules$I. These entries are merged (on Windows, OSX / Linux needs a tweak to CLI first) at link time producing a list of module headers. In StartupCodeHelpers.cs, initialize global tables from each module using the list of pointers that was written to .modules$I. This data is discovered through two exports (__modules_a and __modules_z) which through linker section merging, are placed either side of the module header pointers in the final binary. Alter interface dispatch to store its dispatch map table as an ArrayOfEmbeddedDataNode and place it in the module header list. This allows each module's EETypes to continue using index-based lookup of dispatch maps. Add a new field to EETypes which points at a ModuleManager* through an indirection cell. This indirection cell is filled in at runtime initialization and allows a type to find its dispatch map table. ModuleHeaderSection.cs|h files define the section headers currently supported. ModuleHeaderSection's enumerands are in line with the plan for ReadyToRun. Moved the module info lookup out of the bootstrapping code and into the runtime Place compilation module group logic to a dedicated set of classes, CompilationModuleGroup, MultiFileCompilationModuleGroup, and SingleFileCompilationModuleGroup which together abstract the logic for decisions about which types / methods should be included in compilation in single vs multi file. Extract an interface from Compilation for the methods that root methods / types / Main so CompilationModuleGroup can root things without having to know about the Compilation class.
2016-02-08Fix RhpLoopHijack to stop trashing important registersScott Mosier
The loop hijack worker routine is not honoring the contract that it should be. Namely, the runtime is not allowed to trash any registers in our worker (except r12 on ARM). The two big oversights were scratch FP registers and the flags registers. I have also added a per-module map from loop index to target address (thus requiring all the shash.h includes). This primarily helps gcstress throughput because the loop indirection cell address calculation ends up being surprisingly lengthy. I considered the other obvious approach of "back-patching" the loop indirection cell in the gcstress case (normal loop hijacking does this, but under gcstress, we do not). However, I ended up preferring this because it could help GC suspension latency in normal operation. [tfs-changeset: 1573401]
2016-02-05Delete obsoleted codeJan Kotas
We have been keeping obsoleted code in the runtime for compatibility with older versions. The runtime version just got bumped up - it allows us to delete the obsolete code before the next compatibility band starts. [tfs-changeset: 1572810]
2016-01-28Update licensing headersdotnet-bot
2016-01-26MRT StackFrameIterator improvementsChris Ahna
These changes are targeted at completing/hardening the runtime's support for the new UniversalTransition and CallDescr thunks and also clarifying the invariants that hold throughout stack walker operation. [tfs-changeset: 1568546]
2015-12-05Remove static_check.h, remove unused method on Module class.Scott Mosier
Switched all uses of STATIC_ASSERT to static_assert and removed the static_check.h header, since it wasn't very useful. Removed orphaned method from Module class.
2015-12-01Fix a few small issuesScott Mosier
GC code for RO segments had some bugs because it had never been tested. CoreCLR doesn't use RO segments. The fix is to update sorted_table to keep both the segment memory and the segment descriptors separately as key/value pairs. This isn't needed for normal segments because they are the same, but with RO segments the memory is in an executable file, while the descriptor is dynamically allocated. I also changed "insure" to "ensure". Changed HndEnumHandles to use a bool parameter instead of BOOL. This side-steps some differences in the definition of BOOL that led to some compilation issues. Port LABELED_RETURN_ADDRESS changes from PN tree. Fixed a couple of DAC issues.
2015-11-20Changes required to integrate code back into ProjectN treeScott Mosier
2015-10-24Enable compilation of the runtime on LinuxJan Vorlicek
This change enables compilation of the runtime excluding the PAL layer on Linux. Most of the changes are just to make it build with clang that's more strict w.r.t. the C++11 standard. In addition to that, I have removed our implementation of the new / delete operators and replaced all calls to new in the runtime by new (nothrow).
2015-10-01Initial population of CoreRT Runtime files.dotnet-bot