|  | // 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(); | 
|  | } |