1014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Copyright 2015 the V8 project authors. All rights reserved. 2014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// found in the LICENSE file. 4014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 5014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Flags: --allow-natives-syntax 6014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 7014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch"use strict"; 8014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 9014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction Message(message) { 10014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch this.message = message; 11014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 12014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 13014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction Inlined(input) { 14014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch var dummy = arguments[1] === undefined; 15014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch if (input instanceof Message) { 16014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return input; 17014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch } 18014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch print("unreachable, but we must create register allocation complexity"); 19014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return []; 20014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 21014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 22014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochfunction Process(input) { 23014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch var ret = []; 24014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch ret.push(Inlined(input[0], 1, 2)); 25014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch return ret; 26014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} 27014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 28014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvar input = [new Message("TEST PASS")]; 29014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch 30014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochProcess(input); 31014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochProcess(input); 32014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch%OptimizeFunctionOnNextCall(Process); 33014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochvar result = Process(input); 34014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochassertEquals("TEST PASS", result[0].message); 35