summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/eptexdir
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-02-21 22:26:33 +0000
committerKarl Berry <karl@freefriends.org>2023-02-21 22:26:33 +0000
commita3b9579689d76ded1ca36281779b5f4eb08c5451 (patch)
treef55f88010d6b2b5c3c324138698e338256615206 /Build/source/texk/web2c/eptexdir
parentb5d532a9dcae838d0ead1a88c75156168d146fb4 (diff)
transfer memory reduction for \special shipout from luatex to the other engines
git-svn-id: svn://tug.org/texlive/trunk@66038 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/eptexdir')
-rw-r--r--Build/source/texk/web2c/eptexdir/ChangeLog5
-rw-r--r--Build/source/texk/web2c/eptexdir/pdfutils.ch13
2 files changed, 14 insertions, 4 deletions
diff --git a/Build/source/texk/web2c/eptexdir/ChangeLog b/Build/source/texk/web2c/eptexdir/ChangeLog
index 6b719214613..74a73d2d85c 100644
--- a/Build/source/texk/web2c/eptexdir/ChangeLog
+++ b/Build/source/texk/web2c/eptexdir/ChangeLog
@@ -1,3 +1,8 @@
+2023-02-21 Phelype Oleinik <phelype.oleinik@latex-project.org>
+
+ * pdfutils.ch: reduce memory usage for \special shipout,
+ a la HH/luatex.
+
2023-02-14 Hironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
* wcfname.test:
diff --git a/Build/source/texk/web2c/eptexdir/pdfutils.ch b/Build/source/texk/web2c/eptexdir/pdfutils.ch
index 69701de923e..73dfb8e3fe6 100644
--- a/Build/source/texk/web2c/eptexdir/pdfutils.ch
+++ b/Build/source/texk/web2c/eptexdir/pdfutils.ch
@@ -1689,10 +1689,12 @@ var old_setting:0..max_selector; {holds print |selector|}
@!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 @@ var old_setting:0..max_selector; {holds print |selector|}
@!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 @@ pool_ptr:=str_start[str_ptr]; {erase the string}
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