Skip to content

Make CalendarData more linker friendly.#14825

Merged
marek-safar merged 1 commit intomono:masterfrom
baulig:work-japanese-calendar
Jun 6, 2019
Merged

Make CalendarData more linker friendly.#14825
marek-safar merged 1 commit intomono:masterfrom
baulig:work-japanese-calendar

Conversation

@baulig
Copy link
Contributor

@baulig baulig commented Jun 5, 2019

See mono/corefx#298 for a description of the
technique that we're using here to make it more linker friendly.

See mono/corefx#298 for a description of the
technique that we're using here to make it more linker friendly.
baulig pushed a commit to baulig/linker that referenced this pull request Jun 5, 2019
This requires mono/corefx#298 and
mono/mono#14825.

We are using the same techinique as previously employed in
dotnet#590 to dynamically remove
the `System.Reflection.Emit` code.

Since the linker does not currently support dead code elimination, it cannot
break down any conditionals inside method bodies.  One trick that we use to
work around this is to move those conditional pieces into separate methods;
then we can give the linker a list of those methods and tell it to replace
their bodies with exceptions.

After this has been done in the BCL, we need to explicitly tell the linker
to turn those method bodies into stubs when `--exclude-feature globalization`.

Ideally, we would want to use `MethodAction.ConvertToStub` instead of `ConvertToThrow`
here, but we'd have to extend the code rewriter first to support methods with
arbitrary return types and parameters.
@baulig
Copy link
Contributor Author

baulig commented Jun 5, 2019

We need to bump CoreFX after it's PR has landed.

marek-safar pushed a commit to dotnet/linker that referenced this pull request Jun 6, 2019
This requires mono/corefx#298 and
mono/mono#14825.

We are using the same techinique as previously employed in
#590 to dynamically remove
the `System.Reflection.Emit` code.

Since the linker does not currently support dead code elimination, it cannot
break down any conditionals inside method bodies.  One trick that we use to
work around this is to move those conditional pieces into separate methods;
then we can give the linker a list of those methods and tell it to replace
their bodies with exceptions.

After this has been done in the BCL, we need to explicitly tell the linker
to turn those method bodies into stubs when `--exclude-feature globalization`.

Ideally, we would want to use `MethodAction.ConvertToStub` instead of `ConvertToThrow`
here, but we'd have to extend the code rewriter first to support methods with
arbitrary return types and parameters.
@marek-safar marek-safar merged commit 3998dc0 into mono:master Jun 6, 2019
@baulig baulig deleted the work-japanese-calendar branch June 6, 2019 16:36
baulig pushed a commit to baulig/linker that referenced this pull request Jun 6, 2019
This requires mono/corefx#298 and
mono/mono#14825.

We are using the same techinique as previously employed in
dotnet#590 to dynamically remove
the `System.Reflection.Emit` code.

Since the linker does not currently support dead code elimination, it cannot
break down any conditionals inside method bodies.  One trick that we use to
work around this is to move those conditional pieces into separate methods;
then we can give the linker a list of those methods and tell it to replace
their bodies with exceptions.

After this has been done in the BCL, we need to explicitly tell the linker
to turn those method bodies into stubs when `--exclude-feature globalization`.

Ideally, we would want to use `MethodAction.ConvertToStub` instead of `ConvertToThrow`
here, but we'd have to extend the code rewriter first to support methods with
arbitrary return types and parameters.

(cherry picked from commit 3eca6ad)
tkapin pushed a commit to tkapin/runtime that referenced this pull request Jan 31, 2023
This requires mono/corefx#298 and
mono/mono#14825.

We are using the same techinique as previously employed in
dotnet/linker#590 to dynamically remove
the `System.Reflection.Emit` code.

Since the linker does not currently support dead code elimination, it cannot
break down any conditionals inside method bodies.  One trick that we use to
work around this is to move those conditional pieces into separate methods;
then we can give the linker a list of those methods and tell it to replace
their bodies with exceptions.

After this has been done in the BCL, we need to explicitly tell the linker
to turn those method bodies into stubs when `--exclude-feature globalization`.

Ideally, we would want to use `MethodAction.ConvertToStub` instead of `ConvertToThrow`
here, but we'd have to extend the code rewriter first to support methods with
arbitrary return types and parameters.


Commit migrated from dotnet/linker@3eca6ad
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants