-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Mono hot reload reorg and beginning (disabled) add method support #61853
Mono hot reload reorg and beginning (disabled) add method support #61853
Commits on Nov 10, 2021
-
checkpoint: allow adding methods to existing classes.
Doesn't do anything yet. And needs more sanity checking (roslyn won't give us virtual or abstract methods, but we should check).
Configuration menu - View commit details
-
Copy full SHA for 36d9693 - Browse repository at this point
Copy the full SHA 36d9693View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0c4aa74 - Browse repository at this point
Copy the full SHA 0c4aa74View commit details -
[metadata] Add mono_metadata_table_num_rows
Returns the number of rows in a metadata table, taking into account metadata update deltas
Configuration menu - View commit details
-
Copy full SHA for c68b895 - Browse repository at this point
Copy the full SHA c68b895View commit details -
Configuration menu - View commit details
-
Copy full SHA for d0b7d77 - Browse repository at this point
Copy the full SHA d0b7d77View commit details -
Param attr lookups for deltas can have param_index == 0
The params are added with a subsequent enclog "add param" function.
Configuration menu - View commit details
-
Copy full SHA for 25e2fb8 - Browse repository at this point
Copy the full SHA 25e2fb8View commit details -
WIP: start adding support for parameter additions.
It "works" in that calling methods appears to work (ie direct token references seem to do the right thing). Primarily this is because the param table additions are not that interesting. All the good stuff is in the method signature (which is just in the blob heap). Presumably anything that actually needs parameter attributes, or anything that uses reflection to look at the parameters, will break.
Configuration menu - View commit details
-
Copy full SHA for 099edb5 - Browse repository at this point
Copy the full SHA 099edb5View commit details -
WIP: add MethodDef -> TypeDef lookup
Allows calling non-public methods, which are now assigned the correct parent
Configuration menu - View commit details
-
Copy full SHA for 6cbee0b - Browse repository at this point
Copy the full SHA 6cbee0bView commit details -
Add hot reload test for lambda capturing this
Lambdas that only capture `this` (and not local variables or arguments) compile to a private instance method in the enclosing class. So it is enough to support EnC deltas that add methods.
Configuration menu - View commit details
-
Copy full SHA for 8cfb9fb - Browse repository at this point
Copy the full SHA 8cfb9fbView commit details -
Configuration menu - View commit details
-
Copy full SHA for 287654e - Browse repository at this point
Copy the full SHA 287654eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 6336699 - Browse repository at this point
Copy the full SHA 6336699View commit details
Commits on Nov 12, 2021
-
[hot_reload] Allocate modifiable tables in DeltaInfo
This is the foundation for a new approach for metadata lookups. Instead of using an immutable model (each lookup traverses every delta to find the most up to date version of each table row), we are going to create a complete updated table for each generation and only do the lookup in the latest exposed generation directly. (This is essentially the CoreCLR model). This commit is just the first foundations: we allocate the tables and copy over the previous generations' rows and zero out any rows that will be inserted. Delta applications and lookups have not been updated yet. As a slight optimization, tables that don't have modified or added rows are not copied from the base image. If a generation modifies or adds rows, from that point forward, each subsequent generation will copy the table. We could be a bit more thrifty with copying, but it will complicate lookups. Also eventually we will try to deallocate the pools for generations that are older than no thread needs anymore. Metadata heaps are still looked up in each delta directly - heap combining does not seem necessary yet.
Configuration menu - View commit details
-
Copy full SHA for cdfb9a7 - Browse repository at this point
Copy the full SHA cdfb9a7View commit details -
[mini] Allow MONO_VERBOSE_METHOD='*:*'
Implement method name wildcard matching for method descriptions Globbing doesn't work because we don't have g_pattern_match_simple in eglib. But a plain '*' wildcard does work.
Configuration menu - View commit details
-
Copy full SHA for 4b250b9 - Browse repository at this point
Copy the full SHA 4b250b9View commit details -
Configuration menu - View commit details
-
Copy full SHA for cdcf003 - Browse repository at this point
Copy the full SHA cdcf003View commit details
Commits on Nov 19, 2021
-
Configuration menu - View commit details
-
Copy full SHA for ac0ac83 - Browse repository at this point
Copy the full SHA ac0ac83View commit details -
cleanup: remove of effective_table calculation
The row index doesn't change in the new scheme, pass it by value
Configuration menu - View commit details
-
Copy full SHA for 25253f7 - Browse repository at this point
Copy the full SHA 25253f7View commit details -
cleanup: Remove relative_delta_index from component API
It's only used internally by the update logic
Configuration menu - View commit details
-
Copy full SHA for 38b17da - Browse repository at this point
Copy the full SHA 38b17daView commit details -
cleanup: Pass DeltaInfo to relative_delta_index
don't compute it from the dmeta image
Configuration menu - View commit details
-
Copy full SHA for d1c1c8e - Browse repository at this point
Copy the full SHA d1c1c8eView commit details -
cleanup: Store a list of DeltaInfo in the BaselineInfo
Instead of storing a list of delta images and then relying on delta_info_lookup to find the DeltaInfo, just store them directly on the baseline info. This changes the cleanup responsibilities a bit. Now we destroy the DeltaInfo when we are iterate through the delta infos when we close the baseline image, instead of when we remove the delta_image_to_info hashtable entry.
Configuration menu - View commit details
-
Copy full SHA for 629075d - Browse repository at this point
Copy the full SHA 629075dView commit details -
Turn off method addition support, for now
Just want to get the cleanups enabled for now
Configuration menu - View commit details
-
Copy full SHA for 3114871 - Browse repository at this point
Copy the full SHA 3114871View commit details
Commits on Nov 29, 2021
-
Configuration menu - View commit details
-
Copy full SHA for 6e56f85 - Browse repository at this point
Copy the full SHA 6e56f85View commit details