1. 08 9月, 2020 4 次提交
  2. 07 9月, 2020 5 次提交
  3. 06 9月, 2020 1 次提交
  4. 05 9月, 2020 30 次提交
    • M
      [interp] Add basic block support (#41574) · 1d3f820c
      monojenkins 提交于
      This PR makes basic blocks a fundamental part of the code generation machinery. Before this change, there wasn't really any notion of basic blocks, there was a single list of instructions. With this change, we emit instructions inside basic blocks which are linked together. These basic blocks are iterated one at a time when doing optimization passes or emitting the final code. Currently, the origin of all basic blocks is IL code (they originate from branch targets and exception clauses) and we might never support creation of additional bblocks (since we could just create more complex instructions, which would also result in faster code). The bblocks will be emitted in the final code in the same order as they appear in IL code. This order is maintained through `next_bb` link.
      
      Since the list of bblocks was completely changed, some fixes were required for debugging support. Some tests seemed to pass by chance, since we didn't emit MINT_SDB_INTR_LOC in the same locations as jit. There are probably still some discrepancies there.
      
      This PR enables inlining of methods with multiple basic blocks. Currently, this might regress performance because we don't merge some basic blocks that we could (for method start), reducing benefits from cprop passes operating on single basic blocks. We will soon add a pass that traverses the list of basic blocks which eliminates dead basic blocks, merging any adjacent ones.
      Co-authored-by: NBrzVlad <BrzVlad@users.noreply.github.com>
      1d3f820c
    • G
    • G
      refine obsolete messages (#41877) · 385c563f
      Genevieve Warren 提交于
      385c563f
    • L
      Suppress C5105 warning on build (#41900) · 1ccfb408
      Levi Broderick 提交于
      1ccfb408
    • A
      [wasm][debugger] Small improvements to fail gracefully (#41713) · 2e4e75bd
      Ankit Jain 提交于
      * [wasm][debugger] Instead of failing completely, skip the problematic
      
      .. property. Some times we might not get a `value`, or `name`, or it
      might instead have a `get`. Handle those cases correctly when combining
      the name/value/get objects.
      
      This showed up in case of a `MulticastDelegate`, where we didn't have a
      `value`, and ended up incorrectly combining the name/value objects, thus
      returning incorrect locals.
      
      * [wasm][debugger] Handle MulticastDelegate, and events
      
      - Essentially we just surface these as a symbol showing the type name
      
      * [wasm][debugger] Fail gracefully when vt could not be expanded
      
      * [wasm][debugger] Handle invalid scope ids
      
      scope<0, or scope too high
      
      - This does get filtered at the proxy level, but app side should be able
      to handle it too
      
      * [wasm][debugger] Handle invalid/missing/failed value descriptions
      
      - Eg. missing because of invalid param/local id, or value description
      failed because of some as yet unsupported type
      
      * [wasm][debugger] Fix frame indexing
      
      - `collect_frames`, `list_frames` - both iterate over stack frames. They
      skip some frames. This debug proxy assigns a simple index to each of the
      received(filtered) frames.
      
          - so, if we had `[ frame0, (skipped frame1), frame2 ]`, the proxy will
          have `[ frame0(index:0), frame2(index:1) ]`
      
      - `describe_variables_on_frame` also iterates over stack frames, and
      tries to find a given frame by an index. And this index is what the
      proxy had assigned.
          - because some frames were skipped, this function also needs to skip
          the *same* ones, so that it can find the intended frame.
      
          - Instead of trying to keep these in sync, here the indexing is
          changed to be the real index found as we iterate over the frames.
          - And the proxy just uses that.
          - So, we will have `[ frame0(index:0), frame2(index:2) ]`
      
      This showed up in a trace in aspnetcore, which was called via
      reflection. And that frame didn't get added to the list because it was
      not `MONO_WRAPPER_NONE`, which caused the indexing to get out of sync.
      
      Fixes: https://github.com/dotnet/runtime/issues/41818
      
      * fix warning: remove unused var
      
      * rebase on master, fix errors
      
      * Make frame indices returned from debugger.c, 0-based
      
      - Earlier this 1-based, and it was being adjusted in `MonoProxy`.
      - Based on @lewing's suggestion, changing this to be 0-based in
      debugger.c, itself, thus removing the need to "fixup" in `MonoProxy`.
      
      * dotnet-format fixes
      2e4e75bd
    • A
      [wasm][debugger] Show actual data for boxed values (#41562) · 4fd87bc4
      Ankit Jain 提交于
      * [wasm][debugger] Add support for Nullable<T>
      
      Return the value, or null.
      
      Fixes https://github.com/mono/mono/issues/20310
      
      * Address review feedback - merge functions
      
      * [wasm][debugger] run dotnet-format on the debugger test app
      
      * [wasm][debugger] simplify function sig, based on usage
      
      - addresses review feedback from @lewing
      
      * [wasm][debugger] Simplify the function further, based on @lewing's
      
      .. excellent suggestion!
      
      * [wasm][debugger] Show actual data for boxed values
      
      Eg. `object o = "foobar"`
      
      This will show the string `"foobar"`, instead of an object, in the
      debugger.
      4fd87bc4
    • A
      [wasm][debugger] Add support for Nullable<T> (#41559) · 66f4b4b7
      Ankit Jain 提交于
      * [wasm][debugger] Add support for Nullable<T>
      
      Return the value, or null.
      
      Fixes https://github.com/mono/mono/issues/20310
      
      * Address review feedback - merge functions
      
      * [wasm][debugger] run dotnet-format on the debugger test app
      
      * [wasm][debugger] simplify function sig, based on usage
      
      - addresses review feedback from @lewing
      
      * [wasm][debugger] Simplify the function further, based on @lewing's
      
      .. excellent suggestion!
      66f4b4b7
    • T
    • S
      Bundle assemblies at 4K for linux arm64 (#41809) · 9e22b9fc
      Sven Boemer 提交于
      * Bundle assemblies at 4K for linux arm64
      
      * Add arch to bundler trace output
      
      * PR feedback
      
      * Remove extra overload
      
      * Update comment
      
      * Fix RID computation
      9e22b9fc
    • H
      Add more Half methods to BitConverter (#41789) · d66f88b3
      Huo Yaoyuan 提交于
      * Add GetBytes, TryWriteBytes, ToHalf overloads for Half.
      
      * Add ref source in System.Runtime.
      
      * Add basic tests.
      
      * Add array and span tests in BitConverter.
      
      * Add xmldoc for BitConverter.GetBytes and TryWriteBytes.
      
      * Add xmldoc for BitConverter.ToXXX.
      
      * Add xmldoc for BitConverter.BitsTo.
      d66f88b3
    • J
      Fix covariant returns validation (#41874) · b0289947
      Jan Vorlicek 提交于
      * Fix covariant returns validation
      
      Recent fix to a problem with covariant returns validation has introduced
      another problem related to code versioning. The validation method is now
      called too late in the type load process which causes problem in
      crossgening or in case code versioning is disabled.
      
      This change fixes it by splitting the return type verification and
      mutating changes like vtable slot updates into two separate phases.
      
      * Fix missing precondition for calling SetRequiresCovariantReturnTypeChecking
      b0289947
    • S
      SingleFile: Enable hammer servicing (#41847) · f8618ea2
      Swaroop Sridhar 提交于
      * SingleFile: Enable hammer servicing
      
      This change enables hammer servicing to work on single-file apps.
      
      The runtime resolves assemblies in the bundle even before attempting to resolve using the TPA.
      This masks any entries in the TPA that correspond to hammer-serviced DLLs.
      This change fixes this problem: If a file is resolved to the servicing directory, it is disabled in the bundle directory.
      
      Testing: Added automated tests on Unix systems, manually tested on Windows.
      
      Fixes #36031
      f8618ea2
    • S
      Disable LoadAsync_CancelDuringLoad_CompletesAsCanceled test on mono (#41878) · c079dd2b
      Santiago Fernandez Madero 提交于
      * Disable LoadAsync_CancelDuringLoad_CompletesAsCanceled test on mono
      
      * Update src/libraries/System.Windows.Extensions/tests/System/Media/SoundPlayerTests.cs
      Co-authored-by: NAlexander Köplinger <alex.koeplinger@outlook.com>
      Co-authored-by: NAlexander Köplinger <alex.koeplinger@outlook.com>
      c079dd2b
    • J
      Update msftbot configuration contacts (#41903) · 1b008c14
      Jeff Handley 提交于
      1b008c14
    • A
      Simplify webassembly targets (#41869) · e658ddbc
      Alexander Köplinger 提交于
      Add a subset for compiling only the wasm runtime: `mono.wasmruntime`
      This allows us to rebuild the wasm runtime without building the full libraries subset.
      
      Updated documentation with new guidance.
      
      Updated how we build the dotnet.timezones.blat.
      e658ddbc
    • M
      [wasm] Mark System.Console APIs as unsupported on Browser (#41184) · a9f6fd69
      Mitchell Hwang 提交于
      * [wasm] Mark System.Console APIs as unsupported on Browser
      
      * System.Console remove unsupported attribute from Console.Clear()
      
      * System.Console mark SetIn as unsupported on Browser
      
      * System.Console move UnsupportedOSPlatform attributes down to the accessor
      Co-authored-by: NMitchell Hwang <mitchell.hwang@microsoft.com>
      a9f6fd69
    • M
      5ae76c50
    • M
      [wasm] Mark System.IO.IsolatedStorage APIs as unsupported on Browser (#41700) · 3c1b48ee
      Mitchell Hwang 提交于
      * [wasm] System.IO.IsolatedStorage enable platform attributes
      
      * Mark System.IO.IsolatedStorage Unsupported at assembly level
      Co-authored-by: NMitchell Hwang <mitchell.hwang@microsoft.com>
      3c1b48ee
    • M
      [wasm] Mark System.IO.FileSystem.Watcher APIs as unsupported on Browser (#41682) · c49aab6b
      Mitchell Hwang 提交于
      * [wasm] System.IO.FileSystem.Watcher enable platform attributes
      
      * Mark System.IO.FileSystem.Watcher unsupported at assembly level
      Co-authored-by: NMitchell Hwang <mitchell.hwang@microsoft.com>
      c49aab6b
    • J
      Unconditionally build the cross-os DAC (#41852) · 22927dd3
      Juan Hoyos 提交于
      * Unconditionally build the cross-os DAC.
      22927dd3
    • T
      improve test dynamic certificate generation (#41659) · 622127eb
      Tomas Weinfurt 提交于
      * improve test dynamic certificate generation
      
      * feedback from review
      622127eb
    • T
    • T
      hold ref to temp keychain on OSX to avoild premature cleanup (#41787) · 54633014
      Tomas Weinfurt 提交于
      * hold ref to temp keychain on OSX to avoild premature cleanup
      
      * feedback from review
      54633014
    • Z
      964766ad
    • S
      Add libraries on mono outerloop build (#41712) · ddbb03a5
      Santiago Fernandez Madero 提交于
      * Add libraries on mono outerloop build
      
      * Flow testscope to helix and default build tfm to netcoreappcurrent
      
      * Adjust correlation payload conditions and PR Feedback
      
      * Disable scheduled runs
      
      * Revert renaming of coreclr outerloop yml
      ddbb03a5
    • M
      [wasm] Mark System.IO.Compression APIs as unsupported on Browser (#41683) · 3d1f2ef9
      Mitchell Hwang 提交于
      * [wasm] System.IO.Compression.Brotli enable platform attributes
      
      * Mark System.IO.Compression.Brotli unsupported at assembly level
      Co-authored-by: NMitchell Hwang <mitchell.hwang@microsoft.com>
      3d1f2ef9
    • E
      [mono] Fix Android and iOS samples (#41870) · 354008c1
      Egor Bogatov 提交于
      Fixes broken samples for Android and iOS.
      `InvariantGlobalization` fixes the issue described in https://github.com/dotnet/runtime/issues/41866 because otherwise ILLink fails on Interop.Globalization.EnumCalendarInfo (with a function pointer).
      354008c1
    • T
      Incorporate timezone data from runtime-assets (#41524) · 69c1038b
      Tammy Qiu 提交于
      * Incorporate timezone data from runtime-assets
      * Change CreateWasmBundle name & create separate timezones.props file
      69c1038b
    • A
      [wasm][debugger] Add support for surfacing inherited members (#41480) · b25b2bc6
      Ankit Jain 提交于
      * [wasm][debugger][tests] Update to use `TDateTime`
      
      - this ensures that we check the datetime, and some property getters on
      it, wherever we have a datetime.
      
      * [wasm][debugger][tests] Add labels to more checks
      
      * [wasm][debugger] Add support for surfacing inherited members
      
      - surface inherited fields, and properties
      - we try to support `Runtime.getProperties`'s two arguments:
          - `ownProperties`, and `accessorsOnly`
      
          - `ownProperties`: for JS, this means return only the object's own
          members (not inherited ones)
          - `accessorsOnly`: for JS, this means return all the getters
      
      Actual implementation:
      
      - In practice, VSCode, and Chrome debugger seem to only send
      `{ ownProperties: true, accessorsOnly: false }`,
      and `{ ownProperties: false, accessorsOnly: true }`. The combination of
      which means - that we don't return any inherited fields!
      
      - But we want to show inherited fields too, so to get that behavior we
      essentially *ignore* `ownProperties`. IOW,
      
          - `ownProperties`: we return all fields, and properties
          - `accessorsOnly`: we return only the getters, including the
          inherited ones
      
      - Another thing to note is the case for auto-properties
          - these have a backing field
          - and we usually return the backing field's value, instead of
          returning a getter
          - To continue with that, auto-properties are *not* returned for
          `accessorsOnly`
      
      - The code in `mini-wasm-debugger.c` does handle these two arguments,
      but that is currently disabled by not passing the args to debugger.c at
      all
          - Instead, we get the *full* list of members, and try to filter it
          in `library_mono.js`
          - which includes handling property overrides, or shadowing by new
          properties/fields in derived classes
      
      * [wasm][debugger][tests] Fix simple warnings
      
      * [wasm][debugger][tests] Fix warnings introduced in this PR
      
      * [wasm][debugger][tests] Fix indentation
      
      * [wasm][debugger] Correctly handle local structs in async methods
      
      - When we have a struct local in an async instance method, it doesn't
      get expanded, since we have a containerId (the async object), and we can
      expand/access it later.
      
      - When the IDE asks us to expand it with `{accessorPropertiesOnly: true}`:
          - we get the expanded json, but `_filter_automatic_properties` tries
          to return just the accessors, but that doesn't handle the expanded
          members of nested structs!
          - That is done in `extract_and_cache_value_types`, which is run *after*
          `_filter_automatic_properties`, but by that time we have already
          lost the expanded members!
      
          - So, `_get_vt_properties` fails with `Unknown valuetype id`,
          because it doesn't have anything to return at that point.
      
      - This is being solved by ignoring the getProperties args in case of
      expanding valuetypes.
          - that means that we can correctly extract, and cache the whole
          object.
          - And after that, we can return accessors/others, based on the args.
      
      * [wasm][debugger] Fix warnings in debugger-test-app, and turn on warnAsError
      
      * For some cases, debugger seems to give the actual method name instead of MoveNext for async methods
      b25b2bc6
    • M