Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUGFIX release] Avoid re-freezing already frozen objects. #15312

Merged
merged 1 commit into from
Jun 1, 2017

Commits on Jun 1, 2017

  1. [BUGFIX release] Avoid re-freezing already frozen objects.

    When a helper is invoked we pass in the arguments, those arguments
    are frozen (via Object.freeze) so that helpers can't mutate them
    (and cause issues in the rendering engine itself). When a helper
    doesn't have hash arguments, we use a shared `EMPTY_HASH` empty
    object to avoid allocating a bunch of empty objects for no reason
    (we do roughly the same thing when no positional params are
    passed). Since these objects are shared they are being frozen
    over and over again (throughout the lifetime of the running
    application). Turns out that there is what we think is almost
    certainly a bug in Chrome, where re-freezing the same object many
    times starts taking significantly more time upon each freeze
    attempt.
    
    This change introduces a guard to ensure we do not re-freeze repeatedly.
    
    Thanks to @krisselden for identifying the root cause and reporting
    the upstream Chrome bug: https://bugs.chromium.org/p/v8/issues/detail?id=6450
    rwjblue committed Jun 1, 2017
    Configuration menu
    Copy the full SHA
    567b1d7 View commit details
    Browse the repository at this point in the history