Skip to content

Commit e6e0d0e

Browse files
committed
Create the helper node only for the specialization needing it
1 parent a99b39a commit e6e0d0e

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/main/java/org/truffleruby/stdlib/ObjSpaceNodes.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
package org.truffleruby.stdlib;
1111

1212
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
13+
import com.oracle.truffle.api.dsl.Cached;
1314
import com.oracle.truffle.api.dsl.Specialization;
1415
import com.oracle.truffle.api.object.DynamicObject;
1516
import org.truffleruby.Layouts;
@@ -32,8 +33,6 @@ public abstract class ObjSpaceNodes {
3233
@CoreMethod(names = "memsize_of", isModuleFunction = true, required = 1)
3334
public abstract static class MemsizeOfNode extends CoreMethodArrayArgumentsNode {
3435

35-
@Child private ValuesNode matchDataValues = ValuesNode.create();
36-
3736
@Specialization(guards = "isNil(object)")
3837
public int memsizeOfNil(DynamicObject object) {
3938
return 0;
@@ -55,7 +54,8 @@ public int memsizeOfString(DynamicObject object) {
5554
}
5655

5756
@Specialization(guards = "isRubyMatchData(object)")
58-
public int memsizeOfMatchData(DynamicObject object) {
57+
public int memsizeOfMatchData(DynamicObject object,
58+
@Cached("create()") ValuesNode matchDataValues) {
5959
return memsizeOfObject(object) + matchDataValues.execute(object).length;
6060
}
6161

0 commit comments

Comments
 (0)