0ffc1ba5fc
Until now, the cross-over mutator would choke on several expressions from DB and bail out (just wastes some time). We also have a script, test_db.js to test on how many expressions it is going to bail out. With this change, we already omit adding such expressions to the DB in the first place. As a result, the test_db script now returns zero failing expressions (while all other expressions remain). Regression tests that now no longer apply are removed, instead a test is added that ensures that a failing expression isn't added to the DB. No-Try: true Bug: chromium:1044942 Change-Id: I14a4fe802c99114cf3a8f71188273475a7cb9c13 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3129340 Reviewed-by: Liviu Rau <liviurau@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/main@{#76598}
66 lines
1.4 KiB
JavaScript
66 lines
1.4 KiB
JavaScript
// Copyright 2020 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.
|
|
|
|
/**
|
|
* @fileoverview Collect JS nodes.
|
|
*/
|
|
|
|
const program = require('commander');
|
|
|
|
const corpus = require('./corpus.js');
|
|
const db = require('./db.js');
|
|
const path = require('path');
|
|
|
|
const sourceHelpers = require('./source_helpers.js');
|
|
|
|
function main() {
|
|
Error.stackTraceLimit = Infinity;
|
|
|
|
program
|
|
.version('0.0.1')
|
|
.option('-i, --input_dir <path>', 'Input directory.')
|
|
.option('-o, --output_dir <path>', 'Output directory.')
|
|
.parse(process.argv);
|
|
|
|
if (!program.args.length) {
|
|
console.log('Need to specify corpora.');
|
|
return;
|
|
}
|
|
|
|
if (!program.output_dir) {
|
|
console.log('Need to specify output dir.');
|
|
return;
|
|
}
|
|
|
|
const mutateDb = new db.MutateDbWriter(program.output_dir);
|
|
|
|
const inputDir = path.resolve(program.input_dir);
|
|
for (const corpusName of program.args) {
|
|
const curCorpus = new corpus.Corpus(inputDir, corpusName);
|
|
for (const relPath of curCorpus.relFiles()) {
|
|
let source;
|
|
try {
|
|
source = sourceHelpers.loadSource(inputDir, relPath);
|
|
} catch (e) {
|
|
console.log(e);
|
|
continue;
|
|
}
|
|
|
|
if (!source) {
|
|
continue;
|
|
}
|
|
|
|
try{
|
|
mutateDb.process(source);
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
mutateDb.writeIndex();
|
|
}
|
|
|
|
main();
|