1a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org// Copyright 2010 the V8 project authors. All rights reserved.
23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// Use of this source code is governed by a BSD-style license that can be
33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// found in the LICENSE file.
4a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
5a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#ifndef V8_V8_TEST_H_
6a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#define V8_V8_TEST_H_
7a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
8a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#include "v8.h"
9a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
10a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org/**
11a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org * Testing support for the V8 JavaScript engine.
12a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org */
13a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.orgnamespace v8 {
14a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
15594006017e46d82ed7146611dc12c20e3c509c7ddanno@chromium.orgclass V8_EXPORT Testing {
16a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org public:
17a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org  enum StressType {
18a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org    kStressTypeOpt,
19a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org    kStressTypeDeopt
20a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org  };
21a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
22a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org  /**
23a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org   * Set the type of stressing to do. The default if not set is kStressTypeOpt.
24a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org   */
25a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org  static void SetStressRunType(StressType type);
26a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
27a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org  /**
28a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org   * Get the number of runs of a given test that is required to get the full
29a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org   * stress coverage.
30a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org   */
31a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org  static int GetStressRuns();
32a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
33a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org  /**
34a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org   * Indicate the number of the run which is about to start. The value of run
35a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org   * should be between 0 and one less than the result from GetStressRuns()
36a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org   */
37a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org  static void PrepareStressRun(int run);
38b08986cb66c3f6687247cb6da186c1e73057e399whesse@chromium.org
39b08986cb66c3f6687247cb6da186c1e73057e399whesse@chromium.org  /**
40b08986cb66c3f6687247cb6da186c1e73057e399whesse@chromium.org   * Force deoptimization of all functions.
41b08986cb66c3f6687247cb6da186c1e73057e399whesse@chromium.org   */
42b08986cb66c3f6687247cb6da186c1e73057e399whesse@chromium.org  static void DeoptimizeAll();
43a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org};
44a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
45a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
46a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org}  // namespace v8
47a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org
48a55512615f5adc085d23bc8589d155c4b579fb7bkasperl@chromium.org#endif  // V8_V8_TEST_H_
49