Skip to content

Commit b3b2736

Browse files
authored
add IR encoding for EnterNode (#53482)
fixes #53248
1 parent 35cb8a5 commit b3b2736

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/ircode.c

+10
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,11 @@ static void jl_encode_value_(jl_ircode_state *s, jl_value_t *v, int as_literal)
322322
jl_encode_value(s, jl_get_nth_field(v, 0));
323323
jl_encode_value(s, jl_get_nth_field(v, 1));
324324
}
325+
else if (jl_is_enternode(v)) {
326+
write_uint8(s->s, TAG_ENTERNODE);
327+
jl_encode_value(s, jl_get_nth_field(v, 0));
328+
jl_encode_value(s, jl_get_nth_field(v, 1));
329+
}
325330
else if (jl_is_argument(v)) {
326331
write_uint8(s->s, TAG_ARGUMENT);
327332
jl_encode_value(s, jl_get_nth_field(v, 0));
@@ -721,6 +726,11 @@ static jl_value_t *jl_decode_value(jl_ircode_state *s) JL_GC_DISABLED
721726
set_nth_field(jl_gotoifnot_type, v, 0, jl_decode_value(s), 0);
722727
set_nth_field(jl_gotoifnot_type, v, 1, jl_decode_value(s), 0);
723728
return v;
729+
case TAG_ENTERNODE:
730+
v = jl_new_struct_uninit(jl_enternode_type);
731+
set_nth_field(jl_enternode_type, v, 0, jl_decode_value(s), 0);
732+
set_nth_field(jl_enternode_type, v, 1, jl_decode_value(s), 0);
733+
return v;
724734
case TAG_ARGUMENT:
725735
v = jl_new_struct_uninit(jl_argument_type);
726736
set_nth_field(jl_argument_type, v, 0, jl_decode_value(s), 0);

src/serialize.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,9 @@ extern "C" {
6565
#define TAG_RELOC_METHODROOT 57
6666
#define TAG_BINDING 58
6767
#define TAG_MEMORYT 59
68+
#define TAG_ENTERNODE 60
6869

69-
#define LAST_TAG 59
70+
#define LAST_TAG 60
7071

7172
#define write_uint8(s, n) ios_putc((n), (s))
7273
#define read_uint8(s) ((uint8_t)ios_getc((s)))

0 commit comments

Comments
 (0)