Ignore:
Timestamp:
Sep 23, 2017, 8:05:53 AM (8 years ago)
Author:
[email protected]
Message:

[ESNext] Async iteration - Implement Async Generator - optimization
https://bugs.webkit.org/show_bug.cgi?id=175891

Reviewed by Yusuke Suzuki.

Add small optimization for async generators:

  1. merging async generator queue to async generator itself

generator.@first / generator.@last is enough, by doing so,

we remove one unnecessary object alloc.

  1. merging request with queue.
  • builtins/AsyncGeneratorPrototype.js:

(globalPrivate.asyncGeneratorQueueIsEmpty):
(globalPrivate.asyncGeneratorQueueCreateItem):
(globalPrivate.asyncGeneratorQueueEnqueue):
(globalPrivate.asyncGeneratorQueueDequeue):
(globalPrivate.asyncGeneratorDequeue):
(globalPrivate.isSuspendYieldState):
(globalPrivate.asyncGeneratorEnqueue):

  • builtins/BuiltinNames.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitPutAsyncGeneratorFields):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::FunctionNode::emitBytecode):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r222424 r222425  
     12017-09-23  Oleksandr Skachkov  <[email protected]>
     2
     3        [ESNext] Async iteration - Implement Async Generator - optimization
     4        https://bugs.webkit.org/show_bug.cgi?id=175891
     5
     6        Reviewed by Yusuke Suzuki.
     7
     8        Add small optimization for async generators:
     9        1. merging async generator queue to async generator itself
     10        generator.@first / generator.@last is enough, by doing so,
     11          we remove one unnecessary object alloc.
     12        2. merging request with queue.
     13
     14        * builtins/AsyncGeneratorPrototype.js:
     15        (globalPrivate.asyncGeneratorQueueIsEmpty):
     16        (globalPrivate.asyncGeneratorQueueCreateItem):
     17        (globalPrivate.asyncGeneratorQueueEnqueue):
     18        (globalPrivate.asyncGeneratorQueueDequeue):
     19        (globalPrivate.asyncGeneratorDequeue):
     20        (globalPrivate.isSuspendYieldState):
     21        (globalPrivate.asyncGeneratorEnqueue):
     22        * builtins/BuiltinNames.h:
     23        * bytecompiler/BytecodeGenerator.cpp:
     24        (JSC::BytecodeGenerator::emitPutAsyncGeneratorFields):
     25        * bytecompiler/BytecodeGenerator.h:
     26        * bytecompiler/NodesCodegen.cpp:
     27        (JSC::FunctionNode::emitBytecode):
     28
    1292017-09-23  Joseph Pecoraro  <[email protected]>
    230
Note: See TracChangeset for help on using the changeset viewer.