[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[COMMITTED] pkl: gen: remove PKL_GEN_DUP_CONTEXT as it is not needed
From: |
Jose E. Marchesi |
Subject: |
[COMMITTED] pkl: gen: remove PKL_GEN_DUP_CONTEXT as it is not needed |
Date: |
Tue, 21 Dec 2021 12:45:24 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
2021-12-21 Jose E. Marchesi <jemarch@termi>
* libpoke/pkl-gen.c (pkl_gen_pr_decl): Use PKL_GEN_PUSH_CONTEXT
instead of PKL_GEN_DUP_CONTEXT.
(LMAP): Likewise.
(pkl_gen_pr_ass_stmt): Likewise.
(pkl_gen_pr_print_stmt): Likewise.
(pkl_gen_pr_funcall): Likewise.
(pkl_gen_pr_func): Likewise.
(pkl_gen_pr_func_arg): Likewise.
(pkl_gen_ps_isa): Likewise.
(pkl_gen_pr_cast): Likewise.
(pkl_gen_ps_cons): Likewise.
(pkl_gen_pr_map): Likewise.
(pkl_gen_pr_array): Likewise.
(pkl_gen_pr_type_function): Likewise.
(pkl_gen_pr_type_array): Likewise.
(pkl_gen_pr_type_struct): Likewise.
(PKL_GEN_DUP_CONTEXT): Remove.
* libpoke/ras: Update comment to use GEN_PUSH_CONTEXT.
---
ChangeLog | 21 ++++++++++++++
libpoke/pkl-gen.c | 84 ++++++++++++++++++++++---------------------------------
libpoke/ras | 3 +-
3 files changed, 55 insertions(+), 53 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d7415fa5..a7f4445e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2021-12-21 Jose E. Marchesi <jemarch@termi>
+
+ * libpoke/pkl-gen.c (pkl_gen_pr_decl): Use PKL_GEN_PUSH_CONTEXT
+ instead of PKL_GEN_DUP_CONTEXT.
+ (LMAP): Likewise.
+ (pkl_gen_pr_ass_stmt): Likewise.
+ (pkl_gen_pr_print_stmt): Likewise.
+ (pkl_gen_pr_funcall): Likewise.
+ (pkl_gen_pr_func): Likewise.
+ (pkl_gen_pr_func_arg): Likewise.
+ (pkl_gen_ps_isa): Likewise.
+ (pkl_gen_pr_cast): Likewise.
+ (pkl_gen_ps_cons): Likewise.
+ (pkl_gen_pr_map): Likewise.
+ (pkl_gen_pr_array): Likewise.
+ (pkl_gen_pr_type_function): Likewise.
+ (pkl_gen_pr_type_array): Likewise.
+ (pkl_gen_pr_type_struct): Likewise.
+ (PKL_GEN_DUP_CONTEXT): Remove.
+ * libpoke/ras: Update comment to use GEN_PUSH_CONTEXT.
+
2021-12-19 Jose E. Marchesi <jemarch@termi>
* doc/poke.texi (Optional Fields): Explain how optional fields are
diff --git a/libpoke/pkl-gen.c b/libpoke/pkl-gen.c
index b908850b..c5b2ab94 100644
--- a/libpoke/pkl-gen.c
+++ b/libpoke/pkl-gen.c
@@ -65,16 +65,6 @@
#define PKL_GEN_IN_CTX_P(CTX) \
(PKL_GEN_PAYLOAD->context[PKL_GEN_PAYLOAD->cur_context] & (CTX))
-#define PKL_GEN_DUP_CONTEXT \
- do \
- { \
- assert (PKL_GEN_PAYLOAD->cur_context < PKL_GEN_MAX_CTX); \
- PKL_GEN_PAYLOAD->context[PKL_GEN_PAYLOAD->cur_context + 1] \
- = PKL_GEN_PAYLOAD->context[PKL_GEN_PAYLOAD->cur_context]; \
- PKL_GEN_PAYLOAD->cur_context++; \
- } \
- while (0)
-
#define PKL_GEN_PUSH_CONTEXT \
do \
{ \
@@ -210,7 +200,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_decl)
if (PKL_AST_TYPE_S_WRITER (type_struct) == PVM_NULL)
{
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_WRITER);
RAS_FUNCTION_STRUCT_WRITER (writer_closure, type_struct);
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_PUSH, writer_closure); /*
CLS */
@@ -223,7 +213,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_decl)
if (PKL_AST_TYPE_S_MAPPER (type_struct) == PVM_NULL)
{
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_MAPPER);
RAS_FUNCTION_STRUCT_MAPPER (mapper_closure, type_struct);
@@ -238,7 +228,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_decl)
if (PKL_AST_TYPE_S_CONSTRUCTOR (type_struct) == PVM_NULL)
{
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_CONSTRUCTOR);
RAS_FUNCTION_STRUCT_CONSTRUCTOR (constructor_closure,
type_struct); /* CLS
*/
@@ -252,7 +242,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_decl)
if (PKL_AST_TYPE_S_COMPARATOR (type_struct) == PVM_NULL)
{
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_COMPARATOR);
RAS_FUNCTION_STRUCT_COMPARATOR (comparator_closure,
type_struct); /* CLS
*/
@@ -271,7 +261,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_decl)
integrators, since integrators do not call writers
nor the other way around. This eases sharing of
code in the pks. */
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_WRITER);
RAS_FUNCTION_STRUCT_INTEGRATOR (integrator_closure,
type_struct); /* CLS
*/
@@ -307,7 +297,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_decl)
lexical context! This makes the calls to
in_array_bounder in array mappers/constructors to
only happen for anonymous array types. */
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_ARRAY_BOUNDER);
PKL_PASS_SUBPASS (array_type);
PKL_GEN_POP_CONTEXT;
@@ -315,7 +305,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_decl)
if (PKL_AST_TYPE_A_WRITER (array_type) == PVM_NULL)
{
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_WRITER);
RAS_FUNCTION_ARRAY_WRITER (writer_closure, array_type);
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_PUSH, writer_closure); /*
CLS */
@@ -328,7 +318,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_decl)
if (PKL_AST_TYPE_A_MAPPER (array_type) == PVM_NULL)
{
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_MAPPER);
RAS_FUNCTION_ARRAY_MAPPER (mapper_closure, array_type);
@@ -342,7 +332,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_decl)
if (PKL_AST_TYPE_A_CONSTRUCTOR (array_type) == PVM_NULL)
{
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_CONSTRUCTOR);
RAS_FUNCTION_ARRAY_CONSTRUCTOR (constructor_closure,
array_type); /* CLS
*/
@@ -919,7 +909,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_ass_stmt)
if (writer == PVM_NULL \
|| !PKL_AST_TYPE_NAME ((TYPE))) \
{ \
- PKL_GEN_DUP_CONTEXT; \
+ PKL_GEN_PUSH_CONTEXT; \
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_WRITER); \
if (lvalue_type_code == PKL_TYPE_ARRAY) \
RAS_FUNCTION_ARRAY_WRITER (writer, (TYPE)); \
@@ -948,7 +938,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_ass_stmt)
\
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_ROT); /* IOS BOFF VAL */ \
\
- PKL_GEN_DUP_CONTEXT; \
+ PKL_GEN_PUSH_CONTEXT; \
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_WRITER); \
PKL_PASS_SUBPASS ((TYPE)); \
PKL_GEN_POP_CONTEXT; \
@@ -965,7 +955,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_ass_stmt)
PKL_PASS_SUBPASS (exp);
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_LVALUE);
PKL_PASS_SUBPASS (lvalue);
PKL_GEN_POP_CONTEXT;
@@ -1697,7 +1687,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_print_stmt)
/* Print out the value. */
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_PUSH,
pvm_make_int (0, 32)); /* OMODE ODEPTH EXP
DEPTH */
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_PRINTER);
PKL_PASS_SUBPASS (exp_type);
PKL_GEN_POP_CONTEXT;
@@ -1900,7 +1890,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_funcall)
}
/* Push the closure for FUNCTION and call the bloody function. */
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_FUNCALL);
PKL_PASS_SUBPASS (PKL_AST_FUNCALL_FUNCTION (funcall));
PKL_GEN_POP_CONTEXT;
@@ -1955,7 +1945,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_func)
if (PKL_AST_TYPE_CODE (rtype) == PKL_TYPE_ARRAY
&& PKL_AST_TYPE_A_BOUNDER (rtype) == PVM_NULL)
{
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_ARRAY_BOUNDER);
PKL_PASS_SUBPASS (rtype);
PKL_GEN_POP_CONTEXT;
@@ -2023,7 +2013,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_func_arg)
if (PKL_AST_TYPE_A_BOUNDER (func_arg_type) == PVM_NULL)
{
bounder_created_p = 1;
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_ARRAY_BOUNDER);
PKL_PASS_SUBPASS (func_arg_type);
PKL_GEN_POP_CONTEXT;
@@ -2222,7 +2212,7 @@ PKL_PHASE_END_HANDLER
PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_isa)
{
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_TYPE);
PKL_PASS_SUBPASS (PKL_AST_ISA_TYPE (PKL_PASS_NODE));
PKL_GEN_POP_CONTEXT;
@@ -2310,7 +2300,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_cast)
if (PKL_AST_TYPE_A_BOUNDER (to_type) == PVM_NULL)
{
bounder_created_p = 1;
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_ARRAY_BOUNDER);
PKL_PASS_SUBPASS (to_type);
PKL_GEN_POP_CONTEXT;
@@ -2349,7 +2339,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_cast)
pvm_val integrator_closure;
/* See note about in_writer in pkl_gen_pr_decl. */
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_WRITER);
RAS_FUNCTION_STRUCT_INTEGRATOR (integrator_closure,
from_type); /* CLS */
@@ -2393,7 +2383,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_cons)
/* Build an array with default values. Note how array
constructors do not use their argument. */
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_PUSH, PVM_NULL);
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_CONSTRUCTOR);
PKL_PASS_SUBPASS (cons_type);
PKL_GEN_POP_CONTEXT;
@@ -2408,7 +2398,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_cons)
}
break;
case PKL_AST_CONS_KIND_STRUCT:
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_CONSTRUCTOR);
PKL_PASS_SUBPASS (cons_type);
PKL_GEN_POP_CONTEXT;
@@ -2445,16 +2435,14 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_map)
offset, which is expected by the ass_stmt PS handler. */
if (map_ios)
{
- PKL_GEN_DUP_CONTEXT;
- PKL_GEN_CLEAR_CONTEXT (PKL_GEN_CTX_IN_LVALUE);
+ PKL_GEN_PUSH_CONTEXT;
PKL_PASS_SUBPASS (map_ios);
PKL_GEN_POP_CONTEXT;
}
else
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_PUSHIOS);
- PKL_GEN_DUP_CONTEXT;
- PKL_GEN_CLEAR_CONTEXT (PKL_GEN_CTX_IN_LVALUE);
+ PKL_GEN_PUSH_CONTEXT;
PKL_PASS_SUBPASS (map_offset);
PKL_GEN_POP_CONTEXT;
}
@@ -2497,7 +2485,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_map)
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_NIP);
}
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_MAPPER);
PKL_PASS_SUBPASS (map_type);
PKL_GEN_POP_CONTEXT;
@@ -2559,7 +2547,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_array)
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_MKA); /* ARR */
/* Install a writer in the array. */
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_WRITER);
RAS_FUNCTION_ARRAY_WRITER (array_type_writer, array_type);
PKL_AST_TYPE_A_WRITER (array_type) = array_type_writer;
@@ -3009,8 +2997,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_type_function)
/* Constructor argument. */
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_PUSH, PVM_NULL);
- PKL_GEN_DUP_CONTEXT;
- PKL_GEN_CLEAR_CONTEXT (PKL_GEN_CTX_IN_MAPPER);
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_CONSTRUCTOR);
PKL_PASS_SUBPASS (function_rtype);
PKL_GEN_POP_CONTEXT;
@@ -3160,8 +3147,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_type_array)
pkl_gen_pr_decl. */
bounder_created = 1;
- PKL_GEN_DUP_CONTEXT;
- PKL_GEN_CLEAR_CONTEXT (PKL_GEN_CTX_IN_MAPPER);
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_ARRAY_BOUNDER);
PKL_PASS_SUBPASS (array_type);
PKL_GEN_POP_CONTEXT;
@@ -3257,8 +3243,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_type_array)
pvm_val writer_closure;
/* Compile a writer function to a closure. */
- PKL_GEN_DUP_CONTEXT;
- PKL_GEN_CLEAR_CONTEXT (PKL_GEN_CTX_IN_MAPPER);
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_WRITER);
RAS_FUNCTION_ARRAY_WRITER (writer_closure, array_type);
PKL_GEN_POP_CONTEXT;
@@ -3346,8 +3331,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_type_array)
Named array types have their bounder compiled in
pkl_gen_pr_decl. */
bounder_created = 1;
- PKL_GEN_DUP_CONTEXT;
- PKL_GEN_CLEAR_CONTEXT (PKL_GEN_CTX_IN_CONSTRUCTOR);
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_ARRAY_BOUNDER);
PKL_PASS_SUBPASS (array_type);
PKL_GEN_POP_CONTEXT;
@@ -3401,7 +3385,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_type_array)
map-assignment operation. */
if (array_type_writer == PVM_NULL)
{
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_WRITER);
RAS_FUNCTION_ARRAY_WRITER (array_type_writer, array_type);
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_PUSH, array_type_writer); /* CLS
*/
@@ -3589,8 +3573,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_type_struct)
current environment. */
pvm_val writer_closure;
- PKL_GEN_DUP_CONTEXT;
- PKL_GEN_CLEAR_CONTEXT (PKL_GEN_CTX_IN_MAPPER);
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_WRITER);
RAS_FUNCTION_STRUCT_WRITER (writer_closure, type_struct);
PKL_GEN_POP_CONTEXT;
@@ -3623,8 +3606,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_type_struct)
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_BNN, label);
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_DROP); /* The null */
- PKL_GEN_DUP_CONTEXT;
- PKL_GEN_CLEAR_CONTEXT (PKL_GEN_CTX_IN_CONSTRUCTOR);
+ PKL_GEN_PUSH_CONTEXT;
PKL_PASS_SUBPASS (s);
PKL_GEN_POP_CONTEXT;
@@ -3664,7 +3646,7 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_pr_type_struct)
/* The struct type is anonymous and doesn't have a writer.
Compile one in this environment. */
- PKL_GEN_DUP_CONTEXT;
+ PKL_GEN_PUSH_CONTEXT;
PKL_GEN_SET_CONTEXT (PKL_GEN_CTX_IN_WRITER);
RAS_FUNCTION_STRUCT_WRITER (type_struct_writer, type_struct);
pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_PUSH, type_struct_writer); /*
CLS */
diff --git a/libpoke/ras b/libpoke/ras
index 7dcf249c..58c5a95d 100755
--- a/libpoke/ras
+++ b/libpoke/ras
@@ -170,8 +170,7 @@
#
# A typical example is to invoke a GEN subpass, like:
#
-# .c PKL_GEN_DUP_CONTEXT;
-# .c PKL_GEN_CLEAR_CONTEXT (PKL_GEN_CTX_IN_MAPPER);
+# .c PKL_GEN_PUSH_CONTEXT;
# .c PKL_PASS_SUBPASS (PKL_AST_TYPE_A_ETYPE (@array_type));
# .c PKL_GEN_POP_CONTEXT;
#
--
2.11.0
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [COMMITTED] pkl: gen: remove PKL_GEN_DUP_CONTEXT as it is not needed,
Jose E. Marchesi <=