diff options
Diffstat (limited to 'chromium/v8/tools/clusterfuzz/v8_fuzz_config.py')
-rw-r--r-- | chromium/v8/tools/clusterfuzz/v8_fuzz_config.py | 54 |
1 files changed, 47 insertions, 7 deletions
diff --git a/chromium/v8/tools/clusterfuzz/v8_fuzz_config.py b/chromium/v8/tools/clusterfuzz/v8_fuzz_config.py index 1cd353225b5..0dcacf216bd 100644 --- a/chromium/v8/tools/clusterfuzz/v8_fuzz_config.py +++ b/chromium/v8/tools/clusterfuzz/v8_fuzz_config.py @@ -11,11 +11,11 @@ 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'], + [26, 'ignition', 'ignition_turbo', 'd8'], + [2, 'ignition_no_ic', 'ignition_turbo', 'd8'], + [2, 'ignition', 'ignition_turbo_no_ic', 'd8'], + [18, 'ignition', 'ignition_turbo_opt', 'd8'], + [2, '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'], @@ -23,16 +23,56 @@ FOOZZIE_EXPERIMENTS = [ [5, 'ignition', 'ignition', 'clang_x86_v8_arm/d8'], ] +# Additional flag experiments. List of tuples like +# (<likelihood to use flags in [0,1)>, <flag>). +ADDITIONAL_FLAGS = [ + (0.1, '--stress-marking=100'), + (0.1, '--stress-scavenge=100'), + (0.1, '--stress-compaction-random'), + (0.1, '--random-gc-interval=2000'), + (0.2, '--noanalyze-environment-liveness'), + (0.1, '--stress-delay-tasks'), + (0.01, '--thread-pool-size=1'), + (0.01, '--thread-pool-size=2'), + (0.01, '--thread-pool-size=4'), + (0.01, '--thread-pool-size=8'), + (0.1, '--interrupt-budget=1000'), +] + class Config(object): - def __init__(self, name, rng=None): + def __init__(self, name, rng=None, random_seed=None): + """ + Args: + name: Name of the used fuzzer. + rng: Random number generator for generating experiments. + random_seed: Random-seed used for d8 throughout one fuzz session. + TODO(machenbach): Remove random_seed after a grace period of a couple of + days. We only have it to keep bisection stable. Afterwards we can just + use rng. + """ self.name = name self.rng = rng or random.Random() + self.random_seed = random_seed def choose_foozzie_flags(self): """Randomly chooses a configuration from FOOZZIE_EXPERIMENTS. Returns: List of flags to pass to v8_foozzie.py fuzz harness. """ + # TODO(machenbach): Temporarily use same RNG state for all test cases in one + # fuzz session. See also TODO above. + if self.random_seed is not None: + flags_rng = random.Random(self.random_seed) + else: + flags_rng = random.Random() + + # Add additional flags to second config based on experiment percentages. + extra_flags = [] + for p, flag in ADDITIONAL_FLAGS: + if flags_rng.random() < p: + extra_flags.append('--second-config-extra-flags=%s' % flag) + + # Calculate flags determining the experiment. acc = 0 threshold = self.rng.random() * 100 for prob, first_config, second_config, second_d8 in FOOZZIE_EXPERIMENTS: @@ -42,5 +82,5 @@ class Config(object): '--first-config=' + first_config, '--second-config=' + second_config, '--second-d8=' + second_d8, - ] + ] + extra_flags assert False |