[cdac][.NET9] Data descriptor changes for GetMethodDescData - #106417

Closed
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr
Closed

[cdac][.NET9] Data descriptor changes for GetMethodDescData#106417
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr

Conversation

@lambdageek

@lambdageeklambdageek commented Aug 14, 2024

Copy link
Copy Markdown
Member

Extracted from #106413

The main new thing here is a PrecodeMachineDescriptor struct and global: this is used to copy out the enum values and masks that show how to manipulate precode stubs to figure out what kind of a stub we're looking at.

Contributes to #99302

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @mangod9
See info in area-owners.md if you want to be subscribed.

@carlossanlop

carlossanlop commented Aug 14, 2024

Copy link
Copy Markdown
Contributor

@jkotas@AaronRobinsonMSFT@davidwrighton@elinor-fung please help reviewing this PR. @lambdageek has requested that I wait for it before the RC1 snap if possible.

@AaronRobinsonMSFTAaronRobinsonMSFT left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to update any markdown?

bool m_fMarked;
int m_nGCCount;
bool m_IsCollectible;
BYTE m_IsCollectible;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
BYTE m_IsCollectible;
constBYTE m_IsCollectible;

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it turns out we can't make m_IsCollectibleconst. The reason is because LoaderAllocator is a DAC-ized base class and the VPTR_BASE_VTABLE_CLASS macro adds a LoaderAllocator(TADDR addr, TADDR vtAddr) {} constructor which doesn't include an initializer for m_IsCollectible which results in a compilation error:

 E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(291): error C2789: 'LoaderAllocator::m_IsCollectible'
: an object of const-qualified type must be initialized
E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(335): note: see declaration of 'LoaderAllocator::m_Is
Collectible'

@elinor-fung

Copy link
Copy Markdown
Member

Do we need to update any markdown?

Not for this portion - this is the data descriptors (and the new struct/global in runtime to better represent needed data), not tied to contracts yet.


PrecodeMachineDescriptor g_PrecodeMachineDescriptor;

void PrecodeMachineDescriptor::Init()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is there an Init routine as well as a set of non-static data member initializers here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to delete the initializers, that was an idea that didn't work out

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you doing this before you want this checked in? Given the snap deadline, I think we should probably miss it, and do a backport of the data descriptors when we're ready in reality to declare that .NET 9 might actually be useable with the cDAC and CLRMA. In general, I'm leery of stuff that has a static initializer, and that's what we have here now, and I don't see us fixing this before the snap happens.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, let's miss the snap. I can't fix and validate this in the next couple hours

@lambdageek

Copy link
Copy Markdown
MemberAuthor

@carlossanlop I'm going to close this and do a back port after the snap, it needs more work

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Sep 15, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lambdageek@carlossanlop@elinor-fung@davidwrighton@AaronRobinsonMSFT
, '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

[cdac][.NET9] Data descriptor changes for GetMethodDescData - #106417

Closed
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr
Closed

[cdac][.NET9] Data descriptor changes for GetMethodDescData#106417
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr

Conversation

@lambdageek

@lambdageeklambdageek commented Aug 14, 2024

Copy link
Copy Markdown
Member

Extracted from #106413

The main new thing here is a PrecodeMachineDescriptor struct and global: this is used to copy out the enum values and masks that show how to manipulate precode stubs to figure out what kind of a stub we're looking at.

Contributes to #99302

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @mangod9
See info in area-owners.md if you want to be subscribed.

@carlossanlop

carlossanlop commented Aug 14, 2024

Copy link
Copy Markdown
Contributor

@jkotas@AaronRobinsonMSFT@davidwrighton@elinor-fung please help reviewing this PR. @lambdageek has requested that I wait for it before the RC1 snap if possible.

@AaronRobinsonMSFTAaronRobinsonMSFT left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to update any markdown?

bool m_fMarked;
int m_nGCCount;
bool m_IsCollectible;
BYTE m_IsCollectible;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
BYTE m_IsCollectible;
constBYTE m_IsCollectible;

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it turns out we can't make m_IsCollectibleconst. The reason is because LoaderAllocator is a DAC-ized base class and the VPTR_BASE_VTABLE_CLASS macro adds a LoaderAllocator(TADDR addr, TADDR vtAddr) {} constructor which doesn't include an initializer for m_IsCollectible which results in a compilation error:

 E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(291): error C2789: 'LoaderAllocator::m_IsCollectible'
: an object of const-qualified type must be initialized
E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(335): note: see declaration of 'LoaderAllocator::m_Is
Collectible'

@elinor-fung

Copy link
Copy Markdown
Member

Do we need to update any markdown?

Not for this portion - this is the data descriptors (and the new struct/global in runtime to better represent needed data), not tied to contracts yet.


PrecodeMachineDescriptor g_PrecodeMachineDescriptor;

void PrecodeMachineDescriptor::Init()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is there an Init routine as well as a set of non-static data member initializers here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to delete the initializers, that was an idea that didn't work out

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you doing this before you want this checked in? Given the snap deadline, I think we should probably miss it, and do a backport of the data descriptors when we're ready in reality to declare that .NET 9 might actually be useable with the cDAC and CLRMA. In general, I'm leery of stuff that has a static initializer, and that's what we have here now, and I don't see us fixing this before the snap happens.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, let's miss the snap. I can't fix and validate this in the next couple hours

@lambdageek

Copy link
Copy Markdown
MemberAuthor

@carlossanlop I'm going to close this and do a back port after the snap, it needs more work

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Sep 15, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lambdageek@carlossanlop@elinor-fung@davidwrighton@AaronRobinsonMSFT
, '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

[cdac][.NET9] Data descriptor changes for GetMethodDescData - #106417

Closed
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr
Closed

[cdac][.NET9] Data descriptor changes for GetMethodDescData#106417
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr

Conversation

@lambdageek

@lambdageeklambdageek commented Aug 14, 2024

Copy link
Copy Markdown
Member

Extracted from #106413

The main new thing here is a PrecodeMachineDescriptor struct and global: this is used to copy out the enum values and masks that show how to manipulate precode stubs to figure out what kind of a stub we're looking at.

Contributes to #99302

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @mangod9
See info in area-owners.md if you want to be subscribed.

@carlossanlop

carlossanlop commented Aug 14, 2024

Copy link
Copy Markdown
Contributor

@jkotas@AaronRobinsonMSFT@davidwrighton@elinor-fung please help reviewing this PR. @lambdageek has requested that I wait for it before the RC1 snap if possible.

@AaronRobinsonMSFTAaronRobinsonMSFT left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to update any markdown?

bool m_fMarked;
int m_nGCCount;
bool m_IsCollectible;
BYTE m_IsCollectible;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
BYTE m_IsCollectible;
constBYTE m_IsCollectible;

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it turns out we can't make m_IsCollectibleconst. The reason is because LoaderAllocator is a DAC-ized base class and the VPTR_BASE_VTABLE_CLASS macro adds a LoaderAllocator(TADDR addr, TADDR vtAddr) {} constructor which doesn't include an initializer for m_IsCollectible which results in a compilation error:

 E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(291): error C2789: 'LoaderAllocator::m_IsCollectible'
: an object of const-qualified type must be initialized
E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(335): note: see declaration of 'LoaderAllocator::m_Is
Collectible'

@elinor-fung

Copy link
Copy Markdown
Member

Do we need to update any markdown?

Not for this portion - this is the data descriptors (and the new struct/global in runtime to better represent needed data), not tied to contracts yet.


PrecodeMachineDescriptor g_PrecodeMachineDescriptor;

void PrecodeMachineDescriptor::Init()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is there an Init routine as well as a set of non-static data member initializers here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to delete the initializers, that was an idea that didn't work out

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you doing this before you want this checked in? Given the snap deadline, I think we should probably miss it, and do a backport of the data descriptors when we're ready in reality to declare that .NET 9 might actually be useable with the cDAC and CLRMA. In general, I'm leery of stuff that has a static initializer, and that's what we have here now, and I don't see us fixing this before the snap happens.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, let's miss the snap. I can't fix and validate this in the next couple hours

@lambdageek

Copy link
Copy Markdown
MemberAuthor

@carlossanlop I'm going to close this and do a back port after the snap, it needs more work

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Sep 15, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lambdageek@carlossanlop@elinor-fung@davidwrighton@AaronRobinsonMSFT
, '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

[cdac][.NET9] Data descriptor changes for GetMethodDescData - #106417

Closed
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr
Closed

[cdac][.NET9] Data descriptor changes for GetMethodDescData#106417
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr

Conversation

@lambdageek

@lambdageeklambdageek commented Aug 14, 2024

Copy link
Copy Markdown
Member

Extracted from #106413

The main new thing here is a PrecodeMachineDescriptor struct and global: this is used to copy out the enum values and masks that show how to manipulate precode stubs to figure out what kind of a stub we're looking at.

Contributes to #99302

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @mangod9
See info in area-owners.md if you want to be subscribed.

@carlossanlop

carlossanlop commented Aug 14, 2024

Copy link
Copy Markdown
Contributor

@jkotas@AaronRobinsonMSFT@davidwrighton@elinor-fung please help reviewing this PR. @lambdageek has requested that I wait for it before the RC1 snap if possible.

@AaronRobinsonMSFTAaronRobinsonMSFT left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to update any markdown?

bool m_fMarked;
int m_nGCCount;
bool m_IsCollectible;
BYTE m_IsCollectible;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
BYTE m_IsCollectible;
constBYTE m_IsCollectible;

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it turns out we can't make m_IsCollectibleconst. The reason is because LoaderAllocator is a DAC-ized base class and the VPTR_BASE_VTABLE_CLASS macro adds a LoaderAllocator(TADDR addr, TADDR vtAddr) {} constructor which doesn't include an initializer for m_IsCollectible which results in a compilation error:

 E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(291): error C2789: 'LoaderAllocator::m_IsCollectible'
: an object of const-qualified type must be initialized
E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(335): note: see declaration of 'LoaderAllocator::m_Is
Collectible'

@elinor-fung

Copy link
Copy Markdown
Member

Do we need to update any markdown?

Not for this portion - this is the data descriptors (and the new struct/global in runtime to better represent needed data), not tied to contracts yet.


PrecodeMachineDescriptor g_PrecodeMachineDescriptor;

void PrecodeMachineDescriptor::Init()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is there an Init routine as well as a set of non-static data member initializers here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to delete the initializers, that was an idea that didn't work out

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you doing this before you want this checked in? Given the snap deadline, I think we should probably miss it, and do a backport of the data descriptors when we're ready in reality to declare that .NET 9 might actually be useable with the cDAC and CLRMA. In general, I'm leery of stuff that has a static initializer, and that's what we have here now, and I don't see us fixing this before the snap happens.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, let's miss the snap. I can't fix and validate this in the next couple hours

@lambdageek

Copy link
Copy Markdown
MemberAuthor

@carlossanlop I'm going to close this and do a back port after the snap, it needs more work

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Sep 15, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lambdageek@carlossanlop@elinor-fung@davidwrighton@AaronRobinsonMSFT
, '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

[cdac][.NET9] Data descriptor changes for GetMethodDescData - #106417

Closed
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr
Closed

[cdac][.NET9] Data descriptor changes for GetMethodDescData#106417
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr

Conversation

@lambdageek

@lambdageeklambdageek commented Aug 14, 2024

Copy link
Copy Markdown
Member

Extracted from #106413

The main new thing here is a PrecodeMachineDescriptor struct and global: this is used to copy out the enum values and masks that show how to manipulate precode stubs to figure out what kind of a stub we're looking at.

Contributes to #99302

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @mangod9
See info in area-owners.md if you want to be subscribed.

@carlossanlop

carlossanlop commented Aug 14, 2024

Copy link
Copy Markdown
Contributor

@jkotas@AaronRobinsonMSFT@davidwrighton@elinor-fung please help reviewing this PR. @lambdageek has requested that I wait for it before the RC1 snap if possible.

@AaronRobinsonMSFTAaronRobinsonMSFT left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to update any markdown?

bool m_fMarked;
int m_nGCCount;
bool m_IsCollectible;
BYTE m_IsCollectible;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
BYTE m_IsCollectible;
constBYTE m_IsCollectible;

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it turns out we can't make m_IsCollectibleconst. The reason is because LoaderAllocator is a DAC-ized base class and the VPTR_BASE_VTABLE_CLASS macro adds a LoaderAllocator(TADDR addr, TADDR vtAddr) {} constructor which doesn't include an initializer for m_IsCollectible which results in a compilation error:

 E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(291): error C2789: 'LoaderAllocator::m_IsCollectible'
: an object of const-qualified type must be initialized
E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(335): note: see declaration of 'LoaderAllocator::m_Is
Collectible'

@elinor-fung

Copy link
Copy Markdown
Member

Do we need to update any markdown?

Not for this portion - this is the data descriptors (and the new struct/global in runtime to better represent needed data), not tied to contracts yet.


PrecodeMachineDescriptor g_PrecodeMachineDescriptor;

void PrecodeMachineDescriptor::Init()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is there an Init routine as well as a set of non-static data member initializers here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to delete the initializers, that was an idea that didn't work out

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you doing this before you want this checked in? Given the snap deadline, I think we should probably miss it, and do a backport of the data descriptors when we're ready in reality to declare that .NET 9 might actually be useable with the cDAC and CLRMA. In general, I'm leery of stuff that has a static initializer, and that's what we have here now, and I don't see us fixing this before the snap happens.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, let's miss the snap. I can't fix and validate this in the next couple hours

@lambdageek

Copy link
Copy Markdown
MemberAuthor

@carlossanlop I'm going to close this and do a back port after the snap, it needs more work

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Sep 15, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lambdageek@carlossanlop@elinor-fung@davidwrighton@AaronRobinsonMSFT
, '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

[cdac][.NET9] Data descriptor changes for GetMethodDescData - #106417

Closed
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr
Closed

[cdac][.NET9] Data descriptor changes for GetMethodDescData#106417
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr

Conversation

@lambdageek

@lambdageeklambdageek commented Aug 14, 2024

Copy link
Copy Markdown
Member

Extracted from #106413

The main new thing here is a PrecodeMachineDescriptor struct and global: this is used to copy out the enum values and masks that show how to manipulate precode stubs to figure out what kind of a stub we're looking at.

Contributes to #99302

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @mangod9
See info in area-owners.md if you want to be subscribed.

@carlossanlop

carlossanlop commented Aug 14, 2024

Copy link
Copy Markdown
Contributor

@jkotas@AaronRobinsonMSFT@davidwrighton@elinor-fung please help reviewing this PR. @lambdageek has requested that I wait for it before the RC1 snap if possible.

@AaronRobinsonMSFTAaronRobinsonMSFT left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to update any markdown?

bool m_fMarked;
int m_nGCCount;
bool m_IsCollectible;
BYTE m_IsCollectible;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
BYTE m_IsCollectible;
constBYTE m_IsCollectible;

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it turns out we can't make m_IsCollectibleconst. The reason is because LoaderAllocator is a DAC-ized base class and the VPTR_BASE_VTABLE_CLASS macro adds a LoaderAllocator(TADDR addr, TADDR vtAddr) {} constructor which doesn't include an initializer for m_IsCollectible which results in a compilation error:

 E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(291): error C2789: 'LoaderAllocator::m_IsCollectible'
: an object of const-qualified type must be initialized
E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(335): note: see declaration of 'LoaderAllocator::m_Is
Collectible'

@elinor-fung

Copy link
Copy Markdown
Member

Do we need to update any markdown?

Not for this portion - this is the data descriptors (and the new struct/global in runtime to better represent needed data), not tied to contracts yet.


PrecodeMachineDescriptor g_PrecodeMachineDescriptor;

void PrecodeMachineDescriptor::Init()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is there an Init routine as well as a set of non-static data member initializers here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to delete the initializers, that was an idea that didn't work out

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you doing this before you want this checked in? Given the snap deadline, I think we should probably miss it, and do a backport of the data descriptors when we're ready in reality to declare that .NET 9 might actually be useable with the cDAC and CLRMA. In general, I'm leery of stuff that has a static initializer, and that's what we have here now, and I don't see us fixing this before the snap happens.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, let's miss the snap. I can't fix and validate this in the next couple hours

@lambdageek

Copy link
Copy Markdown
MemberAuthor

@carlossanlop I'm going to close this and do a back port after the snap, it needs more work

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Sep 15, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lambdageek@carlossanlop@elinor-fung@davidwrighton@AaronRobinsonMSFT
, '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

[cdac][.NET9] Data descriptor changes for GetMethodDescData - #106417

Closed
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr
Closed

[cdac][.NET9] Data descriptor changes for GetMethodDescData#106417
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr

Conversation

@lambdageek

@lambdageeklambdageek commented Aug 14, 2024

Copy link
Copy Markdown
Member

Extracted from #106413

The main new thing here is a PrecodeMachineDescriptor struct and global: this is used to copy out the enum values and masks that show how to manipulate precode stubs to figure out what kind of a stub we're looking at.

Contributes to #99302

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @mangod9
See info in area-owners.md if you want to be subscribed.

@carlossanlop

carlossanlop commented Aug 14, 2024

Copy link
Copy Markdown
Contributor

@jkotas@AaronRobinsonMSFT@davidwrighton@elinor-fung please help reviewing this PR. @lambdageek has requested that I wait for it before the RC1 snap if possible.

@AaronRobinsonMSFTAaronRobinsonMSFT left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to update any markdown?

bool m_fMarked;
int m_nGCCount;
bool m_IsCollectible;
BYTE m_IsCollectible;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
BYTE m_IsCollectible;
constBYTE m_IsCollectible;

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it turns out we can't make m_IsCollectibleconst. The reason is because LoaderAllocator is a DAC-ized base class and the VPTR_BASE_VTABLE_CLASS macro adds a LoaderAllocator(TADDR addr, TADDR vtAddr) {} constructor which doesn't include an initializer for m_IsCollectible which results in a compilation error:

 E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(291): error C2789: 'LoaderAllocator::m_IsCollectible'
: an object of const-qualified type must be initialized
E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(335): note: see declaration of 'LoaderAllocator::m_Is
Collectible'

@elinor-fung

Copy link
Copy Markdown
Member

Do we need to update any markdown?

Not for this portion - this is the data descriptors (and the new struct/global in runtime to better represent needed data), not tied to contracts yet.


PrecodeMachineDescriptor g_PrecodeMachineDescriptor;

void PrecodeMachineDescriptor::Init()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is there an Init routine as well as a set of non-static data member initializers here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to delete the initializers, that was an idea that didn't work out

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you doing this before you want this checked in? Given the snap deadline, I think we should probably miss it, and do a backport of the data descriptors when we're ready in reality to declare that .NET 9 might actually be useable with the cDAC and CLRMA. In general, I'm leery of stuff that has a static initializer, and that's what we have here now, and I don't see us fixing this before the snap happens.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, let's miss the snap. I can't fix and validate this in the next couple hours

@lambdageek

Copy link
Copy Markdown
MemberAuthor

@carlossanlop I'm going to close this and do a back port after the snap, it needs more work

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Sep 15, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lambdageek@carlossanlop@elinor-fung@davidwrighton@AaronRobinsonMSFT
, '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

[cdac][.NET9] Data descriptor changes for GetMethodDescData - #106417

Closed
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr
Closed

[cdac][.NET9] Data descriptor changes for GetMethodDescData#106417
lambdageek wants to merge 1 commit into
dotnet:mainfrom
lambdageek:cdac-net9-nativecodeptr

Conversation

@lambdageek

@lambdageeklambdageek commented Aug 14, 2024

Copy link
Copy Markdown
Member

Extracted from #106413

The main new thing here is a PrecodeMachineDescriptor struct and global: this is used to copy out the enum values and masks that show how to manipulate precode stubs to figure out what kind of a stub we're looking at.

Contributes to #99302

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @mangod9
See info in area-owners.md if you want to be subscribed.

@carlossanlop

carlossanlop commented Aug 14, 2024

Copy link
Copy Markdown
Contributor

@jkotas@AaronRobinsonMSFT@davidwrighton@elinor-fung please help reviewing this PR. @lambdageek has requested that I wait for it before the RC1 snap if possible.

@AaronRobinsonMSFTAaronRobinsonMSFT left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to update any markdown?

bool m_fMarked;
int m_nGCCount;
bool m_IsCollectible;
BYTE m_IsCollectible;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
BYTE m_IsCollectible;
constBYTE m_IsCollectible;

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So it turns out we can't make m_IsCollectibleconst. The reason is because LoaderAllocator is a DAC-ized base class and the VPTR_BASE_VTABLE_CLASS macro adds a LoaderAllocator(TADDR addr, TADDR vtAddr) {} constructor which doesn't include an initializer for m_IsCollectible which results in a compilation error:

 E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(291): error C2789: 'LoaderAllocator::m_IsCollectible'
: an object of const-qualified type must be initialized
E:\dotnet-runtime\runtime-m\src\coreclr\vm\loaderallocator.hpp(335): note: see declaration of 'LoaderAllocator::m_Is
Collectible'

@elinor-fung

Copy link
Copy Markdown
Member

Do we need to update any markdown?

Not for this portion - this is the data descriptors (and the new struct/global in runtime to better represent needed data), not tied to contracts yet.


PrecodeMachineDescriptor g_PrecodeMachineDescriptor;

void PrecodeMachineDescriptor::Init()

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is there an Init routine as well as a set of non-static data member initializers here?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I need to delete the initializers, that was an idea that didn't work out

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you doing this before you want this checked in? Given the snap deadline, I think we should probably miss it, and do a backport of the data descriptors when we're ready in reality to declare that .NET 9 might actually be useable with the cDAC and CLRMA. In general, I'm leery of stuff that has a static initializer, and that's what we have here now, and I don't see us fixing this before the snap happens.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea, let's miss the snap. I can't fix and validate this in the next couple hours

@lambdageek

Copy link
Copy Markdown
MemberAuthor

@carlossanlop I'm going to close this and do a back port after the snap, it needs more work

@github-actionsgithub-actionsBot locked and limited conversation to collaborators Sep 15, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@lambdageek@carlossanlop@elinor-fung@davidwrighton@AaronRobinsonMSFT