Skip to content

Commit

Permalink
Do not duplicate nockma stdlib in the nockma backend (#3005)
Browse files Browse the repository at this point in the history
  • Loading branch information
janmasrovira committed Sep 9, 2024
1 parent 372375e commit f47b9b0
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/Juvix/Compiler/Nockma/Language.hs
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ data AtomHint
| AtomHintNil
| AtomHintVoid
| AtomHintFunctionsPlaceholder
| AtomHintStdlibPlaceholder
| AtomHintString
deriving stock (Show, Eq, Lift, Generic)

Expand Down
1 change: 1 addition & 0 deletions src/Juvix/Compiler/Nockma/Pretty/Base.hs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ instance forall a. (PrettyCode a, NockNatural a) => PrettyCode (Atom a) where
AtomHintNil -> return (annotate (AnnKind KNameConstructor) Str.nil)
AtomHintVoid -> return (annotate (AnnKind KNameAxiom) Str.void)
AtomHintFunctionsPlaceholder -> return (annotate (AnnKind KNameAxiom) Str.functionsPlaceholder)
AtomHintStdlibPlaceholder -> return (annotate (AnnKind KNameAxiom) Str.stdlibPlaceholder)
AtomHintString -> atomToText atm >>= ppCode

instance PrettyCode Text where
Expand Down
17 changes: 15 additions & 2 deletions src/Juvix/Compiler/Nockma/Translation/FromTree.hs
Original file line number Diff line number Diff line change
Expand Up @@ -690,7 +690,7 @@ compile = \case
FunctionsLibrary -> OpQuote # functionsLibraryPlaceHolder
RawCode -> opAddress "allocClosureFunPath" (fpath <> closurePath RawCode)
TempStack -> remakeList []
StandardLibrary -> OpQuote # stdlib
StandardLibrary -> OpQuote # stdlibPlaceHolder
ClosureTotalArgsNum -> nockNatLiteral farity
ClosureArgsNum -> nockIntegralLiteral (length args)
ClosureArgs -> remakeList args
Expand Down Expand Up @@ -958,7 +958,7 @@ runCompilerWith opts constrs moduleFuns mainFun = makeAnomaFun
FunctionsLibrary -> ("functionsLibrary-" <> funName) @ functionsLibraryPlaceHolder
RawCode -> ("rawCode-" <> funName) @ c
TempStack -> ("tempStack-" <> funName) @ nockNilHere
StandardLibrary -> ("stdlib-" <> funName) @ stdlib
StandardLibrary -> ("stdlib-" <> funName) @ stdlibPlaceHolder
ClosureTotalArgsNum -> ("closureTotalArgsNum-" <> funName) @ nockNilHere
ClosureArgsNum -> ("closureArgsNum-" <> funName) @ nockNilHere
ClosureArgs -> ("closureArgs-" <> funName) @ nockNilHere
Expand Down Expand Up @@ -1001,6 +1001,19 @@ runCompilerWith opts constrs moduleFuns mainFun = makeAnomaFun
{ _anomaClosure = mainClosure
}

stdlibPlaceHolder :: Term Natural
stdlibPlaceHolder =
TermAtom
Atom
{ _atomInfo =
AtomInfo
{ _atomInfoLoc = Irrelevant Nothing,
_atomInfoTag = Nothing,
_atomInfoHint = Just AtomHintStdlibPlaceholder
},
_atom = 0 :: Natural
}

functionsLibraryPlaceHolder :: Term Natural
functionsLibraryPlaceHolder =
TermAtom
Expand Down
3 changes: 3 additions & 0 deletions src/Juvix/Extra/Strings.hs
Original file line number Diff line number Diff line change
Expand Up @@ -1022,6 +1022,9 @@ version = "version"
functionsPlaceholder :: (IsString s) => s
functionsPlaceholder = "functionsLibrary_placeholder"

stdlibPlaceholder :: (IsString s) => s
stdlibPlaceholder = "stdlib_placeholder"

theFunctionsLibrary :: (IsString s) => s
theFunctionsLibrary = "the_functionsLibrary"

Expand Down

0 comments on commit f47b9b0

Please sign in to comment.