Skip to content

Commit 756ac40

Browse files
committed
temp revert exec_create
1 parent 9735c08 commit 756ac40

File tree

1 file changed

+33
-82
lines changed

1 file changed

+33
-82
lines changed

crates/cheatcodes/src/inspector.rs

Lines changed: 33 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -85,99 +85,50 @@ pub trait CheatcodesExecutor {
8585
/// [revm::Inspector].
8686
fn get_inspector<'a>(&'a mut self, cheats: &'a mut Cheatcodes) -> Box<dyn InspectorExt + 'a>;
8787

88+
/// Obtains [revm::Evm] instance and executes the given CREATE frame.
8889
/// Obtains [revm::Evm] instance and executes the given CREATE frame.
8990
fn exec_create(
9091
&mut self,
9192
inputs: CreateInputs,
9293
ccx: &mut CheatsCtxt,
9394
) -> Result<CreateOutcome, EVMError<DatabaseError>> {
94-
// /// Constructs [revm::Evm] and runs a given closure with it.
95-
// fn with_evm<E, F, O>(
96-
// executor: &mut E,
97-
// ccx: &mut CheatsCtxt,
98-
// f: F,
99-
// ) -> Result<O, EVMError<DatabaseError>>
100-
// where
101-
// E: CheatcodesExecutor + ?Sized,
102-
// F: for<'a, 'b> FnOnce(
103-
// &mut revm::Evm<'_, &'b mut dyn InspectorExt, &'a mut dyn DatabaseExt>,
104-
// ) -> Result<O, EVMError<DatabaseError>>,
105-
// {
106-
// let mut inspector = executor.get_inspector(ccx.state);
107-
// let error = std::mem::replace(&mut ccx.ecx.error, Ok(()));
108-
// let l1_block_info = std::mem::take(&mut ccx.ecx.l1_block_info);
109-
110-
// let inner = revm::InnerEvmContext {
111-
// env: ccx.ecx.env.clone(),
112-
// journaled_state: std::mem::replace(
113-
// &mut ccx.ecx.journaled_state,
114-
// revm::JournaledState::new(Default::default(), Default::default()),
115-
// ),
116-
// db: &mut ccx.ecx.db as &mut dyn DatabaseExt,
117-
// error,
118-
// l1_block_info,
119-
// };
120-
121-
// let mut evm = new_evm_with_context(inner, &mut *inspector);
122-
123-
// let res = f(&mut evm)?;
124-
125-
// ccx.ecx.journaled_state = evm.context.evm.inner.journaled_state;
126-
// ccx.ecx.env = evm.context.evm.inner.env;
127-
// ccx.ecx.l1_block_info = evm.context.evm.inner.l1_block_info;
128-
// ccx.ecx.error = evm.context.evm.inner.error;
129-
130-
// Ok(res)
131-
// }
132-
133-
let mut inspector = self.get_inspector(ccx.state);
134-
let error = std::mem::replace(&mut ccx.ecx.error, Ok(()));
135-
// let l1_block_info = std::mem::take(&mut ccx.ecx.l1_block_info);
136-
137-
// let journaled_state = std::mem::replace(
138-
// &mut ccx.ecx.journaled_state,
139-
// // revm::JournaledState::new(Default::default(), Default::default()),
140-
// );
141-
142-
let mut evm = new_evm_with_context(ccx.ecx, &mut *inspector);
143-
144-
// with_evm(self, ccx, |evm| {
145-
evm.journaled_state.depth += 1;
146-
147-
// Handle EOF bytecode
148-
let first_frame_or_result = if evm.cfg.spec.is_enabled_in(SpecId::OSAKA) &&
149-
inputs.scheme == CreateScheme::Create &&
150-
inputs.init_code.starts_with(&EOF_MAGIC_BYTES)
151-
{
152-
evm.execution().eofcreate(
153-
&mut evm.context,
154-
Box::new(EOFCreateInputs::new(
155-
inputs.caller,
156-
inputs.value,
157-
inputs.gas_limit,
158-
EOFCreateKind::Tx { initdata: inputs.init_code },
159-
)),
160-
)?
161-
} else {
162-
evm.handler.execution().create(&mut evm.context, Box::new(inputs))?
163-
};
95+
with_evm(self, ccx, |evm| {
96+
evm.context.evm.inner.journaled_state.depth += 1;
16497

165-
let mut result = match first_frame_or_result {
166-
FrameOrResult::Item(first_frame) => evm.run_the_loop(first_frame)?,
167-
FrameOrResult::Result(result) => result,
168-
};
98+
// Handle EOF bytecode
99+
let first_frame_or_result = if evm.handler.cfg.spec_id.is_enabled_in(SpecId::OSAKA) &&
100+
inputs.scheme == CreateScheme::Create &&
101+
inputs.init_code.starts_with(&EOF_MAGIC_BYTES)
102+
{
103+
evm.handler.execution().eofcreate(
104+
&mut evm.context,
105+
Box::new(EOFCreateInputs::new(
106+
inputs.caller,
107+
inputs.value,
108+
inputs.gas_limit,
109+
EOFCreateKind::Tx { initdata: inputs.init_code },
110+
)),
111+
)?
112+
} else {
113+
evm.handler.execution().create(&mut evm.context, Box::new(inputs))?
114+
};
169115

170-
evm.handler.execution().last_frame_return(&mut evm.context, &mut result)?;
116+
let mut result = match first_frame_or_result {
117+
revm::FrameOrResult::Frame(first_frame) => evm.run_the_loop(first_frame)?,
118+
revm::FrameOrResult::Result(result) => result,
119+
};
171120

172-
let outcome = match result {
173-
FrameResult::Call(_) => unreachable!(),
174-
FrameResult::Create(create) | FrameResult::EOFCreate(create) => create,
175-
};
121+
evm.handler.execution().last_frame_return(&mut evm.context, &mut result)?;
176122

177-
evm.journaled_state.depth -= 1;
123+
let outcome = match result {
124+
revm::FrameResult::Call(_) => unreachable!(),
125+
revm::FrameResult::Create(create) | revm::FrameResult::EOFCreate(create) => create,
126+
};
127+
128+
evm.context.evm.inner.journaled_state.depth -= 1;
178129

179-
Ok(outcome)
180-
// })
130+
Ok(outcome)
131+
})
181132
}
182133

183134
fn console_log(&mut self, ccx: &mut CheatsCtxt, msg: &str) {

0 commit comments

Comments
 (0)