镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

N-API: Expose v8::Object::GetIdentityHash #28195

Description

@argv-minus-one

Is your feature request related to a problem? Please describe.
A solution suggested for #28164 was to keep a big table of JS objects and their types, and use that to verify the type of a wrapper object before napi_unwrapping it. Currently, the only way to do this is to napi_strict_equals against every single object reference in the table, which is very slow if there are a lot of objects to keep track of.

Describe the solution you'd like
Please expose v8::Object::GetIdentityHash through N-API. This will make it possible to maintain a hash table of JS object references.

Describe alternatives you've considered
See #28164.

Activity

  1. added
    feature requestIssues requesting new Node.js features.
    node-apiIssues and PRs related to Node-API.
    on Jun 13, 2019
  2. bnoordhuis commented on Jun 13, 2019

    @bnoordhuis
    Member

    n-api is a JS engine abstraction layer and I don't think every JS engine has an equivalent feature. For example, I don't think Spidermonkey has anything like it.

  3. mhdawson commented on Jun 13, 2019

    @mhdawson
    Member

    It is a pre-req that an N-API call be able to be implemented on top of any of the the leading JS engines (with the goal of it being ALL)

  4. argv-minus-one commented on Jun 14, 2019

    @argv-minus-one
    Author

    That would be a problem, yes. Spidermonkey has mozilla::HashGeneric and friends, which is used by its implementation of the JS Map class, but this does not seem to be part of the public API.

  5. gabrielschulhof commented on Jun 15, 2019

    @gabrielschulhof
    Contributor

    @argv-minus-one does #28237 obviate the need for this?

  6. bnoordhuis commented on Jul 3, 2019

    @bnoordhuis
    Member

    I'm going to close this out as "not implementable."

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature requestIssues requesting new Node.js features.node-apiIssues and PRs related to Node-API.wontfixIssues that will not be fixed.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions