85 Commits (e9a9e20801f1b5bbabe795638a6f3b7250027812)

Author SHA1 Message Date
Daniel Grunwald df13f0ce01 Fix #1605: Inline ref locals more aggressively; this is necessary for VB compound assignments. 6 years ago
Daniel Grunwald 7f8689c464 Allow inlining of compiler-generated value-type-temporaries when field accesses are involved. 6 years ago
Daniel Grunwald 752f0de978 Further adjustments to transforms now that copy propagation no longer runs. 6 years ago
Daniel Grunwald 33c7425fa2 Fix several bugs with compound assignments on indexers. 6 years ago
Daniel Grunwald ccdabf2325 Fix a bunch of XmlDoc compiler warnings. 6 years ago
Daniel Grunwald f2151972a0 Redesign CompoundAssignmentInstruction to support an 'Address' mode where we don't implicitly turn an LdObj into an StObj, but instead directly operate on an address. 6 years ago
Siegfried Pammer b03aa488aa Performance: Cache ChainedConstructorCallILOffset in ILFunction to avoid having to scan the method body in every inlining step. Take a shortcut for static ctors, as there cannot be chained ctor calls in static ctors. 6 years ago
Daniel Grunwald 8d99af14c5 Add support for 'ref readonly' return type. 6 years ago
Daniel Grunwald 416425b681 Readonly struct method calls on readonly lvalues don't generate temporaries. 6 years ago
Daniel Grunwald 4ad4f6a232 Fix #882: Don't inline value-type temporaries for setter calls. 6 years ago
Daniel Grunwald eb942b4a21 Fix #1430: Improve performance in ILInlining. 6 years ago
Siegfried Pammer 6e49efd5aa Extend ILInlining to work with StringToInt instructions inside Switch instruction. 6 years ago
Siegfried Pammer c1fca21e8a Make ILRange field private - introduce public API for IL range manipulation. 6 years ago
Daniel Grunwald da5693e605 Fix #1339: fixed statement not decompiled correctly when pinned variable is reset in finally block 6 years ago
Siegfried Pammer ecde53969c Add IsInConstructorInitializer case to ILInlining.OptionsForBlock. 7 years ago
Siegfried Pammer ab8c73b2f7 #1336: Add limit in HandleSimpleArrayInitializer. 7 years ago
Siegfried Pammer 0dac55d584 Add transformation for stackalloc to Span<T>. 7 years ago
Daniel Grunwald 4a3185c823 #907: Add tests 7 years ago
Daniel Grunwald e041454987 Add pretty tests for "yield return" and fix some minor bugs: 7 years ago
Daniel Grunwald dd5845e83d Support short-circuiting operators with dynamic. (e.g. "if (x.A && x.B)" where "x" is dynamic) 7 years ago
Daniel Grunwald 9479e8af13 Support overloaded operator &&/||. 7 years ago
Siegfried Pammer 0bf56ce9ca Add inlining special cases for dynamic compound assignments 7 years ago
Siegfried Pammer 805b9f4bb4 Add missing CallInlineAssign block kind to ILInlining.FindLoadInNext 7 years ago
Daniel Grunwald 6886d2f753 Add support for ?. operator on dynamic. 7 years ago
Daniel Grunwald f86bec4e0c Move named arguments to its own transform. 7 years ago
Daniel Grunwald ca09f09222 Don't use named arguments when IL stack is empty after the stloc. 7 years ago
Daniel Grunwald 21d3881e37 Introduce named arguments only in the statement transform. 7 years ago
Daniel Grunwald 810adea8b4 #1083: Initial implementation of named arguments. 7 years ago
Daniel Grunwald bcc1586f72 ILAst transform for named arguments. 7 years ago
Siegfried Pammer 845c620a9f Implement UserDefinedCompoundAssign 7 years ago
Pent Ploompuu a63e65fae8 Reduced allocations in ILInlining 7 years ago
Siegfried Pammer deb1b6918f Fix bug and typo in IsInConstructorInitializer 7 years ago
Siegfried Pammer 96eb7e07dc Force ILInlining to aggressively inline constructor initializer statements. 7 years ago
Daniel Grunwald 3c720b2030 Implement ?. operator when the result of the call is not used 8 years ago
Daniel Grunwald a8a852b742 Add instructions for modeling the "?." operator in the ILAst. 8 years ago
Daniel Grunwald d949d4e638 Fix #991: explicit represent T->T? conversion in lifted operator calls. 8 years ago
Daniel Grunwald 02db362838 Ensure that StLoc.Value.ResultType == StLoc.Variable.StackType 8 years ago
Siegfried Pammer 349183544a Rename BlockType to BlockKind 8 years ago
Daniel Grunwald faa0c8a805 Aggressively inline in the whole catch-when block, not just on top-level. 8 years ago
Daniel Grunwald 51c895d5a5 Fix inlining into switch instructions. 8 years ago
Siegfried Pammer 1ebc7581d8 Fix IsUsedAsThisPointerInCall: if we deal with an unspecified generic type, we assume it's a value type as ldloca should be allowed as this pointer in those cases. 8 years ago
Daniel Grunwald a6559d941b Allow inlining into object/collection initializers. 8 years ago
Daniel Grunwald 7017c6f6e6 Replace LoopingBlockTransform with StatementTransform. 8 years ago
Daniel Grunwald 6988260ea3 Add ILInlining.IsUsedAsThisPointerInCall(). 8 years ago
Daniel Grunwald f380c29852 Refactor IsGeneratedValueTypeTemporary. 8 years ago
Daniel Grunwald 46e36f7e9a Fix #868: incorrect inlining of readonly fields. 8 years ago
Siegfried Pammer 4f7a479320 Add ILAstWritingOptions parameter to LockInstruction/UsingInstruction.WriteTo, fix merge errors. 8 years ago
Siegfried Pammer fa25b5d2e8 Implement foreach loop detection in StatementBuilder. 8 years ago
Daniel Grunwald 96c6b03d9b [nullables] operator! on bool? 8 years ago
Daniel Grunwald 919219524b Eliminate the dedicated logic.not instruction, and treat it as syntax sugar similar to logic.and/logic.or. 8 years ago