mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-03 14:23:07 +00:00
function API / remove redundancy
This commit is contained in:
parent
53ab0ada11
commit
4e4cfb06b3
@ -65,30 +65,30 @@ pub fn run_interpreter(
|
||||
)
|
||||
}
|
||||
|
||||
pub struct InterpreterSetup {
|
||||
pub struct InterpreterMemoryInitialization {
|
||||
pub label: String,
|
||||
pub stack: Vec<U256>,
|
||||
pub segment: Segment,
|
||||
pub memory: Vec<(usize, Vec<U256>)>,
|
||||
}
|
||||
|
||||
impl InterpreterSetup {
|
||||
pub fn run(self) -> anyhow::Result<Interpreter<'static>> {
|
||||
let label = KERNEL.global_labels[&self.label];
|
||||
let mut stack = self.stack;
|
||||
stack.reverse();
|
||||
let mut interpreter = Interpreter::new_with_kernel(label, stack);
|
||||
for (pointer, data) in self.memory {
|
||||
for (i, term) in data.iter().enumerate() {
|
||||
interpreter
|
||||
.generation_state
|
||||
.memory
|
||||
.set(MemoryAddress::new(0, self.segment, pointer + i), *term)
|
||||
}
|
||||
pub fn run_interpreter_with_memory(
|
||||
memory_init: InterpreterMemoryInitialization,
|
||||
) -> anyhow::Result<Interpreter<'static>> {
|
||||
let label = KERNEL.global_labels[&memory_init.label];
|
||||
let mut stack = memory_init.stack;
|
||||
stack.reverse();
|
||||
let mut interpreter = Interpreter::new_with_kernel(label, stack);
|
||||
for (pointer, data) in memory_init.memory {
|
||||
for (i, term) in data.iter().enumerate() {
|
||||
interpreter.generation_state.memory.set(
|
||||
MemoryAddress::new(0, memory_init.segment, pointer + i),
|
||||
*term,
|
||||
)
|
||||
}
|
||||
interpreter.run()?;
|
||||
Ok(interpreter)
|
||||
}
|
||||
interpreter.run()?;
|
||||
Ok(interpreter)
|
||||
}
|
||||
|
||||
pub fn run<'a>(
|
||||
|
||||
@ -5,7 +5,9 @@ use rand::{thread_rng, Rng};
|
||||
use ripemd::{Digest, Ripemd160};
|
||||
use sha2::Sha256;
|
||||
|
||||
use crate::cpu::kernel::interpreter::InterpreterSetup;
|
||||
use crate::cpu::kernel::interpreter::{
|
||||
run_interpreter_with_memory, InterpreterMemoryInitialization,
|
||||
};
|
||||
use crate::memory::segments::Segment::KernelGeneral;
|
||||
|
||||
/// Standard Blake2b implementation.
|
||||
@ -40,8 +42,8 @@ fn make_interpreter_setup(
|
||||
message: Vec<u8>,
|
||||
hash_fn_label: &str,
|
||||
hash_input_virt: usize,
|
||||
) -> InterpreterSetup {
|
||||
InterpreterSetup {
|
||||
) -> InterpreterMemoryInitialization {
|
||||
InterpreterMemoryInitialization {
|
||||
label: hash_fn_label.to_string(),
|
||||
stack: vec![
|
||||
U256::from(hash_input_virt),
|
||||
@ -75,7 +77,7 @@ fn prepare_test<T>(
|
||||
let interpreter_setup = make_interpreter_setup(message, hash_fn_label, hash_input_virt);
|
||||
|
||||
// Run the interpeter
|
||||
let result = interpreter_setup.run().unwrap();
|
||||
let result = run_interpreter_with_memory(interpreter_setup).unwrap();
|
||||
|
||||
Ok((expected, result.stack().to_vec()))
|
||||
}
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
use std::ops::Range;
|
||||
|
||||
use anyhow::Result;
|
||||
use ethereum_types::U256;
|
||||
|
||||
use crate::cpu::kernel::aggregator::KERNEL;
|
||||
use crate::cpu::kernel::interpreter::Interpreter;
|
||||
use crate::memory::segments::Segment;
|
||||
use crate::witness::memory::MemoryAddress;
|
||||
|
||||
pub struct InterpreterSetup {
|
||||
pub label: String,
|
||||
pub stack: Vec<U256>,
|
||||
pub segment: Segment,
|
||||
pub memory: Vec<(usize, Vec<U256>)>,
|
||||
}
|
||||
|
||||
impl InterpreterSetup {
|
||||
pub fn run(self) -> Result<Interpreter<'static>> {
|
||||
let label = KERNEL.global_labels[&self.label];
|
||||
let mut stack = self.stack;
|
||||
stack.reverse();
|
||||
let mut interpreter = Interpreter::new_with_kernel(label, stack);
|
||||
for (pointer, data) in self.memory {
|
||||
for (i, term) in data.iter().enumerate() {
|
||||
interpreter
|
||||
.generation_state
|
||||
.memory
|
||||
.set(MemoryAddress::new(0, self.segment, pointer + i), *term)
|
||||
}
|
||||
}
|
||||
interpreter.run()?;
|
||||
Ok(interpreter)
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user