diff --git a/core/src/main/java/org/jruby/ir/instructions/CallBase.java b/core/src/main/java/org/jruby/ir/instructions/CallBase.java index 010513a9259..4076abca3e2 100644 --- a/core/src/main/java/org/jruby/ir/instructions/CallBase.java +++ b/core/src/main/java/org/jruby/ir/instructions/CallBase.java @@ -470,6 +470,14 @@ private void captureFrameReadsAndWrites() { frameWrites = ALL; } } else { + // special cases + if (getId().equals("print") && argsCount != 0) { + // only arity 0 print requirest access to LASTLINE + frameReads = Collections.EMPTY_SET; + frameWrites = Collections.EMPTY_SET; + return; + } + frameReads = MethodIndex.METHOD_FRAME_READS.getOrDefault(getId(), Collections.EMPTY_SET); frameWrites = MethodIndex.METHOD_FRAME_WRITES.getOrDefault(getId(), Collections.EMPTY_SET); }