From 14244f7d9651ca87af81356faf917edf0d9dcc05 Mon Sep 17 00:00:00 2001 From: ketmar Date: Fri, 3 Nov 2023 00:11:11 +0000 Subject: [PATCH] UrForth: more flagged words FossilOrigin-Name: 19163a28ef5aa638b9875b83777c96ce968afd3a9e9e70294ceef8d982538f8e --- src/liburforth/urforth.c | 4 ++++ urflibs/exceptions.f | 2 +- urflibs/init/bootstrap/01-colon-semicolon.f | 5 ++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/liburforth/urforth.c b/src/liburforth/urforth.c index f033c8d..5b01e3b 100644 --- a/src/liburforth/urforth.c +++ b/src/liburforth/urforth.c @@ -2542,6 +2542,8 @@ __attribute__((unused)) static void ufoDumpWordHeader (const uint32_t lfa) { if (flags & UFW_FLAG_VOCAB) fprintf(stderr, " VOCAB"); if (flags & UFW_FLAG_SCOLON) fprintf(stderr, " SCOLON"); if (flags & UFW_FLAG_PROTECTED) fprintf(stderr, " PROTECTED"); + if (flags & UFW_WARG_CONDBRANCH) fprintf(stderr, " CONDBRANCH"); + if (flags & UFW_FLAG_MAYRETURN) fprintf(stderr, " MAYRETURN"); fputc('\n', stderr); } if ((flags & 0xff00U) != 0) { @@ -10002,6 +10004,8 @@ UFO_DISABLE_INLINE void ufoInitBasicCompilerWords (void) { ufoDefineConstant("(WFLAG-VOCAB)", UFW_FLAG_VOCAB); ufoDefineConstant("(WFLAG-SCOLON)", UFW_FLAG_SCOLON); ufoDefineConstant("(WFLAG-PROTECTED)", UFW_FLAG_PROTECTED); + ufoDefineConstant("(WFLAG-CONDBRANCH)", UFW_WARG_CONDBRANCH); + ufoDefineConstant("(WFLAG-MAYRETURN)", UFW_FLAG_MAYRETURN); ufoDefineConstant("(WARG-MASK)", UFW_WARG_MASK); ufoDefineConstant("(WARG-NONE)", UFW_WARG_NONE); diff --git a/urflibs/exceptions.f b/urflibs/exceptions.f index 6db580f..b0f8547 100644 --- a/urflibs/exceptions.f +++ b/urflibs/exceptions.f @@ -89,4 +89,4 @@ r> (exc-frame-ptr) ! ;; now EXIT will return to CATCH caller endif -; +; compiler:(wflag-noreturn) compiler:or-wflags diff --git a/urflibs/init/bootstrap/01-colon-semicolon.f b/urflibs/init/bootstrap/01-colon-semicolon.f index 3ac0530..016aa06 100644 --- a/urflibs/init/bootstrap/01-colon-semicolon.f +++ b/urflibs/init/bootstrap/01-colon-semicolon.f @@ -199,9 +199,8 @@ also compiler definitions : SET-SMUDGE ( -- ) (wflag-smudge) latest-nfa or! ; : RESET-SMUDGE ( -- ) (wflag-smudge) latest-nfa ~and! ; -: SET-WARG ( warg -- ) - latest-nfa @ (warg-mask) ~and or latest-nfa ! -; +: SET-WARG ( warg -- ) latest-nfa @ (warg-mask) ~and or latest-nfa ! ; +: OR-WFLAGS ( flags -- ) latest-nfa or! ; : (GET-NEW-WORD-FLAGS) ( -- flags ) forth:(new-word-flags) @ (wflag-hidden) (wflag-protected) or and -- 2.11.4.GIT