14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// Copyright 2012 the V8 project authors. All rights reserved. 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// Redistribution and use in source and binary forms, with or without 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// modification, are permitted provided that the following conditions are 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// met: 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// * Redistributions of source code must retain the above copyright 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// notice, this list of conditions and the following disclaimer. 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// * Redistributions in binary form must reproduce the above 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// copyright notice, this list of conditions and the following 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// disclaimer in the documentation and/or other materials provided 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// with the distribution. 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// * Neither the name of Google Inc. nor the names of its 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// contributors may be used to endorse or promote products derived 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// from this software without specific prior written permission. 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 211(// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25B// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project// Flags: --allow-natives-syntax 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project(function ApplyArgumentsDeoptInReceiverMapCheck() { 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project function invoker(h, r) { 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return function XXXXX() { 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project var res = h.apply({ fffffff : r(this) }, arguments); 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return res; 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project var y = invoker(m, selfOf); 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project function selfOf(c) { 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project var sssss = c.self_; 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return sssss; 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project function m() { 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return this.fffffff; 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project y.apply({ self_ : 3 }); 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project y.apply({ self_ : 3 }); 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project y.apply({ self_ : 3 }); 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project %OptimizeFunctionOnNextCall(y); 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project assertEquals(y.apply({ self_ : 3, uuu : 4 }), 3); 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project})(); 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project(function ApplyArgumentsDeoptInReceiverExplicit() { 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project function f() { return this + 21; } 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project function deopt() { 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project %DeoptimizeFunction(XXXXX); 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return 21; 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project function XXXXX() { 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return f.apply(deopt(), arguments); 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project }; 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project XXXXX(); 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project XXXXX(); 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project XXXXX(); 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project %OptimizeFunctionOnNextCall(XXXXX); 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project assertEquals(42, XXXXX()); 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project})(); 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project