@@ -435,6 +435,7 @@ public Object executeBodyFromOffset(WasmContext context, WasmInstance instance,
435
435
stackPointer --;
436
436
int index = popInt (frame , stackPointer );
437
437
final int size = rawPeekU8 (bytecode , offset );
438
+ final int counterOffset = offset + 1 ;
438
439
if (index < 0 || index >= size ) {
439
440
// If unsigned index is larger or equal to the table size use the
440
441
// default (last) index.
@@ -443,7 +444,7 @@ public Object executeBodyFromOffset(WasmContext context, WasmInstance instance,
443
444
444
445
if (CompilerDirectives .inInterpreter ()) {
445
446
final int indexOffset = offset + 3 + index * 6 ;
446
- updateBranchTableProfile (bytecode , offset + 1 , indexOffset + 4 );
447
+ updateBranchTableProfile (bytecode , counterOffset , indexOffset + 4 );
447
448
final int offsetDelta = rawPeekI32 (bytecode , indexOffset );
448
449
offset = indexOffset + offsetDelta ;
449
450
break ;
@@ -453,7 +454,7 @@ public Object executeBodyFromOffset(WasmContext context, WasmInstance instance,
453
454
// time constants, since the loop is unrolled.
454
455
for (int i = 0 ; i < size ; i ++) {
455
456
final int indexOffset = offset + 3 + i * 6 ;
456
- if (profileBranchTable (bytecode , offset + 1 , indexOffset + 4 , i == index )) {
457
+ if (profileBranchTable (bytecode , counterOffset , indexOffset + 4 , i == index )) {
457
458
final int offsetDelta = rawPeekI32 (bytecode , indexOffset );
458
459
offset = indexOffset + offsetDelta ;
459
460
continue loop ;
@@ -467,6 +468,7 @@ public Object executeBodyFromOffset(WasmContext context, WasmInstance instance,
467
468
stackPointer --;
468
469
int index = popInt (frame , stackPointer );
469
470
final int size = rawPeekI32 (bytecode , offset );
471
+ final int counterOffset = offset + 4 ;
470
472
if (index < 0 || index >= size ) {
471
473
// If unsigned index is larger or equal to the table size use the
472
474
// default (last) index.
@@ -475,7 +477,7 @@ public Object executeBodyFromOffset(WasmContext context, WasmInstance instance,
475
477
476
478
if (CompilerDirectives .inInterpreter ()) {
477
479
final int indexOffset = offset + 6 + index * 6 ;
478
- updateBranchTableProfile (bytecode , offset + 4 , indexOffset + 4 );
480
+ updateBranchTableProfile (bytecode , counterOffset , indexOffset + 4 );
479
481
final int offsetDelta = rawPeekI32 (bytecode , indexOffset );
480
482
offset = indexOffset + offsetDelta ;
481
483
break ;
@@ -485,7 +487,7 @@ public Object executeBodyFromOffset(WasmContext context, WasmInstance instance,
485
487
// time constants, since the loop is unrolled.
486
488
for (int i = 0 ; i < size ; i ++) {
487
489
final int indexOffset = offset + 6 + i * 6 ;
488
- if (profileBranchTable (bytecode , offset + 1 , indexOffset + 4 , i == index )) {
490
+ if (profileBranchTable (bytecode , counterOffset , indexOffset + 4 , i == index )) {
489
491
final int offsetDelta = rawPeekI32 (bytecode , indexOffset );
490
492
offset = indexOffset + offsetDelta ;
491
493
continue loop ;
0 commit comments