Skip to content

Commit

Permalink
Showing 1 changed file with 11 additions and 12 deletions.
23 changes: 11 additions & 12 deletions truffle/src/main/java/org/jruby/truffle/nodes/core/KernelNodes.java
Original file line number Diff line number Diff line change
@@ -959,22 +959,21 @@ public boolean instanceOf(VirtualFrame frame, Object self, DynamicObject rubyCla
}

@CoreMethod(names = "instance_variable_defined?", required = 1)
public abstract static class InstanceVariableDefinedNode extends CoreMethodArrayArgumentsNode {
@NodeChildren({
@NodeChild(type = RubyNode.class, value = "object"),
@NodeChild(type = RubyNode.class, value = "name")
})
public abstract static class InstanceVariableDefinedNode extends CoreMethodNode {

public InstanceVariableDefinedNode(RubyContext context, SourceSection sourceSection) {
super(context, sourceSection);
}

@TruffleBoundary
@Specialization(guards = "isRubyString(name)")
public boolean isInstanceVariableDefinedString(DynamicObject object, DynamicObject name) {
return object.getShape().hasProperty(RubyContext.checkInstanceVariableName(getContext(), name.toString(), this));
}

@TruffleBoundary
@Specialization(guards = "isRubySymbol(name)")
public boolean isInstanceVariableDefinedSymbol(DynamicObject object, DynamicObject name) {
return object.getShape().hasProperty(RubyContext.checkInstanceVariableName(getContext(), Layouts.SYMBOL.getString(name), this));
@Specialization
public boolean isInstanceVariableDefined(DynamicObject object, String name) {
final String ivar = RubyContext.checkInstanceVariableName(getContext(), name, this);
return object.getShape().hasProperty(ivar);
}

}
@@ -997,7 +996,7 @@ public RubyNode coerceToString(RubyNode name) {

@TruffleBoundary
@Specialization
public Object instanceVariableGetString(DynamicObject object, String name) {
public Object instanceVariableGet(DynamicObject object, String name) {
final String ivar = RubyContext.checkInstanceVariableName(getContext(), name, this);
return object.get(ivar, nil());
}
@@ -1025,7 +1024,7 @@ public RubyNode coerceToString(RubyNode name) {

@TruffleBoundary
@Specialization
public Object instanceVariableSetString(DynamicObject object, String name, Object value) {
public Object instanceVariableSet(DynamicObject object, String name, Object value) {
final String ivar = RubyContext.checkInstanceVariableName(getContext(), name, this);
object.define(ivar, value, 0);
return value;

0 comments on commit e24b6e2

Please sign in to comment.