Skip to content

Commit 4e47c22

Browse files
committed
don't switch to object kind in guards
1 parent b4ede76 commit 4e47c22

File tree

4 files changed

+38
-40
lines changed

4 files changed

+38
-40
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/frame/FrameSlotNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ protected final boolean isLongOrObjectKind(Frame frame) {
104104
return isKind(frame, FrameSlotKind.Long) || isKind(frame, FrameSlotKind.Object);
105105
}
106106

107-
protected final boolean isOrSetObjectKind(Frame frame) {
107+
protected final boolean ensureObjectKind(Frame frame) {
108108
if (frame.getFrameDescriptor().getFrameSlotKind(frameSlot) != FrameSlotKind.Object) {
109109
CompilerDirectives.transferToInterpreterAndInvalidate();
110110
frame.getFrameDescriptor().setFrameSlotKind(frameSlot, FrameSlotKind.Object);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/frame/WriteLocalVariableNode.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ public final boolean executeBoolean(VirtualFrame frame) {
8282
public abstract Object executeWith(VirtualFrame frame, Object value);
8383

8484
@Specialization(guards = "isBooleanKind(frame)")
85-
public boolean write(VirtualFrame frame, boolean right) {
86-
frame.setBoolean(frameSlot, right);
87-
return right;
85+
public boolean write(VirtualFrame frame, boolean value) {
86+
frame.setBoolean(frameSlot, value);
87+
return value;
8888
}
8989

9090
@Specialization(guards = "isIntegerKind(frame)")
@@ -100,23 +100,25 @@ public long writeSmallPIntAsLong(VirtualFrame frame, PInt value) {
100100
return longValue;
101101
}
102102

103-
@Specialization(guards = {"isPrimitiveInt(value)", "!value.isNative()", "isOrSetObjectKind(frame)"}, rewriteOn = ArithmeticException.class)
103+
@Specialization(guards = {"isPrimitiveInt(value)", "!value.isNative()"}, rewriteOn = ArithmeticException.class)
104104
public long writeSmallPIntAsObject(VirtualFrame frame, PInt value) {
105+
ensureObjectKind(frame);
105106
long longValue = value.longValueExact();
106107
frame.setObject(frameSlot, longValue);
107108
return longValue;
108109
}
109110

110111
@Specialization(guards = "isDoubleKind(frame)")
111-
public double write(VirtualFrame frame, double right) {
112-
frame.setDouble(frameSlot, right);
113-
return right;
112+
public double write(VirtualFrame frame, double value) {
113+
frame.setDouble(frameSlot, value);
114+
return value;
114115
}
115116

116-
@Specialization(guards = "isOrSetObjectKind(frame)")
117-
public Object write(VirtualFrame frame, Object right) {
118-
frame.setObject(frameSlot, right);
119-
return right;
117+
@Specialization
118+
public Object write(VirtualFrame frame, Object value) {
119+
ensureObjectKind(frame);
120+
frame.setObject(frameSlot, value);
121+
return value;
120122
}
121123
}
122124

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/generator/FrameTransferNode.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
package com.oracle.graal.python.nodes.generator;
2727

2828
import com.oracle.graal.python.builtins.objects.function.PArguments;
29-
import com.oracle.graal.python.builtins.objects.ints.PInt;
3029
import com.oracle.graal.python.nodes.expression.ExpressionNode;
3130
import com.oracle.graal.python.nodes.frame.FrameSlotNode;
3231
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
@@ -61,9 +60,9 @@ private Frame getCargoFrame(VirtualFrame frame) {
6160
}
6261

6362
@Specialization(guards = "isBooleanKind(frame)")
64-
public boolean write(VirtualFrame frame, boolean right) {
65-
getCargoFrame(frame).setBoolean(frameSlot, right);
66-
return right;
63+
public boolean write(VirtualFrame frame, boolean value) {
64+
getCargoFrame(frame).setBoolean(frameSlot, value);
65+
return value;
6766
}
6867

6968
@Specialization(guards = "isIntegerKind(frame)")
@@ -72,27 +71,22 @@ public int doInteger(VirtualFrame frame, int value) {
7271
return value;
7372
}
7473

75-
@Specialization(guards = "isIntOrObjectKind(frame)")
76-
public PInt write(VirtualFrame frame, PInt value) {
77-
setObject(getCargoFrame(frame), value);
78-
return value;
79-
}
80-
8174
@Specialization(guards = "isLongKind(frame)")
8275
public long doLong(VirtualFrame frame, long value) {
8376
getCargoFrame(frame).setLong(frameSlot, value);
8477
return value;
8578
}
8679

8780
@Specialization(guards = "isDoubleKind(frame)")
88-
public double doDouble(VirtualFrame frame, double right) {
89-
getCargoFrame(frame).setDouble(frameSlot, right);
90-
return right;
81+
public double doDouble(VirtualFrame frame, double value) {
82+
getCargoFrame(frame).setDouble(frameSlot, value);
83+
return value;
9184
}
9285

93-
@Specialization(guards = "isOrSetObjectKind(frame)")
94-
public Object write(VirtualFrame frame, Object right) {
95-
setObject(getCargoFrame(frame), right);
96-
return right;
86+
@Specialization
87+
public Object write(VirtualFrame frame, Object value) {
88+
ensureObjectKind(frame);
89+
setObject(getCargoFrame(frame), value);
90+
return value;
9791
}
9892
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/generator/WriteGeneratorFrameVariableNode.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ protected Frame getGeneratorFrame(VirtualFrame frame) {
9999
}
100100

101101
@Specialization(guards = "isBooleanKind(getGeneratorFrame(frame))")
102-
public boolean write(VirtualFrame frame, boolean right) {
103-
getGeneratorFrame(frame).setBoolean(frameSlot, right);
104-
return right;
102+
public boolean write(VirtualFrame frame, boolean value) {
103+
getGeneratorFrame(frame).setBoolean(frameSlot, value);
104+
return value;
105105
}
106106

107107
@Specialization(guards = "isIntegerKind(getGeneratorFrame(frame))")
@@ -117,23 +117,25 @@ public long writeSmallPIntAsLong(VirtualFrame frame, PInt value) {
117117
return longValue;
118118
}
119119

120-
@Specialization(guards = {"isPrimitiveInt(value)", "!value.isNative()", "isOrSetObjectKind(getGeneratorFrame(frame))"}, rewriteOn = ArithmeticException.class)
120+
@Specialization(guards = {"isPrimitiveInt(value)", "!value.isNative()"}, rewriteOn = ArithmeticException.class)
121121
public long writeSmallPIntAsObject(VirtualFrame frame, PInt value) {
122+
ensureObjectKind(frame);
122123
long longValue = value.longValueExact();
123124
getGeneratorFrame(frame).setObject(frameSlot, longValue);
124125
return longValue;
125126
}
126127

127128
@Specialization(guards = "isDoubleKind(getGeneratorFrame(frame))")
128-
public double write(VirtualFrame frame, double right) {
129-
getGeneratorFrame(frame).setDouble(frameSlot, right);
130-
return right;
129+
public double write(VirtualFrame frame, double value) {
130+
getGeneratorFrame(frame).setDouble(frameSlot, value);
131+
return value;
131132
}
132133

133-
@Specialization(guards = "isOrSetObjectKind(getGeneratorFrame(frame))")
134-
public Object write(VirtualFrame frame, Object right) {
135-
getGeneratorFrame(frame).setObject(frameSlot, right);
136-
return right;
134+
@Specialization
135+
public Object write(VirtualFrame frame, Object value) {
136+
ensureObjectKind(frame);
137+
getGeneratorFrame(frame).setObject(frameSlot, value);
138+
return value;
137139
}
138140
}
139141

0 commit comments

Comments
 (0)