Skip to content

Instantly share code, notes, and snippets.

View gskachkov's full-sized avatar

Oleksander Skachkov gskachkov

  • Itera Consulting
  • Ukraine, Kiev
View GitHub Profile
@gskachkov
gskachkov / Modified test with arrow functions
Last active August 1, 2016 07:57
Performance test of the jsc with POC, without POC, and without Arrow function
VMs tested:
"without_poc" at /Users/Developer/Projects/Webkit2/WebKitBuild/without_poc/Release/jsc
"poc_af" at /Users/Developer/Projects/Webkit2/WebKitBuild/poc_af/Release/jsc
Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Ran 10 benchmark
iterations, and measured the total time of those iterations, for each sample. Emitted a call to
gc() between sample measurements. Used 50 benchmark iterations per VM invocation for warm-up. Used
the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark
execution times with 95% confidence intervals in milliseconds.
#1
VMs tested:
"before" at /Users/Developer/Projects/Webkit2/WebKitBuild/before_patch/Release/jsc
"after" at /Users/Developer/Projects/Webkit2/WebKitBuild/es6_functions/Release/jsc
Collected 10 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to
gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used
the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark
execution times with 95% confidence intervals in milliseconds.
MacBook-Pro-Skachkov-2:Webkit2 Developer$ Tools/Scripts/run-jsc-benchmarks before:/Users/Developer/Projects/Webkit2/WebKitBuild/before_patch/Release/jsc after:/Users/Developer/Projects/Webkit2/WebKitBuild/es6_functions/Release/jsc --octane --benchmark="jquery|closure" --outer 10
VMs tested:
"before" at /Users/Developer/Projects/Webkit2/WebKitBuild/before_patch/Release/jsc
"after" at /Users/Developer/Projects/Webkit2/WebKitBuild/es6_functions/Release/jsc
Collected 10 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to
gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used
the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark
execution times with 95% confidence intervals in milliseconds.
VMs tested:
"before" at /Users/Developer/Projects/Webkit2/WebKitBuild/before_patch/Release/jsc
"after" at /Users/Developer/Projects/Webkit2/WebKitBuild/es6_functions/Release/jsc
Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Ran 2 benchmark
iterations, and measured the total time of those iterations, for each sample. Emitted a call to
gc() between sample measurements. Used 4 benchmark iterations per VM invocation for warm-up. Used
the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark
execution times with 95% confidence intervals in milliseconds.
@gskachkov
gskachkov / js
Created March 7, 2016 10:12
Eval in class
class A {
constructor () {
this.id = 'id-value';
}
}
class B extends A {
constructor () {
eval("super()");
}
};
@gskachkov
gskachkov / perf result
Created February 22, 2016 23:51
Perf result
MacBook-Pro-Skachkov-2:Webkit2 Developer$ Tools/Scripts/run-jsc-benchmarks after:/Users/Developer/Projects/Webkit2/WebKitBuild/af_opt_1/Release/jsc before:/Users/Developer/Projects/Webkit2/WebKitBuild/before_opt_1/Release/jsc --benchmarks='arrow' --warmup 2 --rerun 4
Warning: could not identify checkout location for after
Warning: could not identify checkout location for before
84/84
Generating benchmark report at /Users/Developer/Projects/Webkit2/after_before_JSRegress_MacBook-Pro-Skachkov-2_20160223_0150_report.txt
And raw data at /Users/Developer/Projects/Webkit2/after_before_JSRegress_MacBook-Pro-Skachkov-2_20160223_0150.json
Benchmark report for JSRegress on MacBook-Pro-Skachkov-2 (MacBookPro8,1).
VMs tested:
@gskachkov
gskachkov / test.js
Created December 23, 2015 18:57
arrow lexical bind arguments
var af = function (x, y) {
let arr;
if (false) {
let arguments = 0;
arr = () => arguments;
} else {
let arguments = 1;
arr = () => arguments;
}
return arr;
let out_of_scope = 0;
class Logger {
constructor() {
this._id = undefined;
}
scheduleLog() {
if (this._id) return;
let in_func_scope = 1;
// Promise.resolve(100).then(() => {
var f = () => {
// ------------------------------ SuperNode -------------------------------------
RegisterID* SuperNode::emitBytecode(BytecodeGenerator& generator, RegisterID* dst)
{
if (dst == generator.ignoredResult())
return 0;
RegisterID* scopeId;
if (generator.isDerivedConstructorContext()) {
scopeId = generator.emitLoadDerivedConstructorFromArrowFunctionLexicalEnvironment();
@gskachkov
gskachkov / Fail for newTarget test
Last active November 29, 2015 00:56
Release scope register
RegisterID* BytecodeGenerator::emitLoadArrowFunctionLexicalEnvironment()
{
ASSERT(m_codeBlock->isArrowFunction() || m_codeBlock->isArrowFunctionContext() || constructorKind() == ConstructorKind::Derived);
if (!m_resolvedArrowFunctionScopeContextRegister)
m_resolvedArrowFunctionScopeContextRegister = emitResolveScope(nullptr, variable(propertyNames().thisIdentifier, ThisResolutionType::Scoped));
return m_resolvedArrowFunctionScopeContextRegister.get();
}