Add writeBits back in and use the optimizer to utilize the list conversion
This commit is contained in:
@@ -509,12 +509,8 @@ pub fn plutus(id_gen: &IdGenerator) -> TypeInfo {
|
||||
};
|
||||
|
||||
for builtin in DefaultFunction::iter() {
|
||||
// FIXME: Disabling WriteBits for now, since its signature requires the ability to create
|
||||
// list of raw integers, which isn't possible through Aiken at the moment.
|
||||
if !matches!(builtin, DefaultFunction::WriteBits) {
|
||||
let value = from_default_function(builtin, id_gen);
|
||||
plutus.values.insert(builtin.aiken_name(), value);
|
||||
}
|
||||
let value = from_default_function(builtin, id_gen);
|
||||
plutus.values.insert(builtin.aiken_name(), value);
|
||||
}
|
||||
|
||||
let index_tipo = Type::function(vec![Type::data()], Type::int());
|
||||
|
||||
@@ -4028,7 +4028,7 @@ impl<'a> CodeGenerator<'a> {
|
||||
} else {
|
||||
let term = arg_stack.pop().unwrap();
|
||||
|
||||
match term.pierce_no_inlines() {
|
||||
match term.pierce_no_inlines_ref() {
|
||||
Term::Var(_) => Some(term.force()),
|
||||
Term::Delay(inner_term) => Some(inner_term.as_ref().clone()),
|
||||
Term::Apply { .. } => Some(term.force()),
|
||||
@@ -4356,7 +4356,7 @@ impl<'a> CodeGenerator<'a> {
|
||||
known_data_to_type(term, &tipo)
|
||||
};
|
||||
|
||||
if extract_constant(term.pierce_no_inlines()).is_some() {
|
||||
if extract_constant(term.pierce_no_inlines_ref()).is_some() {
|
||||
let mut program = self.new_program(term);
|
||||
|
||||
let mut interner = CodeGenInterner::new();
|
||||
@@ -4379,7 +4379,7 @@ impl<'a> CodeGenerator<'a> {
|
||||
Air::CastToData { tipo } => {
|
||||
let mut term = arg_stack.pop().unwrap();
|
||||
|
||||
if extract_constant(term.pierce_no_inlines()).is_some() {
|
||||
if extract_constant(term.pierce_no_inlines_ref()).is_some() {
|
||||
term = builder::convert_type_to_data(term, &tipo);
|
||||
|
||||
let mut program = self.new_program(term);
|
||||
@@ -4792,7 +4792,7 @@ impl<'a> CodeGenerator<'a> {
|
||||
.apply(term);
|
||||
|
||||
if arg_vec.iter().all(|item| {
|
||||
let maybe_const = extract_constant(item.pierce_no_inlines());
|
||||
let maybe_const = extract_constant(item.pierce_no_inlines_ref());
|
||||
maybe_const.is_some()
|
||||
}) {
|
||||
let mut program = self.new_program(term);
|
||||
|
||||
Reference in New Issue
Block a user