Repository navigation
Commit 3cc4f8b
committed
[JSC] LLInt and Baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=327644
Reviewed by Yusuke Suzuki.
In LLInt and Baseline JIT, op_to_this took the slow path on every call
unless |this| was a final object with the cached structure. So a function
using |this| made a C++ call each time when its receiver was an array, a
function or a Map, and for any receiver once it had seen two structures.
This patch adds two fast paths.
1. |this| has the cached structure, whatever its type. The slow path now
caches a structure only when |this| is an object and ToThis returned
it as it is.
2. The status is ToThisConflicted and |this| is an object that is not a
JSScope. ToThis returns such an object as it is. This path updates the
value profile since the type of |this| can change from call to call.
Test: JSTests/stress/to-this-with-receivers-that-are-not-final-objects.js
* JSTests/stress/to-this-with-receivers-that-are-not-final-objects.js: Added.
(shouldBe):
(sloppyThis):
(strictThis):
(sloppyType):
(strictType):
(fn):
(gen):
(callFromScope.inner):
(callFromScope):
(callInWith):
(withObject.method):
(withObject.strictMethod):
(monomorphicArray):
(monomorphicFunction):
(named):
* Source/JavaScriptCore/jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_to_this):
* Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:
* Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:
(JSC::JSC_DEFINE_COMMON_SLOW_PATH):
Canonical link: https://commits.webkit.org/323899@mainop_to_this should have a fast path for non-final objects1 parent b854058 commit 3cc4f8b
4 files changed
Lines changed: 115 additions & 7 deletions
File tree
- JSTests/stress
- Source/JavaScriptCore
- jit
- llint
- runtime
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1592 | 1592 | | |
1593 | 1593 | | |
1594 | 1594 | | |
1595 | | - | |
1596 | 1595 | | |
1597 | | - | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
1598 | 1603 | | |
1599 | 1604 | | |
1600 | 1605 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
899 | 899 | | |
900 | 900 | | |
901 | 901 | | |
902 | | - | |
903 | 902 | | |
904 | 903 | | |
905 | | - | |
906 | | - | |
| 904 | + | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
907 | 915 | | |
908 | 916 | | |
909 | 917 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
288 | 288 | | |
289 | 289 | | |
290 | 290 | | |
291 | | - | |
| 291 | + | |
| 292 | + | |
292 | 293 | | |
293 | 294 | | |
294 | 295 | | |
| |||
307 | 308 | | |
308 | 309 | | |
309 | 310 | | |
310 | | - | |
311 | 311 | | |
312 | 312 | | |
313 | 313 | | |
| |||
0 commit comments