This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DFG for #B0dEnY:[0x11c9adae0->0x11c9ad680->0x11c9d21a0, DFGFunctionCall, 518 (DidTryToEnterInLoop)]: | |
Fixpoint state: FixpointNotConverged; Form: ThreadedCPS; Unification state: GloballyUnified; Ref count state: EverythingIsLive | |
Arguments: @0 | |
Block #0 (bc#0): (OSR target) | |
Execution count: 1.000000 | |
Predecessors: | |
Successors: #1 #2 | |
Dominated by: #0 | |
Dominates: #0 #1 #2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
getElementById:Runs -> [5979, 6037, 6040, 6076, 6087] runs/s | |
mean: 6043.8 runs/s | |
median: 6040 runs/s | |
stdev: 42.31666338453437 runs/s | |
min: 5979 runs/s | |
max: 6087 runs/s | |
getElementById (not in document):Runs -> [6416, 6547, 6603, 6611, 6635] runs/s | |
mean: 6562.4 runs/s | |
median: 6603 runs/s |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
25:<!5:loc5> GetByIdFlush(Cell:@21, JS|MustGen|UseAsOther, Otherobj, id0{HTMLInputElement}, R:World, W:Heap, Exits, ClobbersExit, bc#13) predicting Otherobj | |
25:<!5:loc5> GetByIdFlush(Cell:@21, JS|MustGen|UseAsOther, Otherobj, id0{HTMLInputElement}, R:World, W:Heap, Exits, ClobbersExit, bc#13) predicting Otherobj | |
22:<!2:loc6> GetByIdFlush(Cell:@21, JS|MustGen|UseAsOther, Bool, id0{disabled}, R:World, W:Heap, Exits, ClobbersExit, bc#6) predicting Bool | |
30:<!2:loc6> GetByIdFlush(Cell:@29, JS|MustGen|UseAsOther, BoolOther, id1{readOnly}, R:World, W:Heap, Exits, ClobbersExit, bc#21) predicting BoolOther | |
22:<!2:loc6> GetByIdFlush(Cell:@21, JS|MustGen|UseAsOther, Bool, id0{disabled}, R:World, W:Heap, Exits, ClobbersExit, bc#6) predicting Bool | |
30:<!2:loc6> GetByIdFlush(Cell:@29, JS|MustGen|UseAsOther, BoolOther, id1{readOnly}, R:World, W:Heap, Exits, ClobbersExit, bc#21) predicting BoolOther | |
55:<!2:loc12> GetByIdFlush(Cell:@32, JS|MustGen|UseAsOther, Bool, id2{disabled}, R:World, W:He |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
25:<!5:loc5> GetByIdFlush(Cell:@21, JS|MustGen|UseAsOther, Otherobj, id0{HTMLInputElement}, R:World, W:Heap, Exits, ClobbersExit, bc#13) predicting Otherobj | |
25:<!5:loc5> GetByIdFlush(Cell:@21, JS|MustGen|UseAsOther, Otherobj, id0{HTMLInputElement}, R:World, W:Heap, Exits, ClobbersExit, bc#13) predicting Otherobj | |
22:<!2:loc6> GetByIdFlush(Cell:@21, JS|MustGen|UseAsOther, Bool, id0{disabled}, R:World, W:Heap, Exits, ClobbersExit, bc#6) predicting Bool | |
30:<!2:loc6> GetByIdFlush(Cell:@29, JS|MustGen|UseAsOther, BoolOther, id1{readOnly}, R:World, W:Heap, Exits, ClobbersExit, bc#21) predicting BoolOther | |
22:<!2:loc6> GetByIdFlush(Cell:@21, JS|MustGen|UseAsOther, Bool, id0{disabled}, R:World, W:Heap, Exits, ClobbersExit, bc#6) predicting Bool | |
30:<!2:loc6> GetByIdFlush(Cell:@29, JS|MustGen|UseAsOther, BoolOther, id1{readOnly}, R:World, W:Heap, Exits, ClobbersExit, bc#21) predicting BoolOther | |
55:<!2:loc12> GetByIdFlush(Cell:@32, JS|MustGen|UseAsOther, Bool, id2{disabled}, R:World, W:He |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
MotionMark + WebGL score on MacBook Pro 2012 (relatively old my laptop. Now performing the same experiment in the newer one) | |
Before running the set of the benchmark, we restart the machine. (So restart once for ToT and once for ToT w/ patch). | |
Everytime when running the benchmark, we reopen the Safari and clear the cache. | |
ToT | |
Score 426.76 -4.28% / +3.08% 432.02 -2.34% / +2.64% 405.21 -4.74% / +5.72% | |
Multiply 461.46 468.75 467.48 | |
Canvas Arcs 690.94 690.34 705.29 | |
Leaves 747.24 740.92 742.55 | |
Paths 1390.47 1332.27 1338.03 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define JSDynamicCast(To) \ | |
[] (auto from) -> To { \ | |
static thread_local const JSC::ClassInfo* cache = nullptr; \ | |
auto* classInfo = extractClassInfo(from); \ | |
if (UNLIKELY(!classInfo)) \ | |
return nullptr; \ | |
if (classInfo == cache) \ | |
return JSC::jsCast<To>(from); \ | |
auto* result = JSC::jsDynamicCast<To>(from); \ | |
if (result) \ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Quoted from K. Palacz and J. Vitek, "Java Subtype Tests in Real-Time", ECOOP '03, 2003. | |
// CT for single subtyping. One particularly effective idea due to Cohen [7] | |
// is a variation of Dijkstra’s “displays” [10]. Each type is identified by | |
// a unique type identifier, tid, which is simply a number. The runtime type | |
// information data structure also records the complete path of each type to | |
// the root as a se- quence of type identifiers. The key trick is to build, | |
// for each type x, an array of card(ancestors(x)) type identifiers so that | |
// for each ancestor y, the tid of y is stored at an offset equal to level(y) | |
// in the array. With this encoding, type inclusion tests reduce to a | |
// bound-checked array access and a comparison opera- tion. The bound check |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function test() | |
{ | |
... | |
} | |
noInline(test); | |
for (var i = 0; i < 1e4; ++i) | |
test(); // test will be compiled in FTL if test does not have any problems in FTL (for example, if the test contains the bytecode that is not supported in FTL, compiling in FTL fails) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Copyright (C) 2016 Yusuke Suzuki <[email protected]> | |
Redistribution and use in source and binary forms, with or without | |
modification, are permitted provided that the following conditions are met: | |
* Redistributions of source code must retain the above copyright | |
notice, this list of conditions and the following disclaimer. | |
* Redistributions in binary form must reproduce the above copyright | |
notice, this list of conditions and the following disclaimer in the |