diff --git a/src/classic/clvm_tools/stages/stage_2/optimize.rs b/src/classic/clvm_tools/stages/stage_2/optimize.rs index d723e279f..7fde38552 100644 --- a/src/classic/clvm_tools/stages/stage_2/optimize.rs +++ b/src/classic/clvm_tools/stages/stage_2/optimize.rs @@ -1,4 +1,3 @@ -use std::borrow::Borrow; use std::cell::{Ref, RefCell}; use std::collections::HashMap; use std::mem::swap; @@ -635,7 +634,7 @@ pub fn optimize_sexp_( // pass and need to cache the result. { let memo_ref: Ref> = memo.borrow(); - let memo: &HashMap = memo_ref.borrow(); + let memo: &HashMap = &memo_ref; if let Some(res) = memo.get(&AllocatorRefOrTreeHash::new_from_nodeptr(r_)) { return Ok(*res); } @@ -645,7 +644,7 @@ pub fn optimize_sexp_( let footprint = AllocatorRefOrTreeHash::new_from_sexp(allocator, r_); { let memo_ref: Ref> = memo.borrow(); - let memo: &HashMap = memo_ref.borrow(); + let memo: &HashMap = &memo_ref; if let Some(res) = memo.get(&footprint) { return Ok(*res); } diff --git a/src/compiler/codegen.rs b/src/compiler/codegen.rs index 20fff0062..48527f81f 100644 --- a/src/compiler/codegen.rs +++ b/src/compiler/codegen.rs @@ -91,7 +91,7 @@ fn helper_atom(h: &HelperForm) -> SExp { fn build_tree(l: Srcloc, s: usize, e: usize, helper_array: &[HelperForm]) -> SExp { if e - s == 1 { - helper_atom(helper_array[s].borrow()) + helper_atom(&helper_array[s]) } else { let mid = (e + s) / 2; let car = build_tree(l.clone(), s, mid, helper_array); diff --git a/src/compiler/compiler.rs b/src/compiler/compiler.rs index 7639f88b5..bab6a1020 100644 --- a/src/compiler/compiler.rs +++ b/src/compiler/compiler.rs @@ -472,7 +472,7 @@ pub fn extract_program_and_env(program: Rc) -> Option<(Rc, Rc) return None; } - match (is_apply(&lst[0]), lst[1].borrow(), lst[2].proper_list()) { + match (is_apply(&lst[0]), &lst[1], lst[2].proper_list()) { (true, real_program, Some(cexp)) => { if cexp.len() != 3 || !is_cons(&cexp[0]) || !is_whole_env(&cexp[2]) { None @@ -492,7 +492,7 @@ pub fn is_at_capture(head: Rc, rest: Rc) -> Option<(Vec, Rc { - let compiled_val: &CompileForm = v.borrow(); + let compiled_val: &CompileForm = &v; Ok(compiled_val.clone()) } }; diff --git a/src/compiler/sexp.rs b/src/compiler/sexp.rs index 599eea3fe..881694f82 100644 --- a/src/compiler/sexp.rs +++ b/src/compiler/sexp.rs @@ -143,7 +143,7 @@ impl Display for SExp { } else { let vlen = s.len() * 2; let mut outbuf = vec![0; vlen]; - bin2hex(s, &mut outbuf).map_err(|_e| std::fmt::Error::default())?; + bin2hex(s, &mut outbuf).map_err(|_e| std::fmt::Error)?; formatter.write_str("0x")?; formatter.write_str( std::str::from_utf8(&outbuf).expect("only hex digits expected"), @@ -781,7 +781,7 @@ where for this_char in s { let next_location = start.clone().advance(this_char); - match parse_sexp_step(start.clone(), parse_state.borrow(), this_char) { + match parse_sexp_step(start.clone(), &parse_state, this_char) { SExpParseResult::Error(l, e) => { return Err((l, e)); } diff --git a/support/recompile_check.py b/support/recompile_check.py index 81c1244d3..c991198e4 100644 --- a/support/recompile_check.py +++ b/support/recompile_check.py @@ -1,24 +1,55 @@ import os +from pathlib import Path import subprocess import traceback +FULL_NODE='chia/full_node/puzzles' +CAT_WALLET='chia/wallet/cat_wallet/puzzles' +DID_WALLET='chia/wallet/did_wallet/puzzles' +NFT_WALLET='chia/wallet/nft_wallet/puzzles' +POOLS='chia/pools/puzzles' +CONSENSUS='chia/consensus/puzzles' +GENTEST='tests/generator/puzzles' + +def full_node(x): + return {'fname': x, 'dirname': FULL_NODE} + +def cat_wallet(x): + return {'fname': x, 'dirname': CAT_WALLET} + +def did_wallet(x): + return {'fname': x, 'dirname': DID_WALLET} + +def nft_wallet(x): + return {'fname': x, 'dirname': NFT_WALLET} + +def pools(x): + return {'fname': x, 'dirname': POOLS} + +def consensus(x): + return {'fname': x, 'dirname': CONSENSUS} + +def gentest(x): + return {'fname': x, 'dirname': GENTEST} + recompile_list = [ - 'block_program_zero.clsp', - 'calculate_synthetic_public_key.clsp', - 'chialisp_deserialisation.clsp', - 'decompress_coin_spend_entry.clsp', - 'decompress_coin_spend_entry_with_prefix.clsp', - 'decompress_puzzle.clsp', - 'delegated_tail.clsp', - 'did_innerpuz.clsp', - 'everything_with_signature.clsp', - 'genesis_by_coin_id.clsp', - 'genesis_by_puzzle_hash.clsp', - 'nft_metadata_updater_default.clsp', - 'nft_metadata_updater_updateable.clsp', - 'nft_ownership_layer.clsp', - 'nft_ownership_transfer_program_one_way_claim_with_royalties.clsp', - 'nft_state_layer.clsp', + full_node('block_program_zero.clsp'), + full_node('decompress_coin_spend_entry.clsp'), + full_node('decompress_coin_spend_entry_with_prefix.clsp'), + full_node('decompress_puzzle.clsp'), + cat_wallet('delegated_tail.clsp'), + cat_wallet('everything_with_signature.clsp'), + cat_wallet('genesis_by_coin_id.clsp'), + cat_wallet('genesis_by_puzzle_hash.clsp'), + did_wallet('did_innerpuz.clsp'), + nft_wallet('nft_metadata_updater_default.clsp'), + nft_wallet('nft_metadata_updater_updateable.clsp'), + nft_wallet('nft_ownership_layer.clsp'), + nft_wallet('nft_ownership_transfer_program_one_way_claim_with_royalties.clsp'), + nft_wallet('nft_state_layer.clsp'), + pools('pool_member_innerpuz.clsp'), + pools('pool_waitingroom_innerpuz.clsp'), + consensus('rom_bootstrap_generator.clsp'), 'p2_conditions.clsp', 'p2_delegated_conditions.clsp', 'p2_delegated_puzzle.clsp', @@ -27,24 +58,28 @@ 'p2_puzzle_hash.clsp', 'p2_singleton.clsp', 'p2_singleton_or_delayed_puzhash.clsp', - 'pool_member_innerpuz.clsp', - 'pool_waitingroom_innerpuz.clsp', - 'rom_bootstrap_generator.clsp', 'settlement_payments.clsp', - 'sha256tree_module.clsp', 'singleton_launcher.clsp', 'singleton_top_layer.clsp', 'singleton_top_layer_v1_1.clsp', - 'test_generator_deserialize.clsp', - 'test_multiple_generator_input_arguments.clsp' + gentest('test_generator_deserialize.clsp'), + gentest('test_multiple_generator_input_arguments.clsp') ] -for fname in recompile_list: - hexfile = f'./chia/wallet/puzzles/{fname}.hex' +for recompile_entry in recompile_list: + if 'dirname' in recompile_entry and 'fname' in recompile_entry: + dirname = recompile_entry['dirname'] + filename = recompile_entry['fname'] + else: + filename = recompile_entry + dirname = 'chia/wallet/puzzles' + + srcfile = str(Path(dirname) / Path(filename)) + hexfile = f'{str(srcfile)}.hex' hexdata = open(hexfile).read().strip() os.unlink(hexfile) try: - compiled = subprocess.check_output(['../target/release/run', '-i', 'chia/wallet/puzzles/', f'chia/wallet/puzzles/{fname}']).strip() + compiled = subprocess.check_output(['../target/release/run', '-i', dirname, '-i', 'chia/wallet/puzzles', srcfile]).strip() recompile = subprocess.check_output(['../target/release/opc', compiled]).decode('utf8').strip() except: print(f'compiling {fname}')