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