mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-compiler: rename NODE_DSTR/NODE_DXSTR to NODE_STR/NODE_XSTR
Rename NODE_DSTR to NODE_STR and NODE_DXSTR to NODE_XSTR to reflect that all strings now use dynamic (cons list) representation. Also rename all associated functions for consistency: - gen_dstr_var() -> gen_str_var() - gen_dxstr_var() -> gen_xstr_var() - codegen_heredoc_dstr() -> codegen_heredoc_str() - codegen_dxstr() -> codegen_xstr() The "D" prefix is no longer meaningful since all strings use the variable-sized cons list format ((len . ptr) (-1 . node)...). Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -4300,7 +4300,7 @@ codegen_int(codegen_scope *s, node *tree, int val)
|
||||
|
||||
|
||||
static void
|
||||
codegen_dxstr(codegen_scope *s, node *tree, int val)
|
||||
codegen_xstr(codegen_scope *s, node *tree, int val)
|
||||
{
|
||||
int sym;
|
||||
|
||||
@@ -4329,7 +4329,7 @@ codegen_symbols(codegen_scope *s, node *tree, int val)
|
||||
/* codegen_cons_list_string forward declaration moved to top of file */
|
||||
|
||||
static void
|
||||
codegen_heredoc_dstr(codegen_scope *s, node *tree, int val)
|
||||
codegen_heredoc_str(codegen_scope *s, node *tree, int val)
|
||||
{
|
||||
/* Use common cons list string codegen since tree is now in cons list format */
|
||||
codegen_cons_list_string(s, tree, val);
|
||||
@@ -4864,7 +4864,7 @@ static void
|
||||
codegen_heredoc(codegen_scope *s, node *tree, int val)
|
||||
{
|
||||
tree = ((struct mrb_parser_heredoc_info*)tree)->doc;
|
||||
codegen_heredoc_dstr(s, tree, val);
|
||||
codegen_heredoc_str(s, tree, val);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -5517,10 +5517,10 @@ gen_super_var(codegen_scope *s, node *varnode, int val)
|
||||
|
||||
/* Variable-sized literal node generation functions */
|
||||
static void
|
||||
gen_dstr_var(codegen_scope *s, node *varnode, int val)
|
||||
gen_str_var(codegen_scope *s, node *varnode, int val)
|
||||
{
|
||||
struct mrb_ast_dstr_node *dstr_n = dstr_node(varnode);
|
||||
node *list = dstr_n->list;
|
||||
struct mrb_ast_str_node *str_n = str_node(varnode);
|
||||
node *list = str_n->list;
|
||||
|
||||
/* Use common cons list string codegen */
|
||||
codegen_cons_list_string(s, list, val);
|
||||
@@ -5727,9 +5727,9 @@ gen_until_mod_var(codegen_scope *s, node *varnode, int val)
|
||||
|
||||
|
||||
static void
|
||||
gen_dxstr_var(codegen_scope *s, node *varnode, int val)
|
||||
gen_xstr_var(codegen_scope *s, node *varnode, int val)
|
||||
{
|
||||
struct mrb_ast_dxstr_node *n = dxstr_node(varnode);
|
||||
struct mrb_ast_xstr_node *n = xstr_node(varnode);
|
||||
node *list = n->list;
|
||||
int sym;
|
||||
|
||||
@@ -5812,9 +5812,9 @@ static void
|
||||
gen_dsym_var(codegen_scope *s, node *varnode, int val)
|
||||
{
|
||||
struct mrb_ast_dsym_node *n = (struct mrb_ast_dsym_node*)varnode;
|
||||
// Generate dstr first, then convert to symbol
|
||||
// Generate str first, then convert to symbol
|
||||
if (val) {
|
||||
codegen_heredoc_dstr(s, n->list, VAL);
|
||||
codegen_heredoc_str(s, n->list, VAL);
|
||||
genop_1(s, OP_INTERN, cursp());
|
||||
}
|
||||
}
|
||||
@@ -6247,8 +6247,8 @@ codegen_variable_node(codegen_scope *s, node *varnode, int val)
|
||||
gen_super_var(s, varnode, val);
|
||||
return TRUE;
|
||||
|
||||
case NODE_DSTR:
|
||||
gen_dstr_var(s, varnode, val);
|
||||
case NODE_STR:
|
||||
gen_str_var(s, varnode, val);
|
||||
return TRUE;
|
||||
|
||||
case NODE_REGX:
|
||||
@@ -6323,8 +6323,8 @@ codegen_variable_node(codegen_scope *s, node *varnode, int val)
|
||||
gen_until_mod_var(s, varnode, val);
|
||||
return TRUE;
|
||||
|
||||
case NODE_DXSTR:
|
||||
gen_dxstr_var(s, varnode, val);
|
||||
case NODE_XSTR:
|
||||
gen_xstr_var(s, varnode, val);
|
||||
return TRUE;
|
||||
|
||||
case NODE_DREGX:
|
||||
@@ -6677,8 +6677,8 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
codegen_heredoc(s, tree, val);
|
||||
break;
|
||||
|
||||
case NODE_DSTR:
|
||||
codegen_heredoc_dstr(s, tree, val);
|
||||
case NODE_STR:
|
||||
codegen_heredoc_str(s, tree, val);
|
||||
break;
|
||||
|
||||
case NODE_WORDS:
|
||||
@@ -6689,8 +6689,8 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
codegen_symbols(s, tree, val);
|
||||
break;
|
||||
|
||||
case NODE_DXSTR:
|
||||
codegen_dxstr(s, tree, val);
|
||||
case NODE_XSTR:
|
||||
codegen_xstr(s, tree, val);
|
||||
break;
|
||||
|
||||
case NODE_REGX:
|
||||
|
||||
@@ -57,8 +57,8 @@ enum node_type {
|
||||
NODE_NEGATE,
|
||||
NODE_LAMBDA,
|
||||
NODE_SYM,
|
||||
NODE_DSTR,
|
||||
NODE_DXSTR,
|
||||
NODE_STR,
|
||||
NODE_XSTR,
|
||||
NODE_REGX,
|
||||
NODE_DREGX,
|
||||
NODE_DREGX_ONCE,
|
||||
@@ -152,7 +152,7 @@ struct mrb_ast_head_node {
|
||||
struct mrb_ast_var_header {
|
||||
uint16_t lineno; /* Line number information */
|
||||
uint16_t filename_index; /* File index information */
|
||||
uint8_t node_type; /* NODE_INT, NODE_SYM, NODE_DSTR, etc. */
|
||||
uint8_t node_type; /* NODE_INT, NODE_SYM, NODE_STR, etc. */
|
||||
uint8_t size_class; /* Size class for allocation/deallocation */
|
||||
uint16_t flags; /* Type-specific flags and metadata */
|
||||
/* Total: 8 bytes header for all variable nodes */
|
||||
@@ -185,12 +185,10 @@ struct mrb_ast_sym_node {
|
||||
/* Total: 12-16 bytes vs previous 20+ bytes + indirection */
|
||||
};
|
||||
|
||||
/* Variable-sized string node with inline storage */
|
||||
/* Variable-sized string node with cons list */
|
||||
struct mrb_ast_str_node {
|
||||
struct mrb_ast_var_header header; /* 8 bytes */
|
||||
size_t len; /* String length */
|
||||
char data[]; /* Flexible array - inline string storage */
|
||||
/* Total: Variable (16 + string_length) vs previous 20+ bytes + separate allocation */
|
||||
struct mrb_ast_var_header hdr;
|
||||
struct mrb_ast_node *list;
|
||||
};
|
||||
|
||||
/* Variable-sized integer node */
|
||||
@@ -508,10 +506,6 @@ struct mrb_ast_super_node {
|
||||
#define SUPER_NODE_ARGS(n) (super_node(n)->args)
|
||||
|
||||
/* Variable-sized literal node structures */
|
||||
struct mrb_ast_dstr_node {
|
||||
struct mrb_ast_var_header hdr;
|
||||
struct mrb_ast_node *list;
|
||||
};
|
||||
|
||||
struct mrb_ast_regx_node {
|
||||
struct mrb_ast_var_header hdr;
|
||||
@@ -539,14 +533,13 @@ struct mrb_ast_float_node {
|
||||
};
|
||||
|
||||
/* Literal node casting macros */
|
||||
#define dstr_node(n) ((struct mrb_ast_dstr_node*)(n))
|
||||
#define regx_node(n) ((struct mrb_ast_regx_node*)(n))
|
||||
#define dot2_node(n) ((struct mrb_ast_dot2_node*)(n))
|
||||
#define dot3_node(n) ((struct mrb_ast_dot3_node*)(n))
|
||||
#define float_node(n) ((struct mrb_ast_float_node*)(n))
|
||||
|
||||
/* Literal node value access macros */
|
||||
#define DSTR_NODE_LIST(n) (dstr_node(n)->list)
|
||||
#define STR_NODE_LIST(n) (str_node(n)->list)
|
||||
|
||||
#define REGX_NODE_PATTERN(n) (regx_node(n)->pattern)
|
||||
#define REGX_NODE_FLAGS(n) (regx_node(n)->flags)
|
||||
@@ -695,11 +688,6 @@ struct mrb_ast_until_mod_node {
|
||||
|
||||
// Group 9: String and Regex Variants
|
||||
struct mrb_ast_xstr_node {
|
||||
struct mrb_ast_var_header hdr;
|
||||
mrb_sym name;
|
||||
};
|
||||
|
||||
struct mrb_ast_dxstr_node {
|
||||
struct mrb_ast_var_header hdr;
|
||||
struct mrb_ast_node *list;
|
||||
};
|
||||
@@ -728,14 +716,12 @@ struct mrb_ast_dsym_node {
|
||||
};
|
||||
|
||||
#define xstr_node(n) ((struct mrb_ast_xstr_node*)(n))
|
||||
#define dxstr_node(n) ((struct mrb_ast_dxstr_node*)(n))
|
||||
#define dregx_node(n) ((struct mrb_ast_dregx_node*)(n))
|
||||
#define dregx_once_node(n) ((struct mrb_ast_dregx_once_node*)(n))
|
||||
#define heredoc_node(n) ((struct mrb_ast_heredoc_node*)(n))
|
||||
#define dsym_node(n) ((struct mrb_ast_dsym_node*)(n))
|
||||
|
||||
#define XSTR_NODE_NAME(n) (xstr_node(n)->name)
|
||||
#define DXSTR_NODE_LIST(n) (dxstr_node(n)->list)
|
||||
#define XSTR_NODE_LIST(n) (xstr_node(n)->list)
|
||||
#define DREGX_NODE_LIST(n) (dregx_node(n)->list)
|
||||
#define DREGX_NODE_OPTIONS(n) (dregx_node(n)->options)
|
||||
#define DREGX_ONCE_NODE_LIST(n) (dregx_once_node(n)->list)
|
||||
|
||||
@@ -2161,16 +2161,16 @@ new_float(parser_state *p, const char *s, int suffix)
|
||||
|
||||
|
||||
/* Create string node from cons list */
|
||||
/* (:dstr . a) */
|
||||
/* (:str . a) */
|
||||
static node*
|
||||
new_str(parser_state *p, node *a)
|
||||
{
|
||||
size_t total_size = sizeof(struct mrb_ast_dstr_node);
|
||||
size_t total_size = sizeof(struct mrb_ast_str_node);
|
||||
enum mrb_ast_size_class class = size_to_class(total_size);
|
||||
|
||||
struct mrb_ast_dstr_node *n = (struct mrb_ast_dstr_node*)parser_alloc_var(p, total_size, class);
|
||||
struct mrb_ast_str_node *n = (struct mrb_ast_str_node*)parser_alloc_var(p, total_size, class);
|
||||
|
||||
init_var_header(&n->hdr, p, NODE_DSTR, class);
|
||||
init_var_header(&n->hdr, p, NODE_STR, class);
|
||||
n->list = a;
|
||||
|
||||
return cons_head((node*)NODE_VARIABLE, (node*)n);
|
||||
@@ -2181,10 +2181,10 @@ new_str(parser_state *p, node *a)
|
||||
static node*
|
||||
new_xstr(parser_state *p, node *a)
|
||||
{
|
||||
size_t total_size = sizeof(struct mrb_ast_dxstr_node);
|
||||
size_t total_size = sizeof(struct mrb_ast_xstr_node);
|
||||
enum mrb_ast_size_class class = size_to_class(total_size);
|
||||
struct mrb_ast_dxstr_node *n = (struct mrb_ast_dxstr_node*)parser_alloc_var(p, total_size, class);
|
||||
init_var_header(&n->hdr, p, NODE_DXSTR, class);
|
||||
struct mrb_ast_xstr_node *n = (struct mrb_ast_xstr_node*)parser_alloc_var(p, total_size, class);
|
||||
init_var_header(&n->hdr, p, NODE_XSTR, class);
|
||||
n->list = a;
|
||||
return cons_head((node*)NODE_VARIABLE, (node*)n);
|
||||
}
|
||||
@@ -2542,8 +2542,8 @@ prohibit_literals(parser_state *p, node *n)
|
||||
else {
|
||||
switch (node_to_type(n->car)) {
|
||||
case NODE_INT:
|
||||
case NODE_DSTR:
|
||||
case NODE_DXSTR:
|
||||
case NODE_STR:
|
||||
case NODE_XSTR:
|
||||
case NODE_DREGX:
|
||||
case NODE_MATCH:
|
||||
case NODE_FLOAT:
|
||||
@@ -8724,13 +8724,13 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
mrb_parser_dump(mrb, tree, offset+1);
|
||||
break;
|
||||
|
||||
case NODE_DSTR:
|
||||
printf("NODE_DSTR:\n");
|
||||
case NODE_STR:
|
||||
printf("NODE_STR:\n");
|
||||
dump_recur(mrb, tree, offset+1);
|
||||
break;
|
||||
|
||||
case NODE_DXSTR:
|
||||
printf("NODE_DXSTR:\n");
|
||||
case NODE_XSTR:
|
||||
printf("NODE_XSTR:\n");
|
||||
dump_recur(mrb, tree, offset+1);
|
||||
break;
|
||||
|
||||
|
||||
@@ -2223,16 +2223,16 @@ new_float(parser_state *p, const char *s, int suffix)
|
||||
|
||||
|
||||
/* Create string node from cons list */
|
||||
/* (:dstr . a) */
|
||||
/* (:str . a) */
|
||||
static node*
|
||||
new_str(parser_state *p, node *a)
|
||||
{
|
||||
size_t total_size = sizeof(struct mrb_ast_dstr_node);
|
||||
size_t total_size = sizeof(struct mrb_ast_str_node);
|
||||
enum mrb_ast_size_class class = size_to_class(total_size);
|
||||
|
||||
struct mrb_ast_dstr_node *n = (struct mrb_ast_dstr_node*)parser_alloc_var(p, total_size, class);
|
||||
struct mrb_ast_str_node *n = (struct mrb_ast_str_node*)parser_alloc_var(p, total_size, class);
|
||||
|
||||
init_var_header(&n->hdr, p, NODE_DSTR, class);
|
||||
init_var_header(&n->hdr, p, NODE_STR, class);
|
||||
n->list = a;
|
||||
|
||||
return cons_head((node*)NODE_VARIABLE, (node*)n);
|
||||
@@ -2243,10 +2243,10 @@ new_str(parser_state *p, node *a)
|
||||
static node*
|
||||
new_xstr(parser_state *p, node *a)
|
||||
{
|
||||
size_t total_size = sizeof(struct mrb_ast_dxstr_node);
|
||||
size_t total_size = sizeof(struct mrb_ast_xstr_node);
|
||||
enum mrb_ast_size_class class = size_to_class(total_size);
|
||||
struct mrb_ast_dxstr_node *n = (struct mrb_ast_dxstr_node*)parser_alloc_var(p, total_size, class);
|
||||
init_var_header(&n->hdr, p, NODE_DXSTR, class);
|
||||
struct mrb_ast_xstr_node *n = (struct mrb_ast_xstr_node*)parser_alloc_var(p, total_size, class);
|
||||
init_var_header(&n->hdr, p, NODE_XSTR, class);
|
||||
n->list = a;
|
||||
return cons_head((node*)NODE_VARIABLE, (node*)n);
|
||||
}
|
||||
@@ -2604,8 +2604,8 @@ prohibit_literals(parser_state *p, node *n)
|
||||
else {
|
||||
switch (node_to_type(n->car)) {
|
||||
case NODE_INT:
|
||||
case NODE_DSTR:
|
||||
case NODE_DXSTR:
|
||||
case NODE_STR:
|
||||
case NODE_XSTR:
|
||||
case NODE_DREGX:
|
||||
case NODE_MATCH:
|
||||
case NODE_FLOAT:
|
||||
@@ -15549,13 +15549,13 @@ mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
mrb_parser_dump(mrb, tree, offset+1);
|
||||
break;
|
||||
|
||||
case NODE_DSTR:
|
||||
printf("NODE_DSTR:\n");
|
||||
case NODE_STR:
|
||||
printf("NODE_STR:\n");
|
||||
dump_recur(mrb, tree, offset+1);
|
||||
break;
|
||||
|
||||
case NODE_DXSTR:
|
||||
printf("NODE_DXSTR:\n");
|
||||
case NODE_XSTR:
|
||||
printf("NODE_XSTR:\n");
|
||||
dump_recur(mrb, tree, offset+1);
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user