summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@colm.net>2018-07-09 17:20:54 +0800
committerAdrian Thurston <thurston@colm.net>2018-07-09 17:20:54 +0800
commita1e92870cc54d3daec9d94b38623167a5a653d9d (patch)
treeda09c12891425e53f9ba07b1bc9cead181fa062c
parentada8d5f7c5e8f7fd14c40b063db9f85ff253e40e (diff)
downloadcolm-a1e92870cc54d3daec9d94b38623167a5a653d9d.tar.gz
removed parser from input, initting with input takes pointer to input_t
-rw-r--r--src/bytecode.c17
-rw-r--r--src/input.c8
-rw-r--r--src/struct.c2
-rw-r--r--src/struct.h4
4 files changed, 3 insertions, 28 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index f3457c97..706cc63d 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -969,8 +969,7 @@ again:
input_t *to_replace_with = vm_pop_input();
parser_t *parser = vm_pop_parser();
- parser->input->impl = to_replace_with->impl;
- parser->input->not_owner = true;
+ parser->input = to_replace_with;
vm_push_parser( parser );
@@ -3309,20 +3308,6 @@ again:
vm_push_tree( val );
break;
}
- case IN_GET_STREAM_MEM_R: {
- short field;
- read_half( field );
-
- debug( prg, REALM_BYTECODE, "IN_GET_PARSER_MEM_R %hd\n", field );
-
- input_t *input = vm_pop_input();
-
- tree_t *val = get_parser_mem( input->parser, field );
-
- colm_tree_upref( prg, val );
- vm_push_tree( val );
- break;
- }
case IN_GET_MAP_EL_MEM_R: {
short gen_id, field;
diff --git a/src/input.c b/src/input.c
index 8a9bf769..d1a688b1 100644
--- a/src/input.c
+++ b/src/input.c
@@ -167,18 +167,14 @@ void colm_input_destroy( program_t *prg, tree_t **sp, struct_t *s )
{
input_t *input = (input_t*) s;
struct input_impl *si = input->impl;
-
- if ( !input->not_owner )
- si->funcs->destructor( prg, sp, si );
+ si->funcs->destructor( prg, sp, si );
}
void colm_stream_destroy( program_t *prg, tree_t **sp, struct_t *s )
{
stream_t *stream = (stream_t*) s;
struct stream_impl *si = stream->impl;
-
- if ( !stream->not_owner )
- si->funcs->destructor( prg, sp, si );
+ si->funcs->destructor( prg, sp, si );
}
/* Keep the position up to date after consuming text. */
diff --git a/src/struct.c b/src/struct.c
index 62c59923..5ee58ed3 100644
--- a/src/struct.c
+++ b/src/struct.c
@@ -164,7 +164,6 @@ struct_t *colm_construct_generic( program_t *prg, long generic_id, int stop_id )
case GEN_PARSER: {
parser_t *parser = colm_parser_new( prg, generic_info, stop_id, 0 );
parser->input = colm_input_new( prg );
- parser->input->parser = parser;
new_generic = (struct_t*) parser;
break;
}
@@ -180,7 +179,6 @@ struct_t *colm_construct_reducer( program_t *prg, long generic_id, int reducer_i
parser_t *parser = colm_parser_new( prg, generic_info, 0, reducer_id );
parser->input = colm_input_new( prg );
- parser->input->parser = parser;
new_generic = (struct_t*) parser;
return new_generic;
diff --git a/src/struct.h b/src/struct.h
index 47f1fcd7..42710edb 100644
--- a/src/struct.h
+++ b/src/struct.h
@@ -69,8 +69,6 @@ typedef struct colm_input
void *buffer[8];
struct input_impl *impl;
- parser_t *parser;
- char not_owner;
} input_t;
/* Must overlay colm_inbuilt. */
@@ -84,8 +82,6 @@ typedef struct colm_stream
void *buffer[8];
struct stream_impl *impl;
- parser_t *parser;
- char not_owner;
} stream_t;
#define COLM_LIST_EL_SIZE 2