mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 21:49:06 +02:00
Make lastline and nextline to be rb_parser_string
This commit changes `struct parser_params` lastline and nextline from `VALUE` (String object) to `rb_parser_string_t *` so that dependency on Ruby Object is reduced. `parser_string_buffer_t string_buffer` is added to `struct parser_params` to manage `rb_parser_string_t` pointers of each line. All allocated line strings are freed in `rb_ruby_parser_free`.
This commit is contained in:
parent
706eea9d3c
commit
ee7f63ebba
5 changed files with 158 additions and 49 deletions
|
@ -848,6 +848,12 @@ rb_parser_set_yydebug(VALUE vparser, VALUE flag)
|
|||
}
|
||||
#endif
|
||||
|
||||
VALUE
|
||||
rb_str_new_parser_string(rb_parser_string_t *str)
|
||||
{
|
||||
return rb_enc_str_new(str->ptr, str->len, str->enc);
|
||||
}
|
||||
|
||||
static VALUE
|
||||
negative_numeric(VALUE val)
|
||||
{
|
||||
|
@ -1000,6 +1006,5 @@ rb_node_line_lineno_val(const NODE *node)
|
|||
VALUE
|
||||
rb_node_file_path_val(const NODE *node)
|
||||
{
|
||||
rb_parser_string_t *str = RNODE_FILE(node)->path;
|
||||
return rb_enc_str_new(str->ptr, str->len, str->enc);
|
||||
return rb_str_new_parser_string(RNODE_FILE(node)->path);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue