@@ -250,7 +250,7 @@ private static FrameInfoQueryResult decodeUncompressedFrameInfo(boolean isDeoptE
250
250
return result ;
251
251
}
252
252
253
- assert !(! state .isFirstFrame && isDeoptEntry ) : "Deoptimization entry must not have inlined frames" ;
253
+ assert state .isFirstFrame || ! isDeoptEntry : "Deoptimization entry must not have inlined frames" ;
254
254
255
255
cur .encodedBci = encodedBci ;
256
256
cur .isDeoptEntry = isDeoptEntry ;
@@ -281,17 +281,15 @@ private static FrameInfoQueryResult decodeUncompressedFrameInfo(boolean isDeoptE
281
281
cur .valueInfos = decodeValues (valueInfoAllocator , curValueInfosLength , readBuffer , CodeInfoAccess .getFrameInfoObjectConstants (info ));
282
282
}
283
283
284
- if (state .isFirstFrame ) {
284
+ if (state .isFirstFrame && needLocalValues ) {
285
285
/* This is the first frame, i.e., the top frame that will be returned. */
286
- if (needLocalValues ) {
287
- int numVirtualObjects = readBuffer .getUVInt ();
288
- virtualObjects = valueInfoAllocator .newValueInfoArrayArray (numVirtualObjects );
289
- for (int i = 0 ; i < numVirtualObjects ; i ++) {
290
- int numValues = readBuffer .getUVInt ();
291
- ValueInfo [] decodedValues = decodeValues (valueInfoAllocator , numValues , readBuffer , CodeInfoAccess .getFrameInfoObjectConstants (info ));
292
- if (virtualObjects != null ) {
293
- virtualObjects [i ] = decodedValues ;
294
- }
286
+ int numVirtualObjects = readBuffer .getUVInt ();
287
+ virtualObjects = valueInfoAllocator .newValueInfoArrayArray (numVirtualObjects );
288
+ for (int i = 0 ; i < numVirtualObjects ; i ++) {
289
+ int numValues = readBuffer .getUVInt ();
290
+ ValueInfo [] decodedValues = decodeValues (valueInfoAllocator , numValues , readBuffer , CodeInfoAccess .getFrameInfoObjectConstants (info ));
291
+ if (virtualObjects != null ) {
292
+ virtualObjects [i ] = decodedValues ;
295
293
}
296
294
}
297
295
}
0 commit comments