mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-24 13:31:58 -08:00
printer: use si_do_write_sequence in recently optimized printing routines
We don't need cl_write_string, since the CLOS stuff inside there
is just for optimization. Improves performance for ANSI streams.
This commit is contained in:
parent
25e1417dac
commit
706847293d
4 changed files with 12 additions and 12 deletions
|
|
@ -4740,12 +4740,12 @@ writestr_stream(const char *s, cl_object strm)
|
|||
ecl_char_set(buffer, i++, (ecl_character) *s++);
|
||||
if (i >= size) {
|
||||
si_fill_pointer_set(buffer, ecl_make_fixnum(size));
|
||||
cl_write_string(2, buffer, strm);
|
||||
si_do_write_sequence(buffer, strm, ecl_make_fixnum(0), ECL_NIL);
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
si_fill_pointer_set(buffer, ecl_make_fixnum(i));
|
||||
cl_write_string(2, buffer, strm);
|
||||
si_do_write_sequence(buffer, strm, ecl_make_fixnum(0), ECL_NIL);
|
||||
si_put_buffer_string(buffer);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,13 +43,13 @@ _ecl_write_addr(void *x, cl_object stream)
|
|||
}
|
||||
if (buffer_ndx >= buffer_size) {
|
||||
si_fill_pointer_set(buffer, ecl_make_fixnum(buffer_size));
|
||||
cl_write_string(2, buffer, stream);
|
||||
si_do_write_sequence(buffer, stream, ecl_make_fixnum(0), ECL_NIL);
|
||||
buffer_ndx = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
si_fill_pointer_set(buffer, ecl_make_fixnum(buffer_ndx));
|
||||
cl_write_string(2, buffer, stream);
|
||||
si_do_write_sequence(buffer, stream, ecl_make_fixnum(0), ECL_NIL);
|
||||
si_put_buffer_string(buffer);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -149,19 +149,19 @@ void
|
|||
_ecl_write_string(cl_object x, cl_object stream)
|
||||
{
|
||||
if (!ecl_print_escape() && !ecl_print_readably()) {
|
||||
cl_write_string(2, x, stream);
|
||||
si_do_write_sequence(x, stream, ecl_make_fixnum(0), ECL_NIL);
|
||||
} else {
|
||||
cl_index ndx, ndx_start;
|
||||
ecl_write_char('"', stream);
|
||||
for (ndx = ndx_start = 0; ndx < x->string.fillp; ndx++) {
|
||||
ecl_character c = x->string.self[ndx];
|
||||
if (c == '"' || c == '\\') {
|
||||
cl_write_string(6, x, stream, @':start', ecl_make_fixnum(ndx_start), @':end', ecl_make_fixnum(ndx));
|
||||
si_do_write_sequence(x, stream, ecl_make_fixnum(ndx_start), ecl_make_fixnum(ndx));
|
||||
ecl_write_char('\\', stream);
|
||||
ndx_start = ndx;
|
||||
}
|
||||
}
|
||||
cl_write_string(4, x, stream, @':start', ecl_make_fixnum(ndx_start));
|
||||
si_do_write_sequence(x, stream, ecl_make_fixnum(ndx_start), ECL_NIL);
|
||||
ecl_write_char('"', stream);
|
||||
}
|
||||
}
|
||||
|
|
@ -171,19 +171,19 @@ void
|
|||
_ecl_write_base_string(cl_object x, cl_object stream)
|
||||
{
|
||||
if (!ecl_print_escape() && !ecl_print_readably()) {
|
||||
cl_write_string(2, x, stream);
|
||||
si_do_write_sequence(x, stream, ecl_make_fixnum(0), ECL_NIL);
|
||||
} else {
|
||||
cl_index ndx, ndx_start;
|
||||
ecl_write_char('"', stream);
|
||||
for (ndx = ndx_start = 0; ndx < x->base_string.fillp; ndx++) {
|
||||
ecl_character c = x->base_string.self[ndx];
|
||||
if (c == '"' || c == '\\') {
|
||||
cl_write_string(6, x, stream, @':start', ecl_make_fixnum(ndx_start), @':end', ecl_make_fixnum(ndx));
|
||||
si_do_write_sequence(x, stream, ecl_make_fixnum(ndx_start), ecl_make_fixnum(ndx));
|
||||
ecl_write_char('\\', stream);
|
||||
ndx_start = ndx;
|
||||
}
|
||||
}
|
||||
cl_write_string(4, x, stream, @':start', ecl_make_fixnum(ndx_start));
|
||||
si_do_write_sequence(x, stream, ecl_make_fixnum(ndx_start), ECL_NIL);
|
||||
ecl_write_char('"', stream);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ needs_to_be_escaped(cl_object s, cl_object readtable, cl_object print_case)
|
|||
ecl_char_set(buffer, buffer_ndx++, c); \
|
||||
if (buffer_ndx >= buffer_size) { \
|
||||
si_fill_pointer_set(buffer, ecl_make_fixnum(buffer_size)); \
|
||||
cl_write_string(2, buffer, stream); \
|
||||
si_do_write_sequence(buffer, stream, ecl_make_fixnum(0), ECL_NIL);\
|
||||
buffer_ndx = 0; \
|
||||
}
|
||||
|
||||
|
|
@ -160,7 +160,7 @@ write_symbol_string(cl_object s, int action, cl_object print_case,
|
|||
if (escape)
|
||||
buffer_write_char('|', buffer, stream, buffer_ndx, buffer_size);
|
||||
si_fill_pointer_set(buffer, ecl_make_fixnum(buffer_ndx));
|
||||
cl_write_string(2, buffer, stream);
|
||||
si_do_write_sequence(buffer, stream, ecl_make_fixnum(0), ECL_NIL);
|
||||
si_put_buffer_string(buffer);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue