From 1a09a34873a7be20d36d437c3438e1ad0de1714d Mon Sep 17 00:00:00 2001 From: Kasey White Date: Fri, 26 Aug 2022 03:26:53 -0400 Subject: [PATCH] mknil builtins --- crates/uplc/src/machine/cost_model.rs | 10 ++++++++-- crates/uplc/src/machine/runtime.rs | 19 +++++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/crates/uplc/src/machine/cost_model.rs b/crates/uplc/src/machine/cost_model.rs index f81e1f45..56d28764 100644 --- a/crates/uplc/src/machine/cost_model.rs +++ b/crates/uplc/src/machine/cost_model.rs @@ -866,8 +866,14 @@ impl BuiltinCosts { .cpu .cost(args[0].to_ex_mem(), args[1].to_ex_mem()), }, - DefaultFunction::MkNilData => todo!(), - DefaultFunction::MkNilPairData => todo!(), + DefaultFunction::MkNilData => ExBudget { + mem: self.mk_nil_data.mem.cost(args[0].to_ex_mem()), + cpu: self.mk_nil_data.cpu.cost(args[0].to_ex_mem()), + }, + DefaultFunction::MkNilPairData => ExBudget { + mem: self.mk_nil_pair_data.mem.cost(args[0].to_ex_mem()), + cpu: self.mk_nil_pair_data.cpu.cost(args[0].to_ex_mem()), + }, } } } diff --git a/crates/uplc/src/machine/runtime.rs b/crates/uplc/src/machine/runtime.rs index 440dc3ec..b79b0b4c 100644 --- a/crates/uplc/src/machine/runtime.rs +++ b/crates/uplc/src/machine/runtime.rs @@ -128,8 +128,8 @@ impl DefaultFunction { DefaultFunction::EqualsData => 2, DefaultFunction::SerialiseData => todo!(), DefaultFunction::MkPairData => 2, - DefaultFunction::MkNilData => todo!(), - DefaultFunction::MkNilPairData => todo!(), + DefaultFunction::MkNilData => 1, + DefaultFunction::MkNilPairData => 1, } } @@ -187,8 +187,8 @@ impl DefaultFunction { DefaultFunction::EqualsData => 0, DefaultFunction::SerialiseData => todo!(), DefaultFunction::MkPairData => 0, - DefaultFunction::MkNilData => todo!(), - DefaultFunction::MkNilPairData => todo!(), + DefaultFunction::MkNilData => 0, + DefaultFunction::MkNilPairData => 0, } } @@ -290,8 +290,8 @@ impl DefaultFunction { DefaultFunction::EqualsData => arg.expect_type(Type::Data), DefaultFunction::SerialiseData => todo!(), DefaultFunction::MkPairData => arg.expect_type(Type::Data), - DefaultFunction::MkNilData => todo!(), - DefaultFunction::MkNilPairData => todo!(), + DefaultFunction::MkNilData => arg.expect_type(Type::Unit), + DefaultFunction::MkNilPairData => arg.expect_type(Type::Unit), } } @@ -716,8 +716,11 @@ impl DefaultFunction { } _ => unreachable!(), }, - DefaultFunction::MkNilData => todo!(), - DefaultFunction::MkNilPairData => todo!(), + DefaultFunction::MkNilData => Ok(Value::Con(Constant::ProtoList(Type::Data, vec![]))), + DefaultFunction::MkNilPairData => Ok(Value::Con(Constant::ProtoList( + Type::Pair(Box::new(Type::Data), Box::new(Type::Data)), + vec![], + ))), } } }