texlive[66038] Build/source/texk/web2c: transfer memory reduction for
commits+karl at tug.org
commits+karl at tug.org
Tue Feb 21 23:26:33 CET 2023
Revision: 66038
http://tug.org/svn/texlive?view=revision&revision=66038
Author: karl
Date: 2023-02-21 23:26:33 +0100 (Tue, 21 Feb 2023)
Log Message:
-----------
transfer memory reduction for \special shipout from luatex to the other engines
Modified Paths:
--------------
trunk/Build/source/texk/web2c/alephdir/ChangeLog
trunk/Build/source/texk/web2c/alephdir/latespecial.ch
trunk/Build/source/texk/web2c/eptexdir/ChangeLog
trunk/Build/source/texk/web2c/eptexdir/pdfutils.ch
trunk/Build/source/texk/web2c/pdftexdir/ChangeLog
trunk/Build/source/texk/web2c/pdftexdir/pdftex.web
trunk/Build/source/texk/web2c/xetexdir/ChangeLog
trunk/Build/source/texk/web2c/xetexdir/xetex.web
Modified: trunk/Build/source/texk/web2c/alephdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/alephdir/ChangeLog 2023-02-21 21:58:06 UTC (rev 66037)
+++ trunk/Build/source/texk/web2c/alephdir/ChangeLog 2023-02-21 22:26:33 UTC (rev 66038)
@@ -1,3 +1,7 @@
+2023-02-21 Phelype Oleinik <phelype.oleinik at latex-project.org>
+
+ * latespecial.ch: reduce memory usage, a la HH/luatex.
+
2023-02-15 Phelype Oleinik <phelype.oleinik at latex-project.org>
* latespecial.ch: new change file for "\special shipout".
Modified: trunk/Build/source/texk/web2c/alephdir/latespecial.ch
===================================================================
--- trunk/Build/source/texk/web2c/alephdir/latespecial.ch 2023-02-21 21:58:06 UTC (rev 66037)
+++ trunk/Build/source/texk/web2c/alephdir/latespecial.ch 2023-02-21 22:26:33 UTC (rev 66038)
@@ -74,21 +74,30 @@
old_setting:=selector; selector:=new_string;
show_token_list(link(write_tokens(p)),null,pool_size-pool_ptr);
@y
+@!h:halfword;
@!q,@!r:pointer; {temporary variables for list manipulation}
@!old_mode:integer; {saved |mode|}
begin synch_h; synch_v;@/
-old_setting:=selector; selector:=new_string;
-selector:=old_setting;
+old_setting:=selector;
if subtype(p)=latespecial_node then
begin @<Expand macros in the token list
and make |link(def_ref)| point to the result@>;
- write_tokens(p):=def_ref;
- end;
+ h:=def_ref;
+ end
+else h:=write_tokens(p);
selector:=new_string;
-show_token_list(link(write_tokens(p)),null,pool_size-pool_ptr);
+show_token_list(link(h),null,pool_size-pool_ptr);
@z
@x
+pool_ptr:=str_start(str_ptr); {erase the string}
+ at y
+pool_ptr:=str_start(str_ptr); {erase the string}
+if subtype(p)=latespecial_node then
+ flush_list(def_ref);
+ at z
+
+ at x
special_node:special_out(p);
@y
special_node,latespecial_node:special_out(p);
Modified: trunk/Build/source/texk/web2c/eptexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/eptexdir/ChangeLog 2023-02-21 21:58:06 UTC (rev 66037)
+++ trunk/Build/source/texk/web2c/eptexdir/ChangeLog 2023-02-21 22:26:33 UTC (rev 66038)
@@ -1,3 +1,8 @@
+2023-02-21 Phelype Oleinik <phelype.oleinik at latex-project.org>
+
+ * pdfutils.ch: reduce memory usage for \special shipout,
+ a la HH/luatex.
+
2023-02-14 Hironori Kitagawa <h_kitagawa2001 at yahoo.co.jp>
* wcfname.test:
Modified: trunk/Build/source/texk/web2c/eptexdir/pdfutils.ch
===================================================================
--- trunk/Build/source/texk/web2c/eptexdir/pdfutils.ch 2023-02-21 21:58:06 UTC (rev 66037)
+++ trunk/Build/source/texk/web2c/eptexdir/pdfutils.ch 2023-02-21 22:26:33 UTC (rev 66038)
@@ -1689,10 +1689,12 @@
@!k:pool_pointer; {index into |str_pool|}
begin synch_h; synch_v;@/
old_setting:=selector; selector:=new_string;
+show_token_list(link(write_tokens(p)),null,pool_size-pool_ptr);
@y
procedure special_out(@!p:pointer);
label done;
var old_setting:0..max_selector; {holds print |selector|}
+@!h:halfword;
@!k:pool_pointer; {index into |str_pool|}
@!q,@!r:pointer; {temporary variables for list manipulation}
@!old_mode:integer; {saved |mode|}
@@ -1700,14 +1702,15 @@
@!bl: boolean;
@!i: small_number;
begin synch_h; synch_v;@/
-old_setting:=selector; selector:=new_string;
-selector:=old_setting;
+old_setting:=selector;
if subtype(p)=latespecial_node then
begin @<Expand macros in the token list
and make |link(def_ref)| point to the result@>;
- write_tokens(p):=def_ref;
- end;
+ h:=def_ref;
+ end
+else h:=write_tokens(p);
selector:=new_string;
+show_token_list(link(h),null,pool_size-pool_ptr);
@z
@x
@@ -1716,6 +1719,8 @@
if read_papersize_special>0 then
@<Determine whether this \.{\\special} is a papersize special@>;
done: pool_ptr:=str_start[str_ptr]; {erase the string}
+if subtype(p)=latespecial_node then
+ flush_list(def_ref);
@z
@x
Modified: trunk/Build/source/texk/web2c/pdftexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/pdftexdir/ChangeLog 2023-02-21 21:58:06 UTC (rev 66037)
+++ trunk/Build/source/texk/web2c/pdftexdir/ChangeLog 2023-02-21 22:26:33 UTC (rev 66038)
@@ -1,3 +1,8 @@
+2023-02-21 Phelype Oleinik <phelype.oleinik at latex-project.org>
+
+ * pdftex.web: reduce memory usage for \special shipout,
+ a la HH/luatex.
+
2023-02-14 Thanh Han The <hanthethanh at gmail.com>
* writet1.c (cs_mark) <CS_SEAC>: look for the composite(d) glyphs too,
Modified: trunk/Build/source/texk/web2c/pdftexdir/pdftex.web
===================================================================
--- trunk/Build/source/texk/web2c/pdftexdir/pdftex.web 2023-02-21 21:58:06 UTC (rev 66037)
+++ trunk/Build/source/texk/web2c/pdftexdir/pdftex.web 2023-02-21 22:26:33 UTC (rev 66038)
@@ -18511,6 +18511,7 @@
procedure pdf_out_literal(p:pointer);
var old_setting:0..max_selector; {holds print |selector|}
s: str_number;
+ h: halfword;
@!q,@!r:pointer; {temporary variables for list manipulation}
@!old_mode:integer; {saved |mode|}
begin
@@ -18518,14 +18519,17 @@
if subtype(p)=pdf_lateliteral_node then
begin @<Expand macros in the token list
and make |link(def_ref)| point to the result@>;
- pdf_literal_data(p):=def_ref;
- end;
+ h:=def_ref;
+ end
+ else h:=pdf_literal_data(p);
selector:=new_string;
- show_token_list(link(pdf_literal_data(p)),null,pool_size-pool_ptr);
+ show_token_list(link(h),null,pool_size-pool_ptr);
selector:=old_setting;
s := make_string;
literal(s, pdf_literal_mode(p), false);
flush_str(s);
+ if subtype(p)=pdf_lateliteral_node then
+ flush_list(def_ref);
end;
procedure pdf_out_colorstack(p:pointer);
@@ -18636,6 +18640,7 @@
procedure pdf_special(p: pointer);
var old_setting:0..max_selector; {holds print |selector|}
s: str_number;
+ h: halfword;
@!q,@!r:pointer; {temporary variables for list manipulation}
@!old_mode:integer; {saved |mode|}
begin
@@ -18644,14 +18649,17 @@
if subtype(p)=latespecial_node then
begin @<Expand macros in the token list
and make |link(def_ref)| point to the result@>;
- write_tokens(p):=def_ref;
- end;
+ h:=def_ref;
+ end
+ else h:=write_tokens(p);
selector:=new_string;
- show_token_list(link(write_tokens(p)),null,pool_size-pool_ptr);
+ show_token_list(link(h),null,pool_size-pool_ptr);
selector:=old_setting;
s := make_string;
literal(s, scan_special, true);
flush_str(s);
+ if subtype(p)=latespecial_node then
+ flush_list(def_ref);
end;
procedure pdf_print_toks(p: pointer); {print tokens list |p|}
@@ -35959,6 +35967,7 @@
procedure special_out(@!p:pointer);
var old_setting:0..max_selector; {holds print |selector|}
@!k:pool_pointer; {index into |str_pool|}
+@!h:halfword;
@!q,@!r:pointer; {temporary variables for list manipulation}
@!old_mode:integer; {saved |mode|}
begin synch_h; synch_v;@/
@@ -35967,10 +35976,11 @@
if subtype(p)=latespecial_node then
begin @<Expand macros in the token list
and make |link(def_ref)| point to the result@>;
- write_tokens(p):=def_ref;
- end;
+ h:=def_ref;
+ end
+else h:=write_tokens(p);
selector:=new_string;
-show_token_list(link(write_tokens(p)),null,pool_size-pool_ptr);
+show_token_list(link(h),null,pool_size-pool_ptr);
selector:=old_setting;
str_room(1);
if cur_length<256 then
@@ -35980,6 +35990,8 @@
end;
for k:=str_start[str_ptr] to pool_ptr-1 do dvi_out(so(str_pool[k]));
pool_ptr:=str_start[str_ptr]; {erase the string}
+if subtype(p)=latespecial_node then
+ flush_list(def_ref);
end;
@ To write a token list, we must run it through \TeX's scanner, expanding
Modified: trunk/Build/source/texk/web2c/xetexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/xetexdir/ChangeLog 2023-02-21 21:58:06 UTC (rev 66037)
+++ trunk/Build/source/texk/web2c/xetexdir/ChangeLog 2023-02-21 22:26:33 UTC (rev 66038)
@@ -1,3 +1,8 @@
+2023-02-21 Phelype Oleinik <phelype.oleinik at latex-project.org>
+
+ * xetex.web: reduce memory usage for \special shipout,
+ a la HH/luatex.
+
2023-02-19 Martin Hosken <martin_hosken at sil.org>
* xetex.web (Insert glue for |split_top_skip|...),
Modified: trunk/Build/source/texk/web2c/xetexdir/xetex.web
===================================================================
--- trunk/Build/source/texk/web2c/xetexdir/xetex.web 2023-02-21 21:58:06 UTC (rev 66037)
+++ trunk/Build/source/texk/web2c/xetexdir/xetex.web 2023-02-21 22:26:33 UTC (rev 66038)
@@ -30251,19 +30251,20 @@
procedure special_out(@!p:pointer);
var old_setting:0..max_selector; {holds print |selector|}
@!k:pool_pointer; {index into |str_pool|}
+@!h:halfword;
@!q,@!r:pointer; {temporary variables for list manipulation}
@!old_mode:integer; {saved |mode|}
begin synch_h; synch_v;@/
doing_special:=true;
-old_setting:=selector; selector:=new_string;
-selector:=old_setting;
+old_setting:=selector;
if subtype(p)=latespecial_node then
begin @<Expand macros in the token list
and make |link(def_ref)| point to the result@>;
- write_tokens(p):=def_ref;
- end;
+ h:=def_ref;
+ end
+else h:=write_tokens(p);
selector:=new_string;
-show_token_list(link(write_tokens(p)),null,pool_size-pool_ptr);
+show_token_list(link(h),null,pool_size-pool_ptr);
selector:=old_setting;
str_room(1);
if cur_length<256 then
@@ -30273,6 +30274,8 @@
end;
for k:=str_start_macro(str_ptr) to pool_ptr-1 do dvi_out(so(str_pool[k]));
pool_ptr:=str_start_macro(str_ptr); {erase the string}
+if subtype(p)=latespecial_node then
+ flush_list(def_ref);
doing_special:=false;
end;
More information about the tex-live-commits
mailing list.