Drain the entire compute budget (#12478)

This commit is contained in:
Jack May 2020-09-25 11:08:10 -07:00 committed by GitHub
parent baeba41cfd
commit d00453f747
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 4 deletions

View File

@ -286,8 +286,9 @@ pub struct MockComputeMeter {
}
impl ComputeMeter for MockComputeMeter {
fn consume(&mut self, amount: u64) -> Result<(), InstructionError> {
let exceeded = self.remaining < amount;
self.remaining = self.remaining.saturating_sub(amount);
if self.remaining == 0 {
if exceeded {
return Err(InstructionError::ComputationalBudgetExceeded);
}
Ok(())

View File

@ -287,8 +287,9 @@ mod tests {
}
impl ComputeMeter for MockComputeMeter {
fn consume(&mut self, amount: u64) -> Result<(), InstructionError> {
let exceeded = self.remaining < amount;
self.remaining = self.remaining.saturating_sub(amount);
if self.remaining == 0 {
if exceeded {
return Err(InstructionError::ComputationalBudgetExceeded);
}
Ok(())

View File

@ -1269,7 +1269,7 @@ mod tests {
let addr = string.as_ptr() as *const _ as u64;
let compute_meter: Rc<RefCell<dyn ComputeMeter>> =
Rc::new(RefCell::new(MockComputeMeter { remaining: 4 }));
Rc::new(RefCell::new(MockComputeMeter { remaining: 3 }));
let log = Rc::new(RefCell::new(vec![]));
let logger: Rc<RefCell<dyn Logger>> =
Rc::new(RefCell::new(MockLogger { log: log.clone() }));

View File

@ -187,8 +187,9 @@ pub struct ThisComputeMeter {
}
impl ComputeMeter for ThisComputeMeter {
fn consume(&mut self, amount: u64) -> Result<(), InstructionError> {
let exceeded = self.remaining < amount;
self.remaining = self.remaining.saturating_sub(amount);
if self.remaining == 0 {
if exceeded {
return Err(InstructionError::ComputationalBudgetExceeded);
}
Ok(())