Skip to content

Commit fdba761

Browse files
committed
Remove LazyPythonClass use in PythonAbstractObject
1 parent 4b7c1c8 commit fdba761

File tree

1 file changed

+26
-25
lines changed

1 file changed

+26
-25
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/PythonAbstractObject.java

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@
9494
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
9595
import com.oracle.graal.python.builtins.objects.str.PString;
9696
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
97-
import com.oracle.graal.python.builtins.objects.type.LazyPythonClass;
9897
import com.oracle.graal.python.builtins.objects.type.PythonAbstractClass;
9998
import com.oracle.graal.python.builtins.objects.type.PythonBuiltinClass;
10099
import com.oracle.graal.python.builtins.objects.type.PythonClass;
@@ -642,12 +641,13 @@ public boolean isMapping(@CachedLibrary("this") PythonObjectLibrary plib,
642641

643642
@ExportMessage
644643
public boolean isSequenceType(
644+
@CachedLibrary("this") PythonObjectLibrary lib,
645645
@Shared("hasGetItemNode") @Cached LookupAttributeInMRONode.Dynamic hasGetItemNode,
646646
@Shared("hasLenNode") @Cached LookupAttributeInMRONode.Dynamic hasLenNode,
647647
@Shared("isLazyClass") @Cached("createBinaryProfile()") ConditionProfile isLazyClass,
648648
@Shared("lenProfile") @Cached("createBinaryProfile()") ConditionProfile lenProfile,
649649
@Shared("getItemProfile") @Cached("createBinaryProfile()") ConditionProfile getItemProfile) {
650-
if (isLazyClass.profile(this instanceof LazyPythonClass)) {
650+
if (isLazyClass.profile(lib.isLazyPythonClass(this))) {
651651
if (lenProfile.profile(hasLenNode.execute(this, __LEN__) != PNone.NO_VALUE)) {
652652
return getItemProfile.profile(hasGetItemNode.execute(this, __GETITEM__) != PNone.NO_VALUE);
653653
}
@@ -657,6 +657,7 @@ public boolean isSequenceType(
657657

658658
@ExportMessage
659659
public boolean isMappingType(
660+
@CachedLibrary("this") PythonObjectLibrary lib,
660661
@Shared("hasGetItemNode") @Cached LookupAttributeInMRONode.Dynamic hasGetItemNode,
661662
@Shared("hasLenNode") @Cached LookupAttributeInMRONode.Dynamic hasLenNode,
662663
@Shared("isLazyClass") @Cached("createBinaryProfile()") ConditionProfile isLazyClass,
@@ -666,7 +667,7 @@ public boolean isMappingType(
666667
@Exclusive @Cached LookupAttributeInMRONode.Dynamic hasItemsNode,
667668
@Exclusive @Cached LookupAttributeInMRONode.Dynamic hasValuesNode,
668669
@Exclusive @Cached("createBinaryProfile()") ConditionProfile profile) {
669-
if (isSequenceType(hasGetItemNode, hasLenNode, isLazyClass, lenProfile, getItemProfile)) {
670+
if (isSequenceType(lib, hasGetItemNode, hasLenNode, isLazyClass, lenProfile, getItemProfile)) {
670671
return profile.profile(hasKeysNode.execute(this, SpecialMethodNames.KEYS) != PNone.NO_VALUE &&
671672
hasItemsNode.execute(this, SpecialMethodNames.ITEMS) != PNone.NO_VALUE &&
672673
hasValuesNode.execute(this, SpecialMethodNames.VALUES) != PNone.NO_VALUE);
@@ -1144,9 +1145,9 @@ public final boolean isContextManager(@Exclusive @Cached HasInheritedAttributeNo
11441145
private static final String TIME_TYPE = "time";
11451146
private static final String STRUCT_TIME_TYPE = "struct_time";
11461147

1147-
private static Object readType(ReadAttributeFromObjectNode readTypeNode, Object module, String typename) {
1148+
private static Object readType(ReadAttributeFromObjectNode readTypeNode, Object module, String typename, PythonObjectLibrary plib) {
11481149
Object type = readTypeNode.execute(module, typename);
1149-
if (type instanceof LazyPythonClass) {
1150+
if (plib.isLazyPythonClass(type)) {
11501151
return type;
11511152
} else {
11521153
CompilerDirectives.transferToInterpreter();
@@ -1155,7 +1156,7 @@ private static Object readType(ReadAttributeFromObjectNode readTypeNode, Object
11551156
}
11561157

11571158
@ExportMessage
1158-
public boolean isDate(@CachedLibrary("this") PythonObjectLibrary plib,
1159+
public boolean isDate(@CachedLibrary(limit = "3") PythonObjectLibrary plib,
11591160
@Shared("readTypeNode") @Cached ReadAttributeFromObjectNode readTypeNode,
11601161
@Shared("isSubtypeNode") @Cached IsSubtypeNode isSubtypeNode,
11611162
@Shared("dateTimeModuleProfile") @Cached("createBinaryProfile()") ConditionProfile dateTimeModuleLoaded,
@@ -1164,13 +1165,13 @@ public boolean isDate(@CachedLibrary("this") PythonObjectLibrary plib,
11641165
PDict importedModules = PythonLanguage.getContext().getImportedModules();
11651166
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
11661167
if (dateTimeModuleLoaded.profile(module != null)) {
1167-
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, DATETIME_TYPE)) || isSubtypeNode.execute(objType, readType(readTypeNode, module, DATE_TYPE))) {
1168+
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib)) || isSubtypeNode.execute(objType, readType(readTypeNode, module, DATE_TYPE, plib))) {
11681169
return true;
11691170
}
11701171
}
11711172
module = importedModules.getItem(TIME_MODULE_NAME);
11721173
if (timeModuleLoaded.profile(module != null)) {
1173-
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, STRUCT_TIME_TYPE))) {
1174+
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, STRUCT_TIME_TYPE, plib))) {
11741175
return true;
11751176
}
11761177
}
@@ -1179,7 +1180,7 @@ public boolean isDate(@CachedLibrary("this") PythonObjectLibrary plib,
11791180

11801181
@ExportMessage
11811182
public LocalDate asDate(
1182-
@CachedLibrary("this") PythonObjectLibrary plib,
1183+
@CachedLibrary(limit = "3") PythonObjectLibrary plib,
11831184
@Shared("readTypeNode") @Cached ReadAttributeFromObjectNode readTypeNode,
11841185
@Shared("isSubtypeNode") @Cached IsSubtypeNode isSubtypeNode,
11851186
@Shared("castToIntNode") @Cached CastToJavaIntExactNode castToIntNode,
@@ -1190,7 +1191,7 @@ public LocalDate asDate(
11901191
PDict importedModules = PythonLanguage.getContext().getImportedModules();
11911192
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
11921193
if (dateTimeModuleLoaded.profile(module != null)) {
1193-
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, DATETIME_TYPE)) || isSubtypeNode.execute(objType, readType(readTypeNode, module, DATE_TYPE))) {
1194+
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib)) || isSubtypeNode.execute(objType, readType(readTypeNode, module, DATE_TYPE, plib))) {
11941195
try {
11951196
int year = castToIntNode.execute(lib.readMember(this, "year"));
11961197
int month = castToIntNode.execute(lib.readMember(this, "month"));
@@ -1203,7 +1204,7 @@ public LocalDate asDate(
12031204
}
12041205
module = importedModules.getItem(TIME_MODULE_NAME);
12051206
if (timeModuleLoaded.profile(module != null)) {
1206-
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, STRUCT_TIME_TYPE))) {
1207+
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, STRUCT_TIME_TYPE, plib))) {
12071208
try {
12081209
int year = castToIntNode.execute(lib.readMember(this, "tm_year"));
12091210
int month = castToIntNode.execute(lib.readMember(this, "tm_mon"));
@@ -1218,7 +1219,7 @@ public LocalDate asDate(
12181219
}
12191220

12201221
@ExportMessage
1221-
public boolean isTime(@CachedLibrary("this") PythonObjectLibrary plib,
1222+
public boolean isTime(@CachedLibrary(limit = "3") PythonObjectLibrary plib,
12221223
@Shared("readTypeNode") @Cached ReadAttributeFromObjectNode readTypeNode,
12231224
@Shared("isSubtypeNode") @Cached IsSubtypeNode isSubtype,
12241225
@Shared("dateTimeModuleProfile") @Cached("createBinaryProfile()") ConditionProfile dateTimeModuleLoaded,
@@ -1227,21 +1228,21 @@ public boolean isTime(@CachedLibrary("this") PythonObjectLibrary plib,
12271228
PDict importedModules = PythonLanguage.getContext().getImportedModules();
12281229
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
12291230
if (dateTimeModuleLoaded.profile(module != null)) {
1230-
if (isSubtype.execute(objType, readType(readTypeNode, module, DATETIME_TYPE)) || isSubtype.execute(objType, readType(readTypeNode, module, TIME_TYPE))) {
1231+
if (isSubtype.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib)) || isSubtype.execute(objType, readType(readTypeNode, module, TIME_TYPE, plib))) {
12311232
return true;
12321233
}
12331234
}
12341235
module = importedModules.getItem(TIME_MODULE_NAME);
12351236
if (timeModuleLoaded.profile(module != null)) {
1236-
if (isSubtype.execute(objType, readType(readTypeNode, module, STRUCT_TIME_TYPE))) {
1237+
if (isSubtype.execute(objType, readType(readTypeNode, module, STRUCT_TIME_TYPE, plib))) {
12371238
return true;
12381239
}
12391240
}
12401241
return false;
12411242
}
12421243

12431244
@ExportMessage
1244-
public LocalTime asTime(@CachedLibrary("this") PythonObjectLibrary plib,
1245+
public LocalTime asTime(@CachedLibrary(limit = "3") PythonObjectLibrary plib,
12451246
@Shared("readTypeNode") @Cached ReadAttributeFromObjectNode readTypeNode,
12461247
@Shared("isSubtypeNode") @Cached IsSubtypeNode isSubtypeNode,
12471248
@Shared("castToIntNode") @Cached CastToJavaIntExactNode castToIntNode,
@@ -1252,7 +1253,7 @@ public LocalTime asTime(@CachedLibrary("this") PythonObjectLibrary plib,
12521253
PDict importedModules = PythonLanguage.getContext().getImportedModules();
12531254
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
12541255
if (dateTimeModuleLoaded.profile(module != null)) {
1255-
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, DATETIME_TYPE)) || isSubtypeNode.execute(objType, readType(readTypeNode, module, TIME_TYPE))) {
1256+
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib)) || isSubtypeNode.execute(objType, readType(readTypeNode, module, TIME_TYPE, plib))) {
12561257
try {
12571258
int hour = castToIntNode.execute(lib.readMember(this, "hour"));
12581259
int min = castToIntNode.execute(lib.readMember(this, "minute"));
@@ -1266,7 +1267,7 @@ public LocalTime asTime(@CachedLibrary("this") PythonObjectLibrary plib,
12661267
}
12671268
module = importedModules.getItem(TIME_MODULE_NAME);
12681269
if (timeModuleLoaded.profile(module != null)) {
1269-
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, STRUCT_TIME_TYPE))) {
1270+
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, STRUCT_TIME_TYPE, plib))) {
12701271
try {
12711272
int hour = castToIntNode.execute(lib.readMember(this, "tm_hour"));
12721273
int min = castToIntNode.execute(lib.readMember(this, "tm_min"));
@@ -1281,7 +1282,7 @@ public LocalTime asTime(@CachedLibrary("this") PythonObjectLibrary plib,
12811282
}
12821283

12831284
@ExportMessage
1284-
public boolean isTimeZone(@CachedLibrary("this") PythonObjectLibrary plib,
1285+
public boolean isTimeZone(@CachedLibrary(limit = "3") PythonObjectLibrary plib,
12851286
@Shared("readTypeNode") @Cached ReadAttributeFromObjectNode readTypeNode,
12861287
@Shared("isSubtypeNode") @Cached IsSubtypeNode isSubtype,
12871288
@CachedLibrary(limit = "2") InteropLibrary lib,
@@ -1291,7 +1292,7 @@ public boolean isTimeZone(@CachedLibrary("this") PythonObjectLibrary plib,
12911292
PDict importedModules = PythonLanguage.getContext().getImportedModules();
12921293
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
12931294
if (dateTimeModuleLoaded.profile(module != null)) {
1294-
if (isSubtype.execute(objType, readType(readTypeNode, module, DATETIME_TYPE))) {
1295+
if (isSubtype.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib))) {
12951296
try {
12961297
Object tzinfo = lib.readMember(this, "tzinfo");
12971298
if (tzinfo != PNone.NONE) {
@@ -1303,7 +1304,7 @@ public boolean isTimeZone(@CachedLibrary("this") PythonObjectLibrary plib,
13031304
} catch (UnsupportedMessageException | UnknownIdentifierException | ArityException | UnsupportedTypeException ex) {
13041305
return false;
13051306
}
1306-
} else if (isSubtype.execute(objType, readType(readTypeNode, module, TIME_TYPE))) {
1307+
} else if (isSubtype.execute(objType, readType(readTypeNode, module, TIME_TYPE, plib))) {
13071308
try {
13081309
Object tzinfo = lib.readMember(this, "tzinfo");
13091310
if (tzinfo != PNone.NONE) {
@@ -1319,7 +1320,7 @@ public boolean isTimeZone(@CachedLibrary("this") PythonObjectLibrary plib,
13191320
}
13201321
module = importedModules.getItem(TIME_MODULE_NAME);
13211322
if (timeModuleLoaded.profile(module != null)) {
1322-
if (isSubtype.execute(objType, readType(readTypeNode, module, STRUCT_TIME_TYPE))) {
1323+
if (isSubtype.execute(objType, readType(readTypeNode, module, STRUCT_TIME_TYPE, plib))) {
13231324
try {
13241325
Object tm_zone = lib.readMember(this, "tm_zone");
13251326
if (tm_zone != PNone.NONE) {
@@ -1334,7 +1335,7 @@ public boolean isTimeZone(@CachedLibrary("this") PythonObjectLibrary plib,
13341335
}
13351336

13361337
@ExportMessage
1337-
public ZoneId asTimeZone(@CachedLibrary("this") PythonObjectLibrary plib,
1338+
public ZoneId asTimeZone(@CachedLibrary(limit = "3") PythonObjectLibrary plib,
13381339
@Shared("readTypeNode") @Cached ReadAttributeFromObjectNode readTypeNode,
13391340
@Shared("isSubtypeNode") @Cached IsSubtypeNode isSubtypeNode,
13401341
@Shared("castToIntNode") @Cached CastToJavaIntExactNode castToIntNode,
@@ -1348,7 +1349,7 @@ public ZoneId asTimeZone(@CachedLibrary("this") PythonObjectLibrary plib,
13481349
PDict importedModules = PythonLanguage.getContext().getImportedModules();
13491350
Object module = importedModules.getItem(DATETIME_MODULE_NAME);
13501351
if (dateTimeModuleLoaded.profile(module != null)) {
1351-
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, "datetime"))) {
1352+
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, DATETIME_TYPE, plib))) {
13521353
try {
13531354
Object tzinfo = lib.readMember(this, "tzinfo");
13541355
if (tzinfo != PNone.NONE) {
@@ -1361,7 +1362,7 @@ public ZoneId asTimeZone(@CachedLibrary("this") PythonObjectLibrary plib,
13611362
} catch (UnsupportedMessageException | UnknownIdentifierException | ArityException | UnsupportedTypeException ex) {
13621363
throw UnsupportedMessageException.create();
13631364
}
1364-
} else if (isSubtypeNode.execute(objType, readType(readTypeNode, module, "time"))) {
1365+
} else if (isSubtypeNode.execute(objType, readType(readTypeNode, module, TIME_TYPE, plib))) {
13651366
try {
13661367
Object tzinfo = lib.readMember(this, "tzinfo");
13671368
if (tzinfo != PNone.NONE) {
@@ -1378,7 +1379,7 @@ public ZoneId asTimeZone(@CachedLibrary("this") PythonObjectLibrary plib,
13781379
}
13791380
module = importedModules.getItem(TIME_MODULE_NAME);
13801381
if (timeModuleLoaded.profile(module != null)) {
1381-
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, "struct_time"))) {
1382+
if (isSubtypeNode.execute(objType, readType(readTypeNode, module, STRUCT_TIME_TYPE, plib))) {
13821383
try {
13831384
Object tm_zone = lib.readMember(this, "tm_zone");
13841385
if (tm_zone != PNone.NONE) {

0 commit comments

Comments
 (0)