|
55 | 55 | import org.truffleruby.core.kernel.KernelNodesFactory;
|
56 | 56 | import org.truffleruby.core.proc.ProcOperations;
|
57 | 57 | import org.truffleruby.core.rope.CodeRange;
|
58 |
| -import org.truffleruby.core.string.StringNodes; |
| 58 | +import org.truffleruby.core.string.StringNodes.MakeStringNode; |
59 | 59 | import org.truffleruby.core.string.StringOperations;
|
60 | 60 | import org.truffleruby.language.backtrace.Backtrace;
|
61 | 61 | import org.truffleruby.language.control.ExitException;
|
@@ -84,13 +84,12 @@ public abstract class VMPrimitiveNodes {
|
84 | 84 | @Primitive(name = "vm_catch", needsSelf = false)
|
85 | 85 | public abstract static class CatchNode extends PrimitiveArrayArgumentsNode {
|
86 | 86 |
|
87 |
| - @Child private YieldNode dispatchNode = YieldNode.create(); |
88 |
| - |
89 | 87 | @Specialization
|
90 | 88 | protected Object doCatch(Object tag, DynamicObject block,
|
91 | 89 | @Cached BranchProfile catchProfile,
|
92 | 90 | @Cached("createBinaryProfile()") ConditionProfile matchProfile,
|
93 |
| - @Cached ReferenceEqualNode referenceEqualNode) { |
| 91 | + @Cached ReferenceEqualNode referenceEqualNode, |
| 92 | + @Cached YieldNode dispatchNode) { |
94 | 93 | try {
|
95 | 94 | return dispatchNode.executeDispatch(block, tag);
|
96 | 95 | } catch (ThrowException e) {
|
@@ -149,16 +148,10 @@ protected boolean vmMethodIsBasic(VirtualFrame frame, DynamicObject method) {
|
149 | 148 | @Primitive(name = "vm_method_lookup", needsSelf = false)
|
150 | 149 | public static abstract class VMMethodLookupNode extends PrimitiveArrayArgumentsNode {
|
151 | 150 |
|
152 |
| - @Child private NameToJavaStringNode nameToJavaStringNode; |
153 |
| - @Child private LookupMethodNode lookupMethodNode; |
154 |
| - |
155 |
| - public VMMethodLookupNode() { |
156 |
| - nameToJavaStringNode = NameToJavaStringNode.create(); |
157 |
| - lookupMethodNode = LookupMethodNode.create(); |
158 |
| - } |
159 |
| - |
160 | 151 | @Specialization
|
161 |
| - protected DynamicObject vmMethodLookup(VirtualFrame frame, Object receiver, Object name) { |
| 152 | + protected DynamicObject vmMethodLookup(VirtualFrame frame, Object receiver, Object name, |
| 153 | + @Cached NameToJavaStringNode nameToJavaStringNode, |
| 154 | + @Cached LookupMethodNode lookupMethodNode) { |
162 | 155 | // TODO BJF Sep 14, 2016 Handle private
|
163 | 156 | final String normalizedName = nameToJavaStringNode.executeToJavaString(name);
|
164 | 157 | InternalMethod method = lookupMethodNode.lookupIgnoringVisibility(frame, receiver, normalizedName);
|
@@ -405,12 +398,11 @@ protected Object get(DynamicObject key) {
|
405 | 398 | @Primitive(name = "vm_get_config_section", needsSelf = false)
|
406 | 399 | public abstract static class VMGetConfigSectionNode extends PrimitiveArrayArgumentsNode {
|
407 | 400 |
|
408 |
| - @Child private StringNodes.MakeStringNode makeStringNode = StringNodes.MakeStringNode.create(); |
409 |
| - @Child private YieldNode yieldNode = YieldNode.create(); |
410 |
| - |
411 | 401 | @TruffleBoundary
|
412 | 402 | @Specialization(guards = { "isRubyString(section)", "isRubyProc(block)" })
|
413 |
| - protected DynamicObject getSection(DynamicObject section, DynamicObject block) { |
| 403 | + protected DynamicObject getSection(DynamicObject section, DynamicObject block, |
| 404 | + @Cached MakeStringNode makeStringNode, |
| 405 | + @Cached YieldNode yieldNode) { |
414 | 406 | for (Entry<String, Object> entry : getContext()
|
415 | 407 | .getNativeConfiguration()
|
416 | 408 | .getSection(StringOperations.getString(section))) {
|
@@ -444,7 +436,7 @@ public abstract static class VMDevUrandomBytes extends PrimitiveArrayArgumentsNo
|
444 | 436 |
|
445 | 437 | @Specialization(guards = "count >= 0")
|
446 | 438 | protected DynamicObject readRandomBytes(int count,
|
447 |
| - @Cached StringNodes.MakeStringNode makeStringNode) { |
| 439 | + @Cached MakeStringNode makeStringNode) { |
448 | 440 | final byte[] bytes = getContext().getRandomSeedBytes(count);
|
449 | 441 |
|
450 | 442 | return makeStringNode.executeMake(bytes, ASCIIEncoding.INSTANCE, CodeRange.CR_UNKNOWN);
|
|
0 commit comments