| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright 2015 the V8 project authors. All rights reserved. | 
|  | 2 // Use of this source code is governed by a BSD-style license that can be | 
|  | 3 // found in the LICENSE file. | 
|  | 4 | 
|  | 5 // Flags: --allow-natives-syntax | 
|  | 6 | 
|  | 7 function receiver() { | 
|  | 8   return this; | 
|  | 9 } | 
|  | 10 | 
|  | 11 function construct(f) { | 
|  | 12   "use strict"; | 
|  | 13   class B {} | 
|  | 14   class C extends B { | 
|  | 15     bar() { return super.foo() } | 
|  | 16   } | 
|  | 17   B.prototype.foo = f; | 
|  | 18   return new C(); | 
|  | 19 } | 
|  | 20 | 
|  | 21 function check(x, value, type) { | 
|  | 22   assertEquals("object", typeof x); | 
|  | 23   assertInstanceof(x, type); | 
|  | 24   assertEquals(value, x); | 
|  | 25 } | 
|  | 26 | 
|  | 27 var o = construct(receiver); | 
|  | 28 check(o.bar.call(123), Object(123), Number); | 
|  | 29 check(o.bar.call("a"), Object("a"), String); | 
|  | 30 // TODO(4526): Should convert to global receiver instead of throwing TypeError. | 
|  | 31 // check(o.bar.call(undefined), this, Object); | 
|  | 32 // check(o.bar.call(null), this, Object); | 
|  | 33 | 
|  | 34 %OptimizeFunctionOnNextCall(o.bar); | 
|  | 35 check(o.bar.call(456), Object(456), Number); | 
|  | 36 check(o.bar.call("b"), Object("b"), String); | 
|  | 37 // TODO(4526): Should convert to global receiver instead of throwing TypeError. | 
|  | 38 // check(o.bar.call(undefined), this, Object); | 
|  | 39 // check(o.bar.call(null), this, Object); | 
| OLD | NEW | 
|---|