[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts - #90832

Merged
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1
Aug 19, 2023
Merged

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts#90832
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Aug 18, 2023

Copy link
Copy Markdown
Contributor

Backport of #90825 to release/8.0-rc1

/cc @lambdageek

Customer Impact

Customers are not able to use the new (opt-in) managed static registrar on .NET for iOS.

The registrar relies on an IL code generator to create some new managed methods that use an IL pattern that is different from what Roslyn normally generates. As a result, the IL has uncovered a bug in Mono's code generator. As a result certain equality comparisons between RuntimeTypeHandle values are compiled incorrectly and give incorrect results. The impact is that the new managed static registrar creates apps that do not work.

Testing

Manual testing.

Risk

Low/Medium. The code generator fix may have impact on other scenarios that use the Mono JIT or AOT compiler (Android, WASM). However, if this fix itself introduces a new codegen bug, it can be reverted, and .NET for iOS can fall back to the old registrar, or they can try to alter the IL pattern that their custom tool generates.

Without this, if some previous instruction already created a vreg for
ins->dest (for example if we are doing multiple passes over the basic
block because `restart == TRUE`) we will use an incorrect vreg when
decomposing the current VMOVE
Fixes#90800
This is used by a CreateSpan optimization that needs access to the
MonoClassField*
For other cases of a bare LDTOKEN (such as hand-written IL that calls
LDTOKEN on a type but doesn't follow it up with a call to
`GetTypeFromHandle` leave the opcode as a VMOVE (from the
`EMIT_NEW_TEMPLOAD` above))
@carlossanlop

Copy link
Copy Markdown
Contributor

We already started the builds for RC1. Please fill out the template, send an email to Tactics requesting approval, get a code review sign off, and please let me know when the CI finishes so I can ask if we can still merge.

@lambdageeklambdageek added this to the 8.0.0 milestone Aug 18, 2023
@lambdageeklambdageek added the Servicing-consider Issue for next servicing release review label Aug 18, 2023
@lewinglewing added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Aug 19, 2023
@carlossanlop
carlossanlop merged commit 6aef01d into release/8.0-rc1Aug 19, 2023
@carlossanlop
carlossanlop deleted the backport/pr-90825-to-release/8.0-rc1 branch August 19, 2023 02:33
@radicalradical mentioned this pull request Aug 28, 2023
@ghostghost locked as resolved and limited conversation to collaborators Sep 18, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Codegen-JIT-monoServicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@carlossanlop@lewing@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts - #90832

Merged
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1
Aug 19, 2023
Merged

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts#90832
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Aug 18, 2023

Copy link
Copy Markdown
Contributor

Backport of #90825 to release/8.0-rc1

/cc @lambdageek

Customer Impact

Customers are not able to use the new (opt-in) managed static registrar on .NET for iOS.

The registrar relies on an IL code generator to create some new managed methods that use an IL pattern that is different from what Roslyn normally generates. As a result, the IL has uncovered a bug in Mono's code generator. As a result certain equality comparisons between RuntimeTypeHandle values are compiled incorrectly and give incorrect results. The impact is that the new managed static registrar creates apps that do not work.

Testing

Manual testing.

Risk

Low/Medium. The code generator fix may have impact on other scenarios that use the Mono JIT or AOT compiler (Android, WASM). However, if this fix itself introduces a new codegen bug, it can be reverted, and .NET for iOS can fall back to the old registrar, or they can try to alter the IL pattern that their custom tool generates.

Without this, if some previous instruction already created a vreg for
ins->dest (for example if we are doing multiple passes over the basic
block because `restart == TRUE`) we will use an incorrect vreg when
decomposing the current VMOVE
Fixes#90800
This is used by a CreateSpan optimization that needs access to the
MonoClassField*
For other cases of a bare LDTOKEN (such as hand-written IL that calls
LDTOKEN on a type but doesn't follow it up with a call to
`GetTypeFromHandle` leave the opcode as a VMOVE (from the
`EMIT_NEW_TEMPLOAD` above))
@carlossanlop

Copy link
Copy Markdown
Contributor

We already started the builds for RC1. Please fill out the template, send an email to Tactics requesting approval, get a code review sign off, and please let me know when the CI finishes so I can ask if we can still merge.

@lambdageeklambdageek added this to the 8.0.0 milestone Aug 18, 2023
@lambdageeklambdageek added the Servicing-consider Issue for next servicing release review label Aug 18, 2023
@lewinglewing added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Aug 19, 2023
@carlossanlop
carlossanlop merged commit 6aef01d into release/8.0-rc1Aug 19, 2023
@carlossanlop
carlossanlop deleted the backport/pr-90825-to-release/8.0-rc1 branch August 19, 2023 02:33
@radicalradical mentioned this pull request Aug 28, 2023
@ghostghost locked as resolved and limited conversation to collaborators Sep 18, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Codegen-JIT-monoServicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@carlossanlop@lewing@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts - #90832

Merged
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1
Aug 19, 2023
Merged

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts#90832
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Aug 18, 2023

Copy link
Copy Markdown
Contributor

Backport of #90825 to release/8.0-rc1

/cc @lambdageek

Customer Impact

Customers are not able to use the new (opt-in) managed static registrar on .NET for iOS.

The registrar relies on an IL code generator to create some new managed methods that use an IL pattern that is different from what Roslyn normally generates. As a result, the IL has uncovered a bug in Mono's code generator. As a result certain equality comparisons between RuntimeTypeHandle values are compiled incorrectly and give incorrect results. The impact is that the new managed static registrar creates apps that do not work.

Testing

Manual testing.

Risk

Low/Medium. The code generator fix may have impact on other scenarios that use the Mono JIT or AOT compiler (Android, WASM). However, if this fix itself introduces a new codegen bug, it can be reverted, and .NET for iOS can fall back to the old registrar, or they can try to alter the IL pattern that their custom tool generates.

Without this, if some previous instruction already created a vreg for
ins->dest (for example if we are doing multiple passes over the basic
block because `restart == TRUE`) we will use an incorrect vreg when
decomposing the current VMOVE
Fixes#90800
This is used by a CreateSpan optimization that needs access to the
MonoClassField*
For other cases of a bare LDTOKEN (such as hand-written IL that calls
LDTOKEN on a type but doesn't follow it up with a call to
`GetTypeFromHandle` leave the opcode as a VMOVE (from the
`EMIT_NEW_TEMPLOAD` above))
@carlossanlop

Copy link
Copy Markdown
Contributor

We already started the builds for RC1. Please fill out the template, send an email to Tactics requesting approval, get a code review sign off, and please let me know when the CI finishes so I can ask if we can still merge.

@lambdageeklambdageek added this to the 8.0.0 milestone Aug 18, 2023
@lambdageeklambdageek added the Servicing-consider Issue for next servicing release review label Aug 18, 2023
@lewinglewing added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Aug 19, 2023
@carlossanlop
carlossanlop merged commit 6aef01d into release/8.0-rc1Aug 19, 2023
@carlossanlop
carlossanlop deleted the backport/pr-90825-to-release/8.0-rc1 branch August 19, 2023 02:33
@radicalradical mentioned this pull request Aug 28, 2023
@ghostghost locked as resolved and limited conversation to collaborators Sep 18, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Codegen-JIT-monoServicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@carlossanlop@lewing@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts - #90832

Merged
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1
Aug 19, 2023
Merged

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts#90832
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Aug 18, 2023

Copy link
Copy Markdown
Contributor

Backport of #90825 to release/8.0-rc1

/cc @lambdageek

Customer Impact

Customers are not able to use the new (opt-in) managed static registrar on .NET for iOS.

The registrar relies on an IL code generator to create some new managed methods that use an IL pattern that is different from what Roslyn normally generates. As a result, the IL has uncovered a bug in Mono's code generator. As a result certain equality comparisons between RuntimeTypeHandle values are compiled incorrectly and give incorrect results. The impact is that the new managed static registrar creates apps that do not work.

Testing

Manual testing.

Risk

Low/Medium. The code generator fix may have impact on other scenarios that use the Mono JIT or AOT compiler (Android, WASM). However, if this fix itself introduces a new codegen bug, it can be reverted, and .NET for iOS can fall back to the old registrar, or they can try to alter the IL pattern that their custom tool generates.

Without this, if some previous instruction already created a vreg for
ins->dest (for example if we are doing multiple passes over the basic
block because `restart == TRUE`) we will use an incorrect vreg when
decomposing the current VMOVE
Fixes#90800
This is used by a CreateSpan optimization that needs access to the
MonoClassField*
For other cases of a bare LDTOKEN (such as hand-written IL that calls
LDTOKEN on a type but doesn't follow it up with a call to
`GetTypeFromHandle` leave the opcode as a VMOVE (from the
`EMIT_NEW_TEMPLOAD` above))
@carlossanlop

Copy link
Copy Markdown
Contributor

We already started the builds for RC1. Please fill out the template, send an email to Tactics requesting approval, get a code review sign off, and please let me know when the CI finishes so I can ask if we can still merge.

@lambdageeklambdageek added this to the 8.0.0 milestone Aug 18, 2023
@lambdageeklambdageek added the Servicing-consider Issue for next servicing release review label Aug 18, 2023
@lewinglewing added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Aug 19, 2023
@carlossanlop
carlossanlop merged commit 6aef01d into release/8.0-rc1Aug 19, 2023
@carlossanlop
carlossanlop deleted the backport/pr-90825-to-release/8.0-rc1 branch August 19, 2023 02:33
@radicalradical mentioned this pull request Aug 28, 2023
@ghostghost locked as resolved and limited conversation to collaborators Sep 18, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Codegen-JIT-monoServicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@carlossanlop@lewing@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts - #90832

Merged
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1
Aug 19, 2023
Merged

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts#90832
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Aug 18, 2023

Copy link
Copy Markdown
Contributor

Backport of #90825 to release/8.0-rc1

/cc @lambdageek

Customer Impact

Customers are not able to use the new (opt-in) managed static registrar on .NET for iOS.

The registrar relies on an IL code generator to create some new managed methods that use an IL pattern that is different from what Roslyn normally generates. As a result, the IL has uncovered a bug in Mono's code generator. As a result certain equality comparisons between RuntimeTypeHandle values are compiled incorrectly and give incorrect results. The impact is that the new managed static registrar creates apps that do not work.

Testing

Manual testing.

Risk

Low/Medium. The code generator fix may have impact on other scenarios that use the Mono JIT or AOT compiler (Android, WASM). However, if this fix itself introduces a new codegen bug, it can be reverted, and .NET for iOS can fall back to the old registrar, or they can try to alter the IL pattern that their custom tool generates.

Without this, if some previous instruction already created a vreg for
ins->dest (for example if we are doing multiple passes over the basic
block because `restart == TRUE`) we will use an incorrect vreg when
decomposing the current VMOVE
Fixes#90800
This is used by a CreateSpan optimization that needs access to the
MonoClassField*
For other cases of a bare LDTOKEN (such as hand-written IL that calls
LDTOKEN on a type but doesn't follow it up with a call to
`GetTypeFromHandle` leave the opcode as a VMOVE (from the
`EMIT_NEW_TEMPLOAD` above))
@carlossanlop

Copy link
Copy Markdown
Contributor

We already started the builds for RC1. Please fill out the template, send an email to Tactics requesting approval, get a code review sign off, and please let me know when the CI finishes so I can ask if we can still merge.

@lambdageeklambdageek added this to the 8.0.0 milestone Aug 18, 2023
@lambdageeklambdageek added the Servicing-consider Issue for next servicing release review label Aug 18, 2023
@lewinglewing added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Aug 19, 2023
@carlossanlop
carlossanlop merged commit 6aef01d into release/8.0-rc1Aug 19, 2023
@carlossanlop
carlossanlop deleted the backport/pr-90825-to-release/8.0-rc1 branch August 19, 2023 02:33
@radicalradical mentioned this pull request Aug 28, 2023
@ghostghost locked as resolved and limited conversation to collaborators Sep 18, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Codegen-JIT-monoServicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@carlossanlop@lewing@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts - #90832

Merged
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1
Aug 19, 2023
Merged

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts#90832
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Aug 18, 2023

Copy link
Copy Markdown
Contributor

Backport of #90825 to release/8.0-rc1

/cc @lambdageek

Customer Impact

Customers are not able to use the new (opt-in) managed static registrar on .NET for iOS.

The registrar relies on an IL code generator to create some new managed methods that use an IL pattern that is different from what Roslyn normally generates. As a result, the IL has uncovered a bug in Mono's code generator. As a result certain equality comparisons between RuntimeTypeHandle values are compiled incorrectly and give incorrect results. The impact is that the new managed static registrar creates apps that do not work.

Testing

Manual testing.

Risk

Low/Medium. The code generator fix may have impact on other scenarios that use the Mono JIT or AOT compiler (Android, WASM). However, if this fix itself introduces a new codegen bug, it can be reverted, and .NET for iOS can fall back to the old registrar, or they can try to alter the IL pattern that their custom tool generates.

Without this, if some previous instruction already created a vreg for
ins->dest (for example if we are doing multiple passes over the basic
block because `restart == TRUE`) we will use an incorrect vreg when
decomposing the current VMOVE
Fixes#90800
This is used by a CreateSpan optimization that needs access to the
MonoClassField*
For other cases of a bare LDTOKEN (such as hand-written IL that calls
LDTOKEN on a type but doesn't follow it up with a call to
`GetTypeFromHandle` leave the opcode as a VMOVE (from the
`EMIT_NEW_TEMPLOAD` above))
@carlossanlop

Copy link
Copy Markdown
Contributor

We already started the builds for RC1. Please fill out the template, send an email to Tactics requesting approval, get a code review sign off, and please let me know when the CI finishes so I can ask if we can still merge.

@lambdageeklambdageek added this to the 8.0.0 milestone Aug 18, 2023
@lambdageeklambdageek added the Servicing-consider Issue for next servicing release review label Aug 18, 2023
@lewinglewing added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Aug 19, 2023
@carlossanlop
carlossanlop merged commit 6aef01d into release/8.0-rc1Aug 19, 2023
@carlossanlop
carlossanlop deleted the backport/pr-90825-to-release/8.0-rc1 branch August 19, 2023 02:33
@radicalradical mentioned this pull request Aug 28, 2023
@ghostghost locked as resolved and limited conversation to collaborators Sep 18, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Codegen-JIT-monoServicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@carlossanlop@lewing@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts - #90832

Merged
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1
Aug 19, 2023
Merged

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts#90832
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Aug 18, 2023

Copy link
Copy Markdown
Contributor

Backport of #90825 to release/8.0-rc1

/cc @lambdageek

Customer Impact

Customers are not able to use the new (opt-in) managed static registrar on .NET for iOS.

The registrar relies on an IL code generator to create some new managed methods that use an IL pattern that is different from what Roslyn normally generates. As a result, the IL has uncovered a bug in Mono's code generator. As a result certain equality comparisons between RuntimeTypeHandle values are compiled incorrectly and give incorrect results. The impact is that the new managed static registrar creates apps that do not work.

Testing

Manual testing.

Risk

Low/Medium. The code generator fix may have impact on other scenarios that use the Mono JIT or AOT compiler (Android, WASM). However, if this fix itself introduces a new codegen bug, it can be reverted, and .NET for iOS can fall back to the old registrar, or they can try to alter the IL pattern that their custom tool generates.

Without this, if some previous instruction already created a vreg for
ins->dest (for example if we are doing multiple passes over the basic
block because `restart == TRUE`) we will use an incorrect vreg when
decomposing the current VMOVE
Fixes#90800
This is used by a CreateSpan optimization that needs access to the
MonoClassField*
For other cases of a bare LDTOKEN (such as hand-written IL that calls
LDTOKEN on a type but doesn't follow it up with a call to
`GetTypeFromHandle` leave the opcode as a VMOVE (from the
`EMIT_NEW_TEMPLOAD` above))
@carlossanlop

Copy link
Copy Markdown
Contributor

We already started the builds for RC1. Please fill out the template, send an email to Tactics requesting approval, get a code review sign off, and please let me know when the CI finishes so I can ask if we can still merge.

@lambdageeklambdageek added this to the 8.0.0 milestone Aug 18, 2023
@lambdageeklambdageek added the Servicing-consider Issue for next servicing release review label Aug 18, 2023
@lewinglewing added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Aug 19, 2023
@carlossanlop
carlossanlop merged commit 6aef01d into release/8.0-rc1Aug 19, 2023
@carlossanlop
carlossanlop deleted the backport/pr-90825-to-release/8.0-rc1 branch August 19, 2023 02:33
@radicalradical mentioned this pull request Aug 28, 2023
@ghostghost locked as resolved and limited conversation to collaborators Sep 18, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Codegen-JIT-monoServicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@carlossanlop@lewing@lambdageek
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts - #90832

Merged
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1
Aug 19, 2023
Merged

[release/8.0-rc1] [mini] Fix typo in mono_decompose_vtype_opts#90832
carlossanlop merged 2 commits into
release/8.0-rc1from
backport/pr-90825-to-release/8.0-rc1

Conversation

@github-actions

@github-actionsgithub-actionsBot commented Aug 18, 2023

Copy link
Copy Markdown
Contributor

Backport of #90825 to release/8.0-rc1

/cc @lambdageek

Customer Impact

Customers are not able to use the new (opt-in) managed static registrar on .NET for iOS.

The registrar relies on an IL code generator to create some new managed methods that use an IL pattern that is different from what Roslyn normally generates. As a result, the IL has uncovered a bug in Mono's code generator. As a result certain equality comparisons between RuntimeTypeHandle values are compiled incorrectly and give incorrect results. The impact is that the new managed static registrar creates apps that do not work.

Testing

Manual testing.

Risk

Low/Medium. The code generator fix may have impact on other scenarios that use the Mono JIT or AOT compiler (Android, WASM). However, if this fix itself introduces a new codegen bug, it can be reverted, and .NET for iOS can fall back to the old registrar, or they can try to alter the IL pattern that their custom tool generates.

Without this, if some previous instruction already created a vreg for
ins->dest (for example if we are doing multiple passes over the basic
block because `restart == TRUE`) we will use an incorrect vreg when
decomposing the current VMOVE
Fixes#90800
This is used by a CreateSpan optimization that needs access to the
MonoClassField*
For other cases of a bare LDTOKEN (such as hand-written IL that calls
LDTOKEN on a type but doesn't follow it up with a call to
`GetTypeFromHandle` leave the opcode as a VMOVE (from the
`EMIT_NEW_TEMPLOAD` above))
@carlossanlop

Copy link
Copy Markdown
Contributor

We already started the builds for RC1. Please fill out the template, send an email to Tactics requesting approval, get a code review sign off, and please let me know when the CI finishes so I can ask if we can still merge.

@lambdageeklambdageek added this to the 8.0.0 milestone Aug 18, 2023
@lambdageeklambdageek added the Servicing-consider Issue for next servicing release review label Aug 18, 2023
@lewinglewing added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Aug 19, 2023
@carlossanlop
carlossanlop merged commit 6aef01d into release/8.0-rc1Aug 19, 2023
@carlossanlop
carlossanlop deleted the backport/pr-90825-to-release/8.0-rc1 branch August 19, 2023 02:33
@radicalradical mentioned this pull request Aug 28, 2023
@ghostghost locked as resolved and limited conversation to collaborators Sep 18, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Codegen-JIT-monoServicing-approvedApproved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@carlossanlop@lewing@lambdageek