@@ -236,10 +236,9 @@ public abstract static class SyncFrameValuesNode extends Node {
236236 public abstract void execute (PFrame pyFrame , Frame frameToSync );
237237
238238 @ Specialization (guards = {"!pyFrame.hasCustomLocals()" ,
239- "frameToSync.getFrameDescriptor() == cachedFd" ,
240- "variableSlotCount(cachedFd) < 32" }, limit = "1" )
239+ "frameToSync.getFrameDescriptor() == cachedFd" }, limit = "1" )
241240 @ ExplodeLoop
242- static void doSyncExploded (PFrame pyFrame , Frame frameToSync ,
241+ static void doSyncCached (PFrame pyFrame , Frame frameToSync ,
243242 @ Cached (value = "frameToSync.getFrameDescriptor()" ) FrameDescriptor cachedFd ) {
244243 MaterializedFrame target = pyFrame .getLocals ();
245244 assert cachedFd == target .getFrameDescriptor ();
@@ -252,30 +251,14 @@ static void doSyncExploded(PFrame pyFrame, Frame frameToSync,
252251 rootNode .getBytecodeNode ().copyLocalValues (0 , frameToSync , target , 0 , slotCount );
253252 }
254253 } else {
255- for (int i = 0 ; i < slotCount ; i ++) {
256- PythonUtils .copyFrameSlot (frameToSync , target , i );
257- }
254+ frameToSync .copyTo (0 , target , 0 , slotCount );
258255 }
259256 }
260257
261- @ Specialization (guards = "!pyFrame.hasCustomLocals()" , replaces = "doSyncExploded " )
258+ @ Specialization (guards = "!pyFrame.hasCustomLocals()" , replaces = "doSyncCached " )
262259 @ ExplodeLoop
263260 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 ());
279262 }
280263
281264 @ Specialization (guards = "pyFrame.hasCustomLocals()" )
0 commit comments