1b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch// Copyright 2010 the V8 project authors. All rights reserved.
2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file.
4b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch
5b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#ifndef V8_V8_TEST_H_
6b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#define V8_V8_TEST_H_
7b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch
8014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "v8.h"  // NOLINT(build/include)
9b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch
10b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch/**
11b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch * Testing support for the V8 JavaScript engine.
12b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch */
13b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdochnamespace v8 {
14b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch
15b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochclass V8_EXPORT Testing {
16b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch public:
17b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch  enum StressType {
18b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch    kStressTypeOpt,
19b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch    kStressTypeDeopt
20b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch  };
21b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch
22b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch  /**
23b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch   * Set the type of stressing to do. The default if not set is kStressTypeOpt.
24b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch   */
25b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch  static void SetStressRunType(StressType type);
26b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch
27b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch  /**
28b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch   * Get the number of runs of a given test that is required to get the full
29b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch   * stress coverage.
30b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch   */
31b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch  static int GetStressRuns();
32b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch
33b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch  /**
34b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch   * Indicate the number of the run which is about to start. The value of run
35b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch   * should be between 0 and one less than the result from GetStressRuns()
36b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch   */
37b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch  static void PrepareStressRun(int run);
3844f0eee88ff00398ff7f715fab053374d808c90dSteve Block
3944f0eee88ff00398ff7f715fab053374d808c90dSteve Block  /**
4044f0eee88ff00398ff7f715fab053374d808c90dSteve Block   * Force deoptimization of all functions.
4144f0eee88ff00398ff7f715fab053374d808c90dSteve Block   */
42014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  static void DeoptimizeAll(Isolate* isolate);
43b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch};
44b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch
45b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch
46b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch}  // namespace v8
47b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch
48b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#endif  // V8_V8_TEST_H_
49