Home | History | Annotate | Download | only in include
      1 // Copyright 2010 the V8 project authors. All rights reserved.
      2 // Redistribution and use in source and binary forms, with or without
      3 // modification, are permitted provided that the following conditions are
      4 // met:
      5 //
      6 //     * Redistributions of source code must retain the above copyright
      7 //       notice, this list of conditions and the following disclaimer.
      8 //     * Redistributions in binary form must reproduce the above
      9 //       copyright notice, this list of conditions and the following
     10 //       disclaimer in the documentation and/or other materials provided
     11 //       with the distribution.
     12 //     * Neither the name of Google Inc. nor the names of its
     13 //       contributors may be used to endorse or promote products derived
     14 //       from this software without specific prior written permission.
     15 //
     16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 
     28 #ifndef V8_V8_TEST_H_
     29 #define V8_V8_TEST_H_
     30 
     31 #include "v8.h"
     32 
     33 #ifdef _WIN32
     34 // Setup for Windows DLL export/import. See v8.h in this directory for
     35 // information on how to build/use V8 as a DLL.
     36 #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED)
     37 #error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the\
     38   build configuration to ensure that at most one of these is set
     39 #endif
     40 
     41 #ifdef BUILDING_V8_SHARED
     42 #define V8EXPORT __declspec(dllexport)
     43 #elif USING_V8_SHARED
     44 #define V8EXPORT __declspec(dllimport)
     45 #else
     46 #define V8EXPORT
     47 #endif
     48 
     49 #else  // _WIN32
     50 
     51 // Setup for Linux shared library export. See v8.h in this directory for
     52 // information on how to build/use V8 as shared library.
     53 #if defined(__GNUC__) && (__GNUC__ >= 4) && defined(V8_SHARED)
     54 #define V8EXPORT __attribute__ ((visibility("default")))
     55 #else  // defined(__GNUC__) && (__GNUC__ >= 4)
     56 #define V8EXPORT
     57 #endif  // defined(__GNUC__) && (__GNUC__ >= 4)
     58 
     59 #endif  // _WIN32
     60 
     61 
     62 /**
     63  * Testing support for the V8 JavaScript engine.
     64  */
     65 namespace v8 {
     66 
     67 class V8EXPORT Testing {
     68  public:
     69   enum StressType {
     70     kStressTypeOpt,
     71     kStressTypeDeopt
     72   };
     73 
     74   /**
     75    * Set the type of stressing to do. The default if not set is kStressTypeOpt.
     76    */
     77   static void SetStressRunType(StressType type);
     78 
     79   /**
     80    * Get the number of runs of a given test that is required to get the full
     81    * stress coverage.
     82    */
     83   static int GetStressRuns();
     84 
     85   /**
     86    * Indicate the number of the run which is about to start. The value of run
     87    * should be between 0 and one less than the result from GetStressRuns()
     88    */
     89   static void PrepareStressRun(int run);
     90 
     91   /**
     92    * Force deoptimization of all functions.
     93    */
     94   static void DeoptimizeAll();
     95 };
     96 
     97 
     98 }  // namespace v8
     99 
    100 
    101 #undef V8EXPORT
    102 
    103 
    104 #endif  // V8_V8_TEST_H_
    105