371 break;
372 case T_FLOAT:
373 locals->set_float_at(index, value.f);
374 break;
375 case T_DOUBLE:
376 locals->set_double_at(index, value.d);
377 break;
378 case T_BYTE:
379 locals->set_int_at(index, value.b);
380 break;
381 case T_SHORT:
382 locals->set_int_at(index, value.s);
383 break;
384 case T_INT:
385 locals->set_int_at(index, value.i);
386 break;
387 case T_LONG:
388 locals->set_long_at(index, value.j);
389 break;
390 case T_OBJECT:
391 {
392 Handle obj(Thread::current(), (oop)value.l);
393 locals->set_obj_at(index, obj);
394 }
395 break;
396 default:
397 ShouldNotReachHere();
398 }
399 }
400
401 void jvmtiDeferredLocalVariableSet::update_locals(StackValueCollection* locals) {
402 for (int l = 0; l < _locals->length(); l ++) {
403 jvmtiDeferredLocalVariable* val = _locals->at(l);
404 if (val->index() >= 0 && val->index() < method()->max_locals()) {
405 update_value(locals, val->type(), val->index(), val->value());
406 }
407 }
408 }
409
410
|
371 break;
372 case T_FLOAT:
373 locals->set_float_at(index, value.f);
374 break;
375 case T_DOUBLE:
376 locals->set_double_at(index, value.d);
377 break;
378 case T_BYTE:
379 locals->set_int_at(index, value.b);
380 break;
381 case T_SHORT:
382 locals->set_int_at(index, value.s);
383 break;
384 case T_INT:
385 locals->set_int_at(index, value.i);
386 break;
387 case T_LONG:
388 locals->set_long_at(index, value.j);
389 break;
390 case T_OBJECT:
391 case T_VALUETYPE:
392 {
393 Handle obj(Thread::current(), (oop)value.l);
394 locals->set_obj_at(index, obj);
395 }
396 break;
397 default:
398 ShouldNotReachHere();
399 }
400 }
401
402 void jvmtiDeferredLocalVariableSet::update_locals(StackValueCollection* locals) {
403 for (int l = 0; l < _locals->length(); l ++) {
404 jvmtiDeferredLocalVariable* val = _locals->at(l);
405 if (val->index() >= 0 && val->index() < method()->max_locals()) {
406 update_value(locals, val->type(), val->index(), val->value());
407 }
408 }
409 }
410
411
|