Skip to content

Commit f2248cc

Browse files
committed
Use 'IsBuiltinClassProfile' in 'GlobalNode'.
1 parent 75e4571 commit f2248cc

File tree

3 files changed

+16
-15
lines changed

3 files changed

+16
-15
lines changed

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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -44,20 +44,18 @@
4444
import com.oracle.graal.python.builtins.objects.dict.PDict;
4545
import com.oracle.graal.python.builtins.objects.function.PArguments;
4646
import com.oracle.graal.python.builtins.objects.module.PythonModule;
47-
import com.oracle.graal.python.builtins.objects.type.LazyPythonClass;
48-
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
47+
import com.oracle.graal.python.nodes.object.IsBuiltinClassProfile;
4948
import com.oracle.truffle.api.frame.VirtualFrame;
5049

5150
public interface GlobalNode {
5251
default boolean isInModule(VirtualFrame frame) {
5352
return PArguments.getGlobals(frame) instanceof PythonModule;
5453
}
5554

56-
default boolean isInBuiltinDict(VirtualFrame frame) {
55+
default boolean isInBuiltinDict(VirtualFrame frame, IsBuiltinClassProfile profile) {
5756
Object globals = PArguments.getGlobals(frame);
5857
if (globals instanceof PDict) {
59-
LazyPythonClass clazz = ((PDict) globals).getLazyPythonClass();
60-
return clazz == PythonBuiltinClassType.PDict || (clazz instanceof PythonBuiltinClass && ((PythonBuiltinClass) clazz).getType() == PythonBuiltinClassType.PDict);
58+
return profile.profileObject((PDict) globals, PythonBuiltinClassType.PDict);
6159
}
6260
return false;
6361
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2017, 2018, Oracle and/or its affiliates.
2+
* Copyright (c) 2017, 2019, Oracle and/or its affiliates.
33
* Copyright (c) 2013, Regents of the University of California
44
*
55
* All rights reserved.
@@ -80,9 +80,10 @@ protected Object readGlobal(VirtualFrame frame) {
8080
return returnGlobalOrBuiltin(result);
8181
}
8282

83-
@Specialization(guards = "isInBuiltinDict(frame)")
83+
@Specialization(guards = "isInBuiltinDict(frame, builtinProfile)")
8484
protected Object readGlobalDict(VirtualFrame frame,
85-
@Cached("create()") HashingStorageNodes.GetItemNode getItemNode) {
85+
@Cached("create()") HashingStorageNodes.GetItemNode getItemNode,
86+
@Cached("create()") @SuppressWarnings("unused") IsBuiltinClassProfile builtinProfile) {
8687
PythonObject globals = PArguments.getGlobals(frame);
8788
Object result = getItemNode.execute(((PDict) globals).getDictStorage(), attributeId);
8889
return returnGlobalOrBuiltin(result == null ? PNone.NO_VALUE : result);

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -45,6 +45,7 @@
4545
import com.oracle.graal.python.builtins.objects.function.PArguments;
4646
import com.oracle.graal.python.nodes.attributes.SetAttributeNode;
4747
import com.oracle.graal.python.nodes.expression.ExpressionNode;
48+
import com.oracle.graal.python.nodes.object.IsBuiltinClassProfile;
4849
import com.oracle.graal.python.nodes.statement.StatementNode;
4950
import com.oracle.graal.python.nodes.subscript.SetItemNode;
5051
import com.oracle.truffle.api.dsl.Cached;
@@ -55,6 +56,7 @@
5556
@NodeChild(value = "rhs", type = ExpressionNode.class)
5657
public abstract class WriteGlobalNode extends StatementNode implements GlobalNode, WriteNode {
5758
protected final String attributeId;
59+
protected final IsBuiltinClassProfile builtinProfile = IsBuiltinClassProfile.create();
5860

5961
WriteGlobalNode(String attributeId) {
6062
this.attributeId = attributeId;
@@ -102,31 +104,31 @@ private static PDict getGlobalsDict(VirtualFrame frame) {
102104
return (PDict) PArguments.getGlobals(frame);
103105
}
104106

105-
@Specialization(guards = "isInBuiltinDict(frame)")
107+
@Specialization(guards = "isInBuiltinDict(frame, builtinProfile)")
106108
void writeDictBoolean(VirtualFrame frame, boolean value,
107109
@Cached("create()") HashingCollectionNodes.SetItemNode storeNode) {
108110
storeNode.execute(getGlobalsDict(frame), attributeId, value);
109111
}
110112

111-
@Specialization(guards = "isInBuiltinDict(frame)")
113+
@Specialization(guards = "isInBuiltinDict(frame, builtinProfile)")
112114
void writeDictInt(VirtualFrame frame, int value,
113115
@Cached("create()") HashingCollectionNodes.SetItemNode storeNode) {
114116
storeNode.execute(getGlobalsDict(frame), attributeId, value);
115117
}
116118

117-
@Specialization(guards = "isInBuiltinDict(frame)")
119+
@Specialization(guards = "isInBuiltinDict(frame, builtinProfile)")
118120
void writeDictLong(VirtualFrame frame, long value,
119121
@Cached("create()") HashingCollectionNodes.SetItemNode storeNode) {
120122
storeNode.execute(getGlobalsDict(frame), attributeId, value);
121123
}
122124

123-
@Specialization(guards = "isInBuiltinDict(frame)")
125+
@Specialization(guards = "isInBuiltinDict(frame, builtinProfile)")
124126
void writeDictDouble(VirtualFrame frame, double value,
125127
@Cached("create()") HashingCollectionNodes.SetItemNode storeNode) {
126128
storeNode.execute(getGlobalsDict(frame), attributeId, value);
127129
}
128130

129-
@Specialization(replaces = {"writeDictBoolean", "writeDictInt", "writeDictLong", "writeDictDouble"}, guards = "isInBuiltinDict(frame)")
131+
@Specialization(replaces = {"writeDictBoolean", "writeDictInt", "writeDictLong", "writeDictDouble"}, guards = "isInBuiltinDict(frame, builtinProfile)")
130132
void writeDictObject(VirtualFrame frame, Object value,
131133
@Cached("create()") HashingCollectionNodes.SetItemNode storeNode) {
132134
storeNode.execute(getGlobalsDict(frame), attributeId, value);

0 commit comments

Comments
 (0)