parent
2b092f40fa
commit
676a149497
@ -165,7 +165,7 @@ where
|
|||||||
|
|
||||||
/// Set the `fuzz_level`
|
/// Set the `fuzz_level`
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn set_fuzz_leve(&mut self, fuzz_level: usize) {
|
pub fn set_fuzz_level(&mut self, fuzz_level: usize) {
|
||||||
self.fuzz_level = fuzz_level;
|
self.fuzz_level = fuzz_level;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,6 +32,8 @@ pub struct SchedulerMetadata {
|
|||||||
cycles: u64,
|
cycles: u64,
|
||||||
/// Size of the observer map
|
/// Size of the observer map
|
||||||
bitmap_size: u64,
|
bitmap_size: u64,
|
||||||
|
/// Sum of log(bitmap_size)
|
||||||
|
bitmap_size_log: f64,
|
||||||
/// Number of filled map entries
|
/// Number of filled map entries
|
||||||
bitmap_entries: u64,
|
bitmap_entries: u64,
|
||||||
/// Queue cycles
|
/// Queue cycles
|
||||||
@ -50,6 +52,7 @@ impl SchedulerMetadata {
|
|||||||
exec_time: Duration::from_millis(0),
|
exec_time: Duration::from_millis(0),
|
||||||
cycles: 0,
|
cycles: 0,
|
||||||
bitmap_size: 0,
|
bitmap_size: 0,
|
||||||
|
bitmap_size_log: 0.0,
|
||||||
bitmap_entries: 0,
|
bitmap_entries: 0,
|
||||||
queue_cycles: 0,
|
queue_cycles: 0,
|
||||||
n_fuzz: vec![0; N_FUZZ_SIZE],
|
n_fuzz: vec![0; N_FUZZ_SIZE],
|
||||||
@ -95,6 +98,17 @@ impl SchedulerMetadata {
|
|||||||
self.bitmap_size = val;
|
self.bitmap_size = val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[must_use]
|
||||||
|
/// The sum of log(`bitmap_size`)
|
||||||
|
pub fn bitmap_size_log(&self) -> f64 {
|
||||||
|
self.bitmap_size_log
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Setts the sum of log(`bitmap_size`)
|
||||||
|
pub fn set_bitmap_size_log(&mut self, val: f64) {
|
||||||
|
self.bitmap_size_log = val;
|
||||||
|
}
|
||||||
|
|
||||||
/// The number of filled map entries
|
/// The number of filled map entries
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn bitmap_entries(&self) -> u64 {
|
pub fn bitmap_entries(&self) -> u64 {
|
||||||
|
@ -321,7 +321,7 @@ where
|
|||||||
let favored = entry.has_metadata::<IsFavoredMetadata>();
|
let favored = entry.has_metadata::<IsFavoredMetadata>();
|
||||||
|
|
||||||
let avg_exec_us = psmeta.exec_time().as_nanos() as f64 / psmeta.cycles() as f64;
|
let avg_exec_us = psmeta.exec_time().as_nanos() as f64 / psmeta.cycles() as f64;
|
||||||
let avg_bitmap_size = psmeta.bitmap_size() / psmeta.bitmap_entries();
|
let avg_bitmap_size = psmeta.bitmap_size_log() / psmeta.bitmap_entries() as f64;
|
||||||
|
|
||||||
let q_bitmap_size = tcmeta.bitmap_size() as f64;
|
let q_bitmap_size = tcmeta.bitmap_size() as f64;
|
||||||
|
|
||||||
@ -342,7 +342,7 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
weight *= avg_exec_us / q_exec_us;
|
weight *= avg_exec_us / q_exec_us;
|
||||||
weight *= libm::log2(q_bitmap_size) / (avg_bitmap_size as f64);
|
weight *= libm::log2(q_bitmap_size).max(1.0) / avg_bitmap_size;
|
||||||
|
|
||||||
let tc_ref = match entry.metadata().get::<MapIndexesMetadata>() {
|
let tc_ref = match entry.metadata().get::<MapIndexesMetadata>() {
|
||||||
Some(meta) => meta.refcnt() as f64,
|
Some(meta) => meta.refcnt() as f64,
|
||||||
|
@ -92,7 +92,11 @@ where
|
|||||||
Z: Evaluator<E, EM, State = E::State>,
|
Z: Evaluator<E, EM, State = E::State>,
|
||||||
{
|
{
|
||||||
#[inline]
|
#[inline]
|
||||||
#[allow(clippy::let_and_return, clippy::too_many_lines)]
|
#[allow(
|
||||||
|
clippy::let_and_return,
|
||||||
|
clippy::too_many_lines,
|
||||||
|
clippy::cast_precision_loss
|
||||||
|
)]
|
||||||
fn perform(
|
fn perform(
|
||||||
&mut self,
|
&mut self,
|
||||||
fuzzer: &mut Z,
|
fuzzer: &mut Z,
|
||||||
@ -219,7 +223,6 @@ where
|
|||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(clippy::cast_precision_loss)]
|
|
||||||
if !unstable_entries.is_empty() {
|
if !unstable_entries.is_empty() {
|
||||||
// If we see new stable entries executing this new corpus entries, then merge with the existing one
|
// If we see new stable entries executing this new corpus entries, then merge with the existing one
|
||||||
if state.has_metadata::<UnstableEntriesMetadata>() {
|
if state.has_metadata::<UnstableEntriesMetadata>() {
|
||||||
@ -261,13 +264,14 @@ where
|
|||||||
psmeta.set_exec_time(psmeta.exec_time() + total_time);
|
psmeta.set_exec_time(psmeta.exec_time() + total_time);
|
||||||
psmeta.set_cycles(psmeta.cycles() + (iter as u64));
|
psmeta.set_cycles(psmeta.cycles() + (iter as u64));
|
||||||
psmeta.set_bitmap_size(psmeta.bitmap_size() + bitmap_size);
|
psmeta.set_bitmap_size(psmeta.bitmap_size() + bitmap_size);
|
||||||
|
psmeta.set_bitmap_size_log(psmeta.bitmap_size_log() + libm::log2(bitmap_size as f64));
|
||||||
psmeta.set_bitmap_entries(psmeta.bitmap_entries() + 1);
|
psmeta.set_bitmap_entries(psmeta.bitmap_entries() + 1);
|
||||||
|
|
||||||
let mut testcase = state.corpus().get(corpus_idx)?.borrow_mut();
|
let mut testcase = state.corpus().get(corpus_idx)?.borrow_mut();
|
||||||
let fuzz_level = testcase.fuzz_level();
|
let fuzz_level = testcase.fuzz_level();
|
||||||
|
|
||||||
testcase.set_exec_time(total_time / (iter as u32));
|
testcase.set_exec_time(total_time / (iter as u32));
|
||||||
testcase.set_fuzz_leve(fuzz_level + 1);
|
testcase.set_fuzz_level(fuzz_level + 1);
|
||||||
// println!("time: {:#?}", testcase.exec_time());
|
// println!("time: {:#?}", testcase.exec_time());
|
||||||
|
|
||||||
let data = testcase
|
let data = testcase
|
||||||
|
Loading…
x
Reference in New Issue
Block a user