Skip to content

Commit d8e1a0a

Browse files
committed
PyImportGetModule / PyImportImport add condition profiles
1 parent 155ce68 commit d8e1a0a

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/lib/PyImportGetModule.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import com.oracle.truffle.api.dsl.Cached;
5050
import com.oracle.truffle.api.dsl.Specialization;
5151
import com.oracle.truffle.api.frame.VirtualFrame;
52+
import com.oracle.truffle.api.profiles.ConditionProfile;
5253

5354
/**
5455
* Equivalent of CPython's {@code PyImport_GetModule}.
@@ -58,9 +59,10 @@ public abstract class PyImportGetModule extends PNodeWithState {
5859

5960
@Specialization
6061
Object doGeneric(VirtualFrame frame, Object name,
62+
@Cached ConditionProfile noSysModulesProfile,
6163
@Cached DictBuiltins.GetItemNode getDictItemNode) {
6264
final PDict sysModules = getContext().getSysModules();
63-
if (sysModules == null) {
65+
if (noSysModulesProfile.profile(sysModules == null)) {
6466
throw raise(PythonBuiltinClassType.RuntimeError, UNABLE_TO_GET_S, "sys.modules");
6567
}
6668
return getDictItemNode.execute(frame, sysModules, name);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/lib/PyImportImport.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import com.oracle.truffle.api.dsl.Cached;
5353
import com.oracle.truffle.api.dsl.Specialization;
5454
import com.oracle.truffle.api.frame.VirtualFrame;
55+
import com.oracle.truffle.api.profiles.ConditionProfile;
5556

5657
/**
5758
* Equivalent of CPython's {@code PyImport_Import}.
@@ -61,6 +62,8 @@ public abstract class PyImportImport extends PNodeWithState {
6162

6263
@Specialization
6364
Object doGeneric(VirtualFrame frame, Object moduleName,
65+
@Cached ConditionProfile noGlobalsProfile,
66+
@Cached ConditionProfile dictBuiltinsProfile,
6467
@Cached PyImportGetModule importGetModule,
6568
@Cached PyObjectGetItem getItemNode,
6669
@Cached PyObjectGetAttr getAttrNode,
@@ -70,7 +73,7 @@ Object doGeneric(VirtualFrame frame, Object moduleName,
7073
// Get the builtins from current globals
7174
Object globals = getGlobals.execute(frame);
7275
Object builtins;
73-
if (globals != null) {
76+
if (noGlobalsProfile.profile(globals != null)) {
7477
builtins = getItemNode.execute(frame, globals, __BUILTINS__);
7578
} else {
7679
// No globals -- use standard builtins, and fake globals
@@ -80,7 +83,7 @@ Object doGeneric(VirtualFrame frame, Object moduleName,
8083

8184
// Get the __import__ function from the builtins
8285
Object importFunc;
83-
if (builtins instanceof PDict) {
86+
if (dictBuiltinsProfile.profile(builtins instanceof PDict)) {
8487
importFunc = getItemNode.execute(frame, builtins, __IMPORT__);
8588
} else {
8689
importFunc = getAttrNode.execute(frame, builtins, __IMPORT__);

0 commit comments

Comments
 (0)