456 break;
457 case T_FLOAT:
458 locals->set_float_at(index, value.f);
459 break;
460 case T_DOUBLE:
461 locals->set_double_at(index, value.d);
462 break;
463 case T_BYTE:
464 locals->set_int_at(index, value.b);
465 break;
466 case T_SHORT:
467 locals->set_int_at(index, value.s);
468 break;
469 case T_INT:
470 locals->set_int_at(index, value.i);
471 break;
472 case T_LONG:
473 locals->set_long_at(index, value.j);
474 break;
475 case T_OBJECT:
476 {
477 Handle obj(Thread::current(), cast_to_oop(value.l));
478 locals->set_obj_at(index, obj);
479 }
480 break;
481 default:
482 ShouldNotReachHere();
483 }
484 }
485
486 void jvmtiDeferredLocalVariableSet::update_locals(StackValueCollection* locals) {
487 for (int l = 0; l < _locals->length(); l ++) {
488 jvmtiDeferredLocalVariable* val = _locals->at(l);
489 if (val->index() >= 0 && val->index() < method()->max_locals()) {
490 update_value(locals, val->type(), val->index(), val->value());
491 }
492 }
493 }
494
495
|
456 break;
457 case T_FLOAT:
458 locals->set_float_at(index, value.f);
459 break;
460 case T_DOUBLE:
461 locals->set_double_at(index, value.d);
462 break;
463 case T_BYTE:
464 locals->set_int_at(index, value.b);
465 break;
466 case T_SHORT:
467 locals->set_int_at(index, value.s);
468 break;
469 case T_INT:
470 locals->set_int_at(index, value.i);
471 break;
472 case T_LONG:
473 locals->set_long_at(index, value.j);
474 break;
475 case T_OBJECT:
476 case T_PRIMITIVE_OBJECT:
477 {
478 Handle obj(Thread::current(), cast_to_oop(value.l));
479 locals->set_obj_at(index, obj);
480 }
481 break;
482 default:
483 ShouldNotReachHere();
484 }
485 }
486
487 void jvmtiDeferredLocalVariableSet::update_locals(StackValueCollection* locals) {
488 for (int l = 0; l < _locals->length(); l ++) {
489 jvmtiDeferredLocalVariable* val = _locals->at(l);
490 if (val->index() >= 0 && val->index() < method()->max_locals()) {
491 update_value(locals, val->type(), val->index(), val->value());
492 }
493 }
494 }
495
496
|