⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 285978 in webkit


Ignore:
Timestamp:
Nov 17, 2021, 9:01:47 PM (5 years ago)
Author:
ysuzuki@apple.com
Message:

[JSC] TypedArray GetArrayLength should not use Reuse
https://bugs.webkit.org/show_bug.cgi?id=233299
rdar://85502079

Reviewed by Robin Morisset.

JSTests:

  • stress/get-array-length-reuse.js: Added.

(foo):

Source/JavaScriptCore:

We should not perform OSR exit after assigning a value to a reused register, otherwise,
OSR exit cannot recover the proper value. Now TypedArray GetArrayLength can perform
OSR exit after loading a length, so we should not use reused register for length.

  • dfg/DFGSpeculativeJIT.cpp:
Location:
trunk
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/JSTests/ChangeLog

    r285971 r285978  
     12021-11-17  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        [JSC] TypedArray GetArrayLength should not use Reuse
     4        https://bugs.webkit.org/show_bug.cgi?id=233299
     5        rdar://85502079
     6
     7        Reviewed by Robin Morisset.
     8
     9        * stress/get-array-length-reuse.js: Added.
     10        (foo):
     11
    1122021-11-17  Saam Barati  <sbarati@apple.com>
    213
  • trunk/Source/JavaScriptCore/ChangeLog

    r285971 r285978  
     12021-11-17  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        [JSC] TypedArray GetArrayLength should not use Reuse
     4        https://bugs.webkit.org/show_bug.cgi?id=233299
     5        rdar://85502079
     6
     7        Reviewed by Robin Morisset.
     8
     9        We should not perform OSR exit after assigning a value to a reused register, otherwise,
     10        OSR exit cannot recover the proper value. Now TypedArray GetArrayLength can perform
     11        OSR exit after loading a length, so we should not use reused register for length.
     12
     13        * dfg/DFGSpeculativeJIT.cpp:
     14
    1152021-11-17  Saam Barati  <sbarati@apple.com>
    216
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp

    r285850 r285978  
    86628662        ASSERT(node->arrayMode().isSomeTypedArrayView());
    86638663        SpeculateCellOperand base(this, node->child1());
    8664         GPRTemporary result(this, Reuse, base);
     8664        GPRTemporary result(this);
    86658665        GPRReg baseGPR = base.gpr();
    86668666        GPRReg resultGPR = result.gpr();
Note: See TracChangeset for help on using the changeset viewer.