1. 03 6月, 2021 2 次提交
  2. 31 5月, 2021 3 次提交
  3. 30 5月, 2021 2 次提交
  4. 29 5月, 2021 5 次提交
  5. 28 5月, 2021 4 次提交
  6. 27 5月, 2021 4 次提交
  7. 26 5月, 2021 4 次提交
  8. 25 5月, 2021 5 次提交
  9. 23 5月, 2021 3 次提交
    • L
      2.49.0 · 551e34a3
      Lukas Taegert-Atkinson 提交于
      551e34a3
    • L
      Update changelog · 37bee214
      Lukas Taegert-Atkinson 提交于
      37bee214
    • M
      Class method effects (#4018) · d73b2ace
      Marijn Haverbeke 提交于
      * Move logic from ClassBody into ClassNode
      
      So that it sits in one place and is easier to extend.
      
      * Track static class fields and improve handling of class getters/setters
      
      This aims to improve tree-shaking of code that uses static class
      properties (#3989) and to improve detection of side effects through
      class getters/setters (#4016).
      
      The first part works by keeping a map of positively known static
      properties (methods and simple getters) in
      `ClassNode.staticPropertyMap`, along with a flag
      (`ClassNode.deoptimizedStatic`) that indicates that something happened
      that removed our confidence that we know anything about the class
      object.
      
      Access and calls to these known static properties are handled by
      routing the calls to `getLiteralValueAtPath`,
      `getReturnExpressionWhenCalledAtPath`, and
      `hasEffectsWhenCalledAtPath` to the known values in the properties. In
      contrast to `ObjectExpression`, this class does not try to keep track
      of multiple expressions associated with a property, since that doesn't
      come up a lot on classes.
      
      The handling of side effect detection through getters and setters is
      done by, _if_ the entire class object (or its prototype in case of
      access to the prototype) hasn't been deoptimized, scanning through the
      directly defined getters and setters to see if one exists (calling
      through to superclasses as appropriate). I believe that this is solid
      because any code that would be able to change the set of getters and
      setters on a class would cause the entire object to be deoptimized.
      
      * Remove ClassNode.deoptimizeCache
      
      * Keep a table for class property effects
      
      * Add comment explaining property map
      
      * Fix types
      
      * Make getReturnExpression and getLiteralValue more similar for objects
      
      * Use common logic for return expression and literal value
      
      * Use common logic for return access and call effects
      
      * Extract shared logic from ObjectExpression
      
      * Use an object for better performance
      
      * Simplify handling for setters and other properties
      
      * Small simplification
      
      * Work towards better class handling
      
      * merge ObjectPathHandler into ObjectEntity
      
      * Slightly refactor default values
      
      * Separate unknown nodes from other Nodes to avoid future circular dependencies
      
      * Introduce new prototype tracking
      
      * Improve coverage
      
      * Fix class deoptimization in arrow functions via this/super
      
      * Simplify and merge property and method definition
      
      * Improve coverage
      
      * Replace deoptimizeProperties by deoptimizing a double unknown path
      
      * Assume functions can add getters to parameters
      
      * Improve class.prototype handling
      
      * Assume created instance getters have side-effects
      
      * Base all expressions on a base class
      
      * Only deoptimize necessary paths when deoptimizing "this"
      
      * Handle deoptimizing "this" in getters
      
      * Handle deoptimizing "this" in setters
      
      * Unify this deoptimization
      
      * Simplify recursion tracking
      
      * Get rid of deoptimizations during bind phase
      
      * Get rid of unneeded double-binding checks
      
      * Inline deoptimizations into NodeBase for simple cases
      
      * Add more efficient way to create object entities
      
      * Add thisParameter to CallOptions
      
      * Move NodeEvents to separate file
      
      * Track array elements
      
      * Simplify namespace handling
      
      * Use Object.values and Object.entries instead of Object.keys where useful
      
      * Improve code and simplify literal handling
      
      * Improve coverage
      
      * Improve coverage
      
      * Improve coverage in conditional and logical expressions
      
      * Improve coverage
      
      * 2.49.0-0
      
      * Fix test to support pre-release versions
      
      * Fix failed deoptimization of array props
      
      * 2.49.0-1
      Co-authored-by: NLukas Taegert-Atkinson <lukas.taegert-atkinson@tngtech.com>
      Co-authored-by: NLukas Taegert-Atkinson <lukastaegert@users.noreply.github.com>
      d73b2ace
  10. 15 5月, 2021 6 次提交
  11. 14 5月, 2021 2 次提交