Skip to content

Instantly share code, notes, and snippets.

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
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
@Constellation
Constellation / extract.log
Created October 27, 2016 20:30
Speedometer
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
@Constellation
Constellation / extract.log
Created October 27, 2016 20:30
Ember.js / React.js Speedometer
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
@Constellation
Constellation / score.txt
Last active September 13, 2016 23:47
MM
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.
#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) \
@Constellation
Constellation / t.cc
Created September 10, 2016 04:15
type check
// 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
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)
/*
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