@@ -236,10 +236,9 @@ public abstract static class SyncFrameValuesNode extends Node {
236
236
public abstract void execute (PFrame pyFrame , Frame frameToSync );
237
237
238
238
@ Specialization (guards = {"!pyFrame.hasCustomLocals()" ,
239
- "frameToSync.getFrameDescriptor() == cachedFd" ,
240
- "variableSlotCount(cachedFd) < 32" }, limit = "1" )
239
+ "frameToSync.getFrameDescriptor() == cachedFd" }, limit = "1" )
241
240
@ ExplodeLoop
242
- static void doSyncExploded (PFrame pyFrame , Frame frameToSync ,
241
+ static void doSyncCached (PFrame pyFrame , Frame frameToSync ,
243
242
@ Cached (value = "frameToSync.getFrameDescriptor()" ) FrameDescriptor cachedFd ) {
244
243
MaterializedFrame target = pyFrame .getLocals ();
245
244
assert cachedFd == target .getFrameDescriptor ();
@@ -252,30 +251,14 @@ static void doSyncExploded(PFrame pyFrame, Frame frameToSync,
252
251
rootNode .getBytecodeNode ().copyLocalValues (0 , frameToSync , target , 0 , slotCount );
253
252
}
254
253
} else {
255
- for (int i = 0 ; i < slotCount ; i ++) {
256
- PythonUtils .copyFrameSlot (frameToSync , target , i );
257
- }
254
+ frameToSync .copyTo (0 , target , 0 , slotCount );
258
255
}
259
256
}
260
257
261
- @ Specialization (guards = "!pyFrame.hasCustomLocals()" , replaces = "doSyncExploded " )
258
+ @ Specialization (guards = "!pyFrame.hasCustomLocals()" , replaces = "doSyncCached " )
262
259
@ ExplodeLoop
263
260
static void doSync (PFrame pyFrame , Frame frameToSync ) {
264
- MaterializedFrame target = pyFrame .getLocals ();
265
- FrameDescriptor fd = target .getFrameDescriptor ();
266
- int slotCount = variableSlotCount (fd );
267
-
268
- if (PythonOptions .ENABLE_BYTECODE_DSL_INTERPRETER ) {
269
- FrameInfo info = (FrameInfo ) fd .getInfo ();
270
- if (info instanceof BytecodeDSLFrameInfo bytecodeDSLFrameInfo ) {
271
- PBytecodeDSLRootNode rootNode = bytecodeDSLFrameInfo .getRootNode ();
272
- rootNode .getBytecodeNode ().copyLocalValues (0 , frameToSync , target , 0 , slotCount );
273
- }
274
- } else {
275
- for (int i = 0 ; i < slotCount ; i ++) {
276
- PythonUtils .copyFrameSlot (frameToSync , target , i );
277
- }
278
- }
261
+ doSyncCached (pyFrame , frameToSync , frameToSync .getFrameDescriptor ());
279
262
}
280
263
281
264
@ Specialization (guards = "pyFrame.hasCustomLocals()" )
0 commit comments