summaryrefslogtreecommitdiff
path: root/src/jit/jitstd/list.h
AgeCommit message (Collapse)AuthorFilesLines
2019-03-29A new way of tracking variables (#23373)Brian Bohe1-1/+1
* Defining VariableLiveRange class * Adding some typedefs to avoid rewriting * Defining VariableLiveDescriptor class * Initializing VariableLiveRange structures before BasicBlock code is being generated * Getting a siVarLoc for variable homes from a given LclVarDsc and stack level * Defining VariableLiveKeeper class * Reporting VariableLiveRanges on changes of variable livenesss or variable homes * Adding USING_VARIABLE_LIVE_RANGE flag to enable disable VariableLiveRange * Send VariableLiveRanges to debugger * Reporting variable homes on prolog * Wrong argument * Miss to change variable homes count before sending them to debugger * Adding dumper of VariableLiveRanges for each blocks and end of code generation * Close all open VaribleLiveRanges on last BasicBlock * Changing order of properties initialization on VariableLiveRange constructor * Type error on assignation * Rephrasing comments, moving dumps and fixing typos * Changing const VARSET_TP* for VARSET_VALARG_TP on args * Variable home was variable location in VariableLiveRange context * Rephrase and rename of VariableLiveKeeper properties * Missing some renames * Adding const where BasicBlock should not be modified * siBeginBlock and siInit have support for debug code for VariableLiveRange and siScope info * Adding USING_VARIABLE_LIVE_RANGE flags on methods definition. * Variable home -> variable location * Renaming and rephrasing names and uses of VariableLiveRange * Moving LiveRangeDumper ctor to class declation * Removing destructors Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Removing blank spaces and reordering functions inside class definition Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Miss to increment the index after refactoring * Logic for keeping the last BasicBlock end IL offset is shared between siScope and VariableLiverange for debug code * Missing to print on debug the last block VariableLiveRanges * Avoid updating VariableLiveRange when unspilling and dying at the same assembly instruction * Rephrasing #ifs and #ifdefs * Calling VariableLiveKeeper in one line * Avoid copying siVarLoc on genSetScopeInfo * Removing unused args from eeSetLVinfo * Changing VariableLiveKeeper ctor * Typo Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Updating VariableLiveDescriptor ctor Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Error on first argument Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Changing reference for pointer Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Renaming assembly offset -> native offset * removing unnecesary comments and asserts Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Update VariableLiveRange dump message Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Moving VariableLiveRanges classes inside VariableLiveKeeper * Wrong flag name * Adding documentation about how we track variables for debug info Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Adding opened issues to doc file Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Changing dump tittle Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Renaming VariableLiveKeeper property Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Update documentation Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Updating comments on flags Signed-off-by: Brian Bohe <brianbohe@gmail.com> * Setting Scope Info as default way of tracking variables for debug info Signed-off-by: Brian Bohe <brianbohe@gmail.com>
2018-01-05Refactor minRegCount and eliminate autoCarol Eidt1-0/+14
When building RefPositions in the TreeNodeInfoInit methods, it is very complex and messy to have the setting of the (debug-only) `minRegCandidateCount` spread all over. Instead, set them for all the RefPositions for a given node after they have been created. This required the ability to create an iterator marking the end of the list, prior to creating the new ones. In the process, eliminated the use of auto from lsra.cpp in the interest of strong typing, as well as avoiding the confusion of having things with `RefPosition` in their name that are actually iterators. These changes originally caused failures with JitStressRegs because `getKillSetForNode()` had side effects - generating Kill `RefPosition`s for `MOD` & `DIV`. This is not actually necessary, and causes problems when the debug-only stress code was calling it *after* all the `RefPosition`s had been created. Also, this had the weird (existing) effect that duplicate kill `RefPosition`s were being generated in the stress case!
2017-06-28Fix remove in list (#12497)Kyungwoo Lee1-2/+10
`remove` uses `erase` to delete the entry in list. Since `erase` returns the next iterator, the iterator shouldn't be increased when the entry is found and deleted.
2016-08-11Reformat jit sources with clang-tidy and formatMichelle McDaniel1-12/+12
This change is the result of running clang-tidy and clang-format on jit sources.
2016-03-13Cleanup emplace/insert implementationMike Danes1-73/+43
2016-03-12Avoid Interval and RefPosition unnecessary initialization and copyingMike Danes1-0/+67
RefPosition() builds a temporary object and initializes it with memset. push_back copies the temporary object to the list node. memset is called again to zero out the newly created RefPosition object. Add emplace methods to jitstd::list to avoid copying. Drop the redundant memset call.
2016-03-08Use jitstd::list in the LSRA.Pat Gavlin1-2/+28
This removes the only usage of ArrayList in the JIT.
2016-01-27Update license headersdotnet-bot1-4/+3
2015-03-26Fix warnings in the jitter codeJan Vorlicek1-4/+4
This change fixes some of the warnings in the jitter code on Linux. With this change combined with an upcoming change in the rest of the codebase, 16 warning disabling options can be removed. The issues in the jitter were: 1) Incorrect typedefs for const_reference and const_pointer (the const was ignored) 2) Member initiazalization order in class constructor didn't correspond to the member order in some classes 3) Objects with vtables were copied via memcpy. While this is intentional, cast of the pointers to void* is required to silence clang warning 4) Comparing values of different enums - there are cases of two enums containing the same values. 5) Casting int to pointer - the cast was legal (forming a handle), adding cast to size_t in between used to fix the warning 6) "static struct" - removed the static keyword 7) Missing return value in methods with _ASSERTE 8) Class name classifier on methods in the .h 9) Specialized template member functions need to be defined out of the class
2015-01-30Initial commit to populate CoreCLR repo dotnet-bot1-0/+1181
[tfs-changeset: 1407945]