Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Large version bubble Support #21727

Merged
merged 30 commits into from
Jan 15, 2019
Merged

Large version bubble Support #21727

merged 30 commits into from
Jan 15, 2019

Conversation

A-And
Copy link

@A-And A-And commented Dec 31, 2018

Opening this up for preliminary comments.
The below changes pass all Pri-0 tests both with and without the /largeversionbubble switch enabled. Without the switch specified the changes don't introduce any functional changes.

These changes treat the entire input as a singular version bubble.

cc @sergiy-k

@mjsabby
Copy link

mjsabby commented Jan 4, 2019

Will there be a runtime data structure that will tell which assemblies belong to which version bubble?

@mjsabby
Copy link

mjsabby commented Jan 4, 2019

Actually it should not be needed for the feature I'm thinking about. I'm thinking that for tiered compilation we should have a heuristic that can tell if it's profitable to rejit a method or not and being in the same version bubble should make it less likely that we should rejit it. Of course that in of itself maybe naive, but then the thought is if we could give MPGO that information then all of it could be done offline.

@A-And
Copy link
Author

A-And commented Jan 7, 2019

@mjsabby - that's a planned feature and is reasonably easy to accomplish. It very likely won't be part of this PR and the exact format specification needs to be determined.

src/utilcode/pedecoder.cpp Outdated Show resolved Hide resolved
@alpencolt
Copy link

@A-And does the LargeVersionBubble option mean that we have to recompile all images on updating of any DLL (like FNV mode)?
Are there any description in documentation?

cc @gbalykov @kvochko @kbaladurin

@A-And
Copy link
Author

A-And commented Jan 9, 2019

@alpencolt - if turned on, yes. This is still early days for the feature, so the changes in this PR only enable the "everything is a large version bubble" scenario.

When the feature is expanded, you will only have to recompile the constituent DLLs of the version bubble in which the change has been made.

The feature hasn't been documented yet (mostly due to it being unfinished and experimental). @jkotas - any thoughts on whether we should add documentation for the use of the feature with a disclaimer stating it's not officially supported?

src/vm/zapsig.cpp Outdated Show resolved Hide resolved
src/vm/zapsig.cpp Outdated Show resolved Hide resolved
@A-And A-And changed the title [WIP] Large version bubble Support Large version bubble Support Jan 10, 2019
src/vm/zapsig.cpp Outdated Show resolved Hide resolved
src/vm/zapsig.cpp Outdated Show resolved Hide resolved
src/vm/ceeload.cpp Outdated Show resolved Hide resolved
src/zap/zapinfo.cpp Outdated Show resolved Hide resolved
src/inc/pedecoder.h Outdated Show resolved Hide resolved
@A-And
Copy link
Author

A-And commented Jan 15, 2019

@dotnet-bot test this please

@A-And
Copy link
Author

A-And commented Jan 15, 2019

@dotnet-bot test Tizen armel Cross Checked Innerloop Build and Test please

@A-And
Copy link
Author

A-And commented Jan 15, 2019

@dotnet-bot test Windows_NT x86 Release Innerloop Build and Test please

@A-And A-And merged commit 9fe3286 into dotnet:master Jan 15, 2019
picenka21 pushed a commit to picenka21/runtime that referenced this pull request Feb 18, 2022
* Preliminary Changes

* Module Index Resolution

* Change infoModule encoding

* Change referencing module in R2R

* Pre-condition Check

* Virtual Method Module Resolution

* Remove Workarounds and add conditional import loading

* Add signature kind module override

* Add ELEMENT_TYPE_MODULE_ZAPSIG

* Add switch to enable large version bubble

* Cleanup

* Change Native header check

* Add large version bubble test

* Add Large Version Bubble Checks

* Cleanup

* Revert unnecessary check

* Change EncodeMethod Version Bubble Condition

* Add Large Version Bubble asserts

* Cleanup

* Add default argument to runtests.py

* Change test PreCommands

* Revert whitespace changes

* Change breaking conditional check

* Streamline Version Bubble test

* Address PR Feedback

* Address PR Feedback dotnet/coreclr#2

* Remove dead code

* Add crossgen-time ifdef


Commit migrated from dotnet/coreclr@9fe3286
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants