19
19
import com .oracle .truffle .api .dsl .GenerateInline ;
20
20
import com .oracle .truffle .api .dsl .GenerateUncached ;
21
21
import com .oracle .truffle .api .dsl .Idempotent ;
22
- import com .oracle .truffle .api .dsl .NeverDefault ;
23
22
import com .oracle .truffle .api .frame .FrameSlotKind ;
24
23
import com .oracle .truffle .api .nodes .Node ;
25
24
import com .oracle .truffle .api .strings .TruffleString ;
@@ -175,21 +174,18 @@ RubyBinding dup(RubyBinding binding) {
175
174
* variables. */
176
175
@ ImportStatic ({ BindingNodes .class , FindDeclarationVariableNodes .class })
177
176
@ GenerateUncached
177
+ @ GenerateInline
178
+ @ GenerateCached (false )
178
179
public abstract static class HasLocalVariableNode extends RubyBaseNode {
179
180
180
- @ NeverDefault
181
- public static HasLocalVariableNode create () {
182
- return BindingNodesFactory .HasLocalVariableNodeGen .create ();
183
- }
184
-
185
- public abstract boolean execute (RubyBinding binding , String name );
181
+ public abstract boolean execute (Node node , RubyBinding binding , String name );
186
182
187
183
@ Specialization (
188
184
guards = {
189
185
"name == cachedName" ,
190
186
"getFrameDescriptor(binding) == descriptor" },
191
187
limit = "getCacheLimit()" )
192
- boolean localVariableDefinedCached (RubyBinding binding , String name ,
188
+ static boolean localVariableDefinedCached (RubyBinding binding , String name ,
193
189
@ Cached ("name" ) String cachedName ,
194
190
@ Cached ("getFrameDescriptor(binding)" ) FrameDescriptor descriptor ,
195
191
@ Cached ("findFrameSlotOrNull(name, binding.getFrame())" ) FrameSlotAndDepth cachedFrameSlot ) {
@@ -198,7 +194,7 @@ boolean localVariableDefinedCached(RubyBinding binding, String name,
198
194
199
195
@ TruffleBoundary
200
196
@ Specialization (replaces = "localVariableDefinedCached" )
201
- boolean localVariableDefinedUncached (RubyBinding binding , String name ) {
197
+ static boolean localVariableDefinedUncached (RubyBinding binding , String name ) {
202
198
return FindDeclarationVariableNodes .findFrameSlotOrNull (name , binding .getFrame ()) != null ;
203
199
}
204
200
0 commit comments