aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/tools/clusterfuzz/v8_fuzz_config.py
blob: 1cd353225b572399d86f12544ebfd326562b2f62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# Copyright 2018 the V8 project authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import random

# List of configuration experiments for correctness fuzzing.
# List of <probability>, <1st config name>, <2nd config name>, <2nd d8>.
# Probabilities must add up to 100.
FOOZZIE_EXPERIMENTS = [
  [10, 'ignition', 'jitless', 'd8'],
  [10, 'ignition', 'slow_path', 'd8'],
  [5, 'ignition', 'slow_path_opt', 'd8'],
  [10, 'ignition', 'ignition_turbo', 'd8'],
  [10, 'ignition_no_ic', 'ignition_turbo', 'd8'],
  [10, 'ignition', 'ignition_turbo_no_ic', 'd8'],
  [10, 'ignition', 'ignition_turbo_opt', 'd8'],
  [10, 'ignition_no_ic', 'ignition_turbo_opt', 'd8'],
  [5, 'ignition_turbo_opt', 'ignition_turbo_opt', 'clang_x86/d8'],
  [5, 'ignition_turbo', 'ignition_turbo', 'clang_x86/d8'],
  [5, 'ignition', 'ignition', 'clang_x86/d8'],
  [5, 'ignition', 'ignition', 'clang_x64_v8_arm64/d8'],
  [5, 'ignition', 'ignition', 'clang_x86_v8_arm/d8'],
]

class Config(object):
  def __init__(self, name, rng=None):
    self.name = name
    self.rng = rng or random.Random()

  def choose_foozzie_flags(self):
    """Randomly chooses a configuration from FOOZZIE_EXPERIMENTS.

    Returns: List of flags to pass to v8_foozzie.py fuzz harness.
    """
    acc = 0
    threshold = self.rng.random() * 100
    for prob, first_config, second_config, second_d8 in FOOZZIE_EXPERIMENTS:
      acc += prob
      if acc > threshold:
        return [
          '--first-config=' + first_config,
          '--second-config=' + second_config,
          '--second-d8=' + second_d8,
        ]
    assert False