From db91d830af1659efe197f268222f2079379beeb0 Mon Sep 17 00:00:00 2001 From: Konstantin Nazarov Date: Fri, 26 Jul 2024 20:20:13 +0100 Subject: [PATCH] Fix some of the Value initializations --- src/common.cpp | 8 ++++---- src/common.hpp | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/common.cpp b/src/common.cpp index b54eb5f..858e3b5 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -4,11 +4,11 @@ Syntax::Syntax(String filename, String modulename, Value expression) {} -Value Syntax::get_value() { - return pod_to_value(_value->expression.get(&*_value)); +Result Syntax::get_value(Arena& arena) { + return Value::create(arena, _value->expression.get(&*_value)); } -Result pod_to_value(PodObject* obj, Arena& arena) { +Result Value::create(Arena& arena, PodObject* obj) { switch (obj->header.tag) { case Tag::Nil: return Value(); @@ -32,7 +32,7 @@ Result syntax_unwrap(Arena& arena, Value& val) { Syntax* syntax = val.to(); if (syntax == 0) return val.copy(arena); - return syntax->get_value(); + return syntax->get_value(arena); } Result Nil::copy(Arena& arena) { return Value(Nil()); } diff --git a/src/common.hpp b/src/common.hpp index 72cc908..9279e36 100644 --- a/src/common.hpp +++ b/src/common.hpp @@ -141,7 +141,7 @@ class Syntax : public Object { return Syntax(TRY(MkGcRoot(obj, arena))); } - Value get_value(); + Result get_value(Arena& arena); virtual Result copy(Arena& arena) final; @@ -214,6 +214,8 @@ class Value { new (buf) T(std::move(obj)); } + static Result create(Arena& arena, PodObject* obj); + template bool is() { return dynamic_cast((Object*)buf) != nullptr; @@ -233,6 +235,4 @@ class Value { uint8_t buf[24]; }; -Value pod_to_value(PodObject* obj); - Result syntax_unwrap(Value& val);