René's URL Explorer Experiment


Title: src,ffi: create fast-call metadata Symbols lazily by mcollina · Pull Request #66015 · nodejs/node · GitHub

Open Graph Title: src,ffi: create fast-call metadata Symbols lazily by mcollina · Pull Request #66015 · nodejs/node

X Title: src,ffi: create fast-call metadata Symbols lazily by mcollina · Pull Request #66015 · nodejs/node

Description: The FFI fast-call wrappers key per-function metadata on raw FFI functions using two per-isolate Symbols (kFastArguments / kFastBufferInvoke) that were declared in src/env_properties.h. Everything in env_properties.h is allocated while the startup snapshot is built, so each Symbol advances the isolate's identity-hash RNG before Object.prototype / Function.prototype receive their snapshot identity hashes. In the snapshot produced for Node 26.4.0+ this shifted those hashes so a function map (a function whose length was redefined) and a plain-object map (an object literal with an accessor) collide in V8's 64-slot NormalizedMapCache. Every store into such objects then misses the inline cache, and the repro reported in the linked issue is roughly 7x slower. Create the two Symbols lazily in the FFI binding's Initialize, on the first run of internalBinding('ffi') at runtime, instead of declaring them in env_properties.h. They are therefore not allocated during snapshot serialization and no longer bias the snapshot's prototype identity hashes. Their export, property layout, and the fast-call feature behavior are unchanged. Fixes #66011 Ai generated, humanly reviewed.

Open Graph Description: The FFI fast-call wrappers key per-function metadata on raw FFI functions using two per-isolate Symbols (kFastArguments / kFastBufferInvoke) that were declared in src/env_properties.h. Everything i...

X Description: The FFI fast-call wrappers key per-function metadata on raw FFI functions using two per-isolate Symbols (kFastArguments / kFastBufferInvoke) that were declared in src/env_properties.h. Everything i...

Opengraph URL: https://github.com/nodejs/node/pull/66015

X: @github

direct link

Domain: github.com

react-profiling0
react-import-mapreact,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf
route-pattern/:user_id/:repository/pull/:id/files/:range(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:cb5226a1-5605-03d2-25bb-f9238252346c
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id8562:11A01B:783BD0:9FD40F:6AEDC53E
html-safe-nonce04f2f1136a17f547f76252c12c64ebad379057014d944503aa697c3cb4a5239c
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4NTYyOjExQTAxQjo3ODNCRDA6OUZENDBGOjZBRURDNTNFIiwidmlzaXRvcl9pZCI6IjMxMDA3Mjc3OTU0ODI3NDAwMzAiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmacdfa7aa0428f61c8ac2bee7f724ba85e9c9eb1b1bf8c34ddf2e9481fbc5caf815
hovercard-subject-tagpull_request:4518670895
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a
twitter:imagehttps://avatars.githubusercontent.com/u/52195?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/52195?s=400&v=4
og:image:altThe FFI fast-call wrappers key per-function metadata on raw FFI functions using two per-isolate Symbols (kFastArguments / kFastBufferInvoke) that were declared in src/env_properties.h. Everything i...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Nonec7d2f3ac4f4f560c56267b765892ba5b093e8a5fb2c0ed937edd8947746942e9
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/nodejs/node git https://github.com/nodejs/node.git
octolytics-dimension-user_id9950313
octolytics-dimension-user_loginnodejs
octolytics-dimension-repository_id27193779
octolytics-dimension-repository_nwonodejs/node
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id27193779
octolytics-dimension-repository_network_root_nwonodejs/node
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release0cac2d0cb993b0ad48c49b076135ac558c742c30
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#start-of-content
https://github.com/
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode%2Fpull%2F66015%2Ffiles%2Fac480bc15941a8865d5a874791e9cd2f93df661a
GitHubRepository hosting, code review, and collaborationhttps://github.com/platform
CopilotAI coding agent for tasks, projects, and automated workhttps://github.com/features/copilot
ActionsCI/CD and automationhttps://github.com/features/actions
Code QualityQuality analysis, fixes, and enforcementhttps://github.com/features/code-quality
CodespacesCloud development environmentshttps://github.com/features/codespaces
Code SecurityVulnerability detection and remediationhttps://github.com/security/advanced-security/code-security
Secret ProtectionSecret scanning and leak preventionhttps://github.com/security/advanced-security/secret-protection
All Featureshttps://github.com/features
Documentationhttps://docs.github.com/en
Traininghttps://learn.github.com/skills
Certificationshttps://learn.github.com/credentials
Build with Copilothttps://github.com/features/ai
Customize Copilothttps://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/customize-copilot-overview
Integrationshttps://github.com/marketplace
Trending reposhttps://github.com/trending
GitHub Sponsorshttps://github.com/open-source/sponsors
Developer articleshttps://github.com/resources/articles
ChangelogYour source for the latest features, improvements, and fixes across GitHub products, all in one place.https://github.blog/changelog/
Enterpriseshttps://github.com/enterprise
Teamhttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
See all industrieshttps://github.com/solutions/industry
Why GitHubhttps://github.com/why-github
Customer Storieshttps://github.com/customer-stories
Business insightshttps://github.com/solutions/executive-insights
Trust Centerhttps://github.com/trust-center
GitHub Advanced SecurityEnterprise-grade code securityhttps://github.com/security/advanced-security
Copilot for businessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Documentationhttps://docs.github.com/en
Resource centerhttps://github.com/resources
Bloghttps://github.blog/
Events & webinarshttps://github.com/resources/events
Community Forumhttps://github.com/orgs/community/discussions
Customer Storieshttps://github.com/customer-stories
Integrationshttps://github.com/marketplace
Customer supporthttps://help.github.com/
Traininghttps://learn.github.com/skills
GitHub Statushttps://www.githubstatus.com/
Abouthttps://github.com/about
Partnershttps://github.com/partners
Changeloghttps://github.blog/changelog/
GitHub UniverseThe event for developers, by developers — talks, workshops, and what’s next for GitHub.https://githubuniverse.com/
Pricinghttps://github.com/pricing
Sign inhttps://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode%2Fpull%2F66015%2Ffiles%2Fac480bc15941a8865d5a874791e9cd2f93df661a
Sign uphttps://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=nodejs%2Fnode
Reloadhttps://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a
Reloadhttps://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a
Reloadhttps://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a
nodejshttps://github.com/nodejs
nodehttps://github.com/nodejs/node
Codehttps://github.com/nodejs/node
Issues654 (654)https://github.com/nodejs/node/issues
Pull requests663 (663)https://github.com/nodejs/node/pulls
Actionshttps://github.com/nodejs/node/actions
Projectshttps://github.com/nodejs/node/projects
Security and qualityhttps://github.com/nodejs/node/security
Insightshttps://github.com/nodejs/node/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fnodejs%2Fnode%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fnodejs%2Fnode%2Fissues%2Fnew%2Fchoose
nodejs-github-bothttps://github.com/nodejs-github-bot
nodejs:mainhttps://github.com/nodejs/node/tree/main
mcollina:fix-ffi-fast-api-snapshot-symbolshttps://github.com/mcollina/node/tree/fix-ffi-fast-api-snapshot-symbols
Conversation 7 https://github.com/nodejs/node/pull/66015
Commits 1 https://github.com/nodejs/node/pull/66015/commits
Checks 42 https://github.com/nodejs/node/pull/66015/checks
Files changed 4 https://github.com/nodejs/node/pull/66015/files
src,ffi: create fast-call metadata Symbols lazily https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#top
Show all changes 1 commit https://github.com/nodejs/node/pull/66015/files
ac480bc src: ffi: create fast-call metadata Symbols lazily mcollina Sep 13, 2026 https://github.com/nodejs/node/pull/66015/commits/ac480bc15941a8865d5a874791e9cd2f93df661a
Clear filters https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a
Please reload this pagehttps://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a
Please reload this pagehttps://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a
env-inl.h https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-a1a4dc1d535a4c36d255573ddb470b0291de15e9cc66667680190af1d01b1bd4
env.h https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-9eafb215360b21494c0aedebe24a2f319b68a1158f9803557251946824175854
env_properties.h https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-3c4caf9223a0c3a6efbb87207e13f002d4209a6c4db5d9c113ac5d7112ef4474
node_ffi.cc https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-d585ac37af7068d4e6273cf96dd79d886d8a1a24a280e837541693a74293e74b
src/env-inl.hhttps://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-a1a4dc1d535a4c36d255573ddb470b0291de15e9cc66667680190af1d01b1bd4
View file https://github.com/mcollina/node/blob/ac480bc15941a8865d5a874791e9cd2f93df661a/src/env-inl.h
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/66015/files/{{ revealButtonHref }}
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-a1a4dc1d535a4c36d255573ddb470b0291de15e9cc66667680190af1d01b1bd4
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-a1a4dc1d535a4c36d255573ddb470b0291de15e9cc66667680190af1d01b1bd4
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-a1a4dc1d535a4c36d255573ddb470b0291de15e9cc66667680190af1d01b1bd4
src/env.hhttps://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-9eafb215360b21494c0aedebe24a2f319b68a1158f9803557251946824175854
View file https://github.com/mcollina/node/blob/ac480bc15941a8865d5a874791e9cd2f93df661a/src/env.h
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/66015/files/{{ revealButtonHref }}
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-9eafb215360b21494c0aedebe24a2f319b68a1158f9803557251946824175854
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-9eafb215360b21494c0aedebe24a2f319b68a1158f9803557251946824175854
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-9eafb215360b21494c0aedebe24a2f319b68a1158f9803557251946824175854
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-9eafb215360b21494c0aedebe24a2f319b68a1158f9803557251946824175854
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-9eafb215360b21494c0aedebe24a2f319b68a1158f9803557251946824175854
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-9eafb215360b21494c0aedebe24a2f319b68a1158f9803557251946824175854
src/env_properties.hhttps://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-3c4caf9223a0c3a6efbb87207e13f002d4209a6c4db5d9c113ac5d7112ef4474
View file https://github.com/mcollina/node/blob/ac480bc15941a8865d5a874791e9cd2f93df661a/src/env_properties.h
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/66015/files/{{ revealButtonHref }}
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-3c4caf9223a0c3a6efbb87207e13f002d4209a6c4db5d9c113ac5d7112ef4474
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-3c4caf9223a0c3a6efbb87207e13f002d4209a6c4db5d9c113ac5d7112ef4474
src/node_ffi.cchttps://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-d585ac37af7068d4e6273cf96dd79d886d8a1a24a280e837541693a74293e74b
View file https://github.com/mcollina/node/blob/ac480bc15941a8865d5a874791e9cd2f93df661a/src/node_ffi.cc
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/nodejs/node/pull/66015/files/{{ revealButtonHref }}
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-d585ac37af7068d4e6273cf96dd79d886d8a1a24a280e837541693a74293e74b
https://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a#diff-d585ac37af7068d4e6273cf96dd79d886d8a1a24a280e837541693a74293e74b
Please reload this pagehttps://github.com/nodejs/node/pull/66015/files/ac480bc15941a8865d5a874791e9cd2f93df661a
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.