Skip to content

Commit cde9409

Browse files
committed
fix pyTrue/pyFalse singletons to core
1 parent 4641a10 commit cde9409

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/Python3Core.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import static com.oracle.graal.python.nodes.SpecialAttributeNames.__PACKAGE__;
3434

3535
import java.io.IOException;
36+
import java.math.BigInteger;
3637
import java.net.MalformedURLException;
3738
import java.net.URL;
3839
import java.util.Arrays;
@@ -98,6 +99,7 @@
9899
import com.oracle.graal.python.builtins.objects.generator.GeneratorBuiltins;
99100
import com.oracle.graal.python.builtins.objects.getsetdescriptor.GetSetDescriptorTypeBuiltins;
100101
import com.oracle.graal.python.builtins.objects.ints.IntBuiltins;
102+
import com.oracle.graal.python.builtins.objects.ints.PInt;
101103
import com.oracle.graal.python.builtins.objects.iterator.ForeignIteratorBuiltins;
102104
import com.oracle.graal.python.builtins.objects.iterator.IteratorBuiltins;
103105
import com.oracle.graal.python.builtins.objects.iterator.PZipBuiltins;
@@ -272,6 +274,8 @@ public final class Python3Core implements PythonCore {
272274
@CompilationFinal private PythonBuiltinClass objectClass;
273275
@CompilationFinal private PythonBuiltinClass moduleClass;
274276
@CompilationFinal private PythonBuiltinClass foreignClass;
277+
@CompilationFinal private PInt pyTrue;
278+
@CompilationFinal private PInt pyFalse;
275279

276280
@CompilationFinal(dimensions = 1) private PythonClass[] errorClasses;
277281
private final PythonParser parser;
@@ -509,6 +513,9 @@ private void initializeTypes() {
509513
}
510514
}
511515
}
516+
// now initialize well-known objects
517+
pyTrue = new PInt(lookupType(PythonBuiltinClassType.Boolean), BigInteger.ONE);
518+
pyFalse = new PInt(lookupType(PythonBuiltinClassType.Boolean), BigInteger.ZERO);
512519
}
513520

514521
private void populateBuiltins() {
@@ -641,4 +648,12 @@ public void setContext(PythonContext context) {
641648
assert singletonContext == null;
642649
singletonContext = context;
643650
}
651+
652+
public PInt getTrue() {
653+
return pyTrue;
654+
}
655+
656+
public PInt getFalse() {
657+
return pyFalse;
658+
}
644659
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/PythonCore.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import com.oracle.graal.python.PythonLanguage;
3232
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
3333
import com.oracle.graal.python.builtins.objects.exception.PBaseException;
34+
import com.oracle.graal.python.builtins.objects.ints.PInt;
3435
import com.oracle.graal.python.builtins.objects.module.PythonModule;
3536
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
3637
import com.oracle.graal.python.builtins.objects.type.PythonClass;
@@ -112,6 +113,10 @@ public interface PythonCore {
112113

113114
public PythonContext getContext();
114115

116+
public PInt getTrue();
117+
118+
public PInt getFalse();
119+
115120
static void writeWarning(TruffleLanguage.Env env, String warning) {
116121
if (!LIBPOLYGLOT || env.getOptions().get(PythonOptions.VerboseFlag)) {
117122
write(env, "WARNING: " + warning);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/object/PythonObjectFactory.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -190,18 +190,9 @@ public PythonNativeObject createNativeObjectWrapper(Object obj) {
190190
/*
191191
* Primitive types
192192
*/
193-
@CompilationFinal PInt pyTrue = null;
194-
@CompilationFinal PInt pyFalse = null;
195-
196193
public PInt createInt(boolean value) {
197-
if (value && pyTrue == null) {
198-
CompilerDirectives.transferToInterpreterAndInvalidate();
199-
pyTrue = new PInt(lookupClass(PythonBuiltinClassType.Boolean), BigInteger.ONE);
200-
} else if (!value && pyFalse == null) {
201-
CompilerDirectives.transferToInterpreterAndInvalidate();
202-
pyFalse = new PInt(lookupClass(PythonBuiltinClassType.Boolean), BigInteger.ZERO);
203-
}
204-
return value ? pyTrue : pyFalse;
194+
PythonCore core = getCore();
195+
return value ? core.getTrue() : core.getFalse();
205196
}
206197

207198
public PInt createInt(int value) {

0 commit comments

Comments
 (0)