v8/test/js-perf-test/Classes/super.js

58 lines
1.0 KiB
JavaScript
Raw Normal View History

// Copyright 2014 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
'use strict';
var SuperBenchmark = new BenchmarkSuite('Super', [100], [
new Benchmark('SuperMethodCall', false, false, 0, SuperMethodCall),
new Benchmark('SuperGetterCall', false, false, 0, SuperGetterCall),
new Benchmark('SuperSetterCall', false, false, 0, SuperSetterCall),
]);
class Base {
constructor() {}
get x() {
return this._x++;
}
set x(v) {
this._x += v;
return this._x;
}
f() {
return this._x++;
}
}
class Derived extends Base {
constructor() {
super();
this._x = 1;
}
SuperCall() {
return super.f();
}
GetterCall() {
return super.x;
}
SetterCall() {
return super.x = 5;
}
}
var derived = new Derived();
function SuperMethodCall() {
return derived.SuperCall();
}
function SuperGetterCall() {
return derived.GetterCall();
}
function SuperSetterCall() {
return derived.SetterCall();
}