@@ -101,6 +101,7 @@ public class PThreadState extends PythonNativeWrapper {
101
101
public static final String DICT = "dict" ;
102
102
public static final String PREV = "prev" ;
103
103
public static final String RECURSION_DEPTH = "recursion_depth" ;
104
+ public static final String OVERFLOWED = "overflowed" ;
104
105
105
106
private PDict dict ;
106
107
@@ -130,6 +131,7 @@ protected boolean isMemberReadable(String member) {
130
131
case DICT :
131
132
case PREV :
132
133
case RECURSION_DEPTH :
134
+ case OVERFLOWED :
133
135
return true ;
134
136
default :
135
137
return false ;
@@ -139,7 +141,7 @@ protected boolean isMemberReadable(String member) {
139
141
@ ExportMessage
140
142
protected Object getMembers (@ SuppressWarnings ("unused" ) boolean includeInternal ,
141
143
@ Exclusive @ Cached PythonObjectFactory factory ) {
142
- return factory .createList (new Object [] { CUR_EXC_TYPE , CUR_EXC_VALUE , CUR_EXC_TRACEBACK , EXC_TYPE , EXC_VALUE , EXC_TRACEBACK , DICT , PREV , RECURSION_DEPTH });
144
+ return factory .createList (new Object [] { CUR_EXC_TYPE , CUR_EXC_VALUE , CUR_EXC_TRACEBACK , EXC_TYPE , EXC_VALUE , EXC_TRACEBACK , DICT , PREV , RECURSION_DEPTH , OVERFLOWED });
143
145
}
144
146
145
147
@ ExportMessage
@@ -280,6 +282,11 @@ long doRecursionDepth(@SuppressWarnings("unused") String key) {
280
282
return visitor .depth ;
281
283
}
282
284
285
+ @ Specialization (guards = "eq(key, OVERFLOWED)" )
286
+ long doOverflowed (@ SuppressWarnings ("unused" ) String key ) {
287
+ return 0 ;
288
+ }
289
+
283
290
protected static boolean eq (String key , String expected ) {
284
291
return expected .equals (key );
285
292
}
@@ -303,6 +310,7 @@ protected boolean isMemberModifiable(String member) {
303
310
case EXC_VALUE :
304
311
case EXC_TRACEBACK :
305
312
case RECURSION_DEPTH :
313
+ case OVERFLOWED :
306
314
return true ;
307
315
default :
308
316
return false ;
@@ -319,6 +327,8 @@ protected boolean isMemberInsertable(String member) {
319
327
case EXC_TYPE :
320
328
case EXC_VALUE :
321
329
case EXC_TRACEBACK :
330
+ case RECURSION_DEPTH :
331
+ case OVERFLOWED :
322
332
return true ;
323
333
default :
324
334
return false ;
@@ -422,6 +432,13 @@ Object doRecursionDepth(String key, int value) {
422
432
return null ;
423
433
}
424
434
435
+ @ Specialization (guards = "eq(key, OVERFLOWED)" )
436
+ @ SuppressWarnings ("unused" )
437
+ Object doOverflowed (String key , int value ) {
438
+ // TODO: (tfel) Can we not ignore this?
439
+ return null ;
440
+ }
441
+
425
442
private static void setCurrentException (PRaiseNode raiseNode , PythonContext context , PBaseException exceptionObject ) {
426
443
try {
427
444
throw raiseNode .raise (exceptionObject );
0 commit comments