From 7e1e075d38af243574c2e763dd272aac757ffbe8 Mon Sep 17 00:00:00 2001 From: Yoshiki Oka Date: Fri, 21 Feb 2025 11:45:06 +0900 Subject: [PATCH] always emit removetemporaryproxies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SLIMのissue(https://github.com/lmntal/slim/issues/354)に関してとりあえずの処置案. 右辺の形にかかわらず,removetemporaryproxiesを常にエミットする. テンポラリプロキシが存在しないとき,removetemporaryproxiesはnopであるので,パフォーマンスへの影響は小さいことが期待される. --- src/compile/RuleCompiler.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/compile/RuleCompiler.java b/src/compile/RuleCompiler.java index a4897dc8..1705f440 100644 --- a/src/compile/RuleCompiler.java +++ b/src/compile/RuleCompiler.java @@ -397,9 +397,7 @@ private void compile_r() throws CompileException { buildRHSMem(rs.rightMem); /* 右辺の$pが配置された直後。このタイミングでなければならない筈 */ - if (!rs.rightMem.processContexts.isEmpty()) { - body.add(new Instruction(Instruction.REMOVETEMPORARYPROXIES, toplevelmemid)); - } + body.add(new Instruction(Instruction.REMOVETEMPORARYPROXIES, toplevelmemid)); copyRules(rs.rightMem); loadRulesets(rs.rightMem); buildRHSTypedProcesses(); @@ -478,9 +476,7 @@ private void compile_r_swaplink() throws CompileException { buildRHSMem(rs.rightMem); // 右辺にある膜の変数番号確定 /* 右辺の$pが配置された直後。このタイミングでなければならない筈 */ - if (!rs.rightMem.processContexts.isEmpty()) { - body.add(new Instruction(Instruction.REMOVETEMPORARYPROXIES, toplevelmemid)); - } + body.add(new Instruction(Instruction.REMOVETEMPORARYPROXIES, toplevelmemid)); copyRules(rs.rightMem); loadRulesets(rs.rightMem); buildRHSTypedProcesses();