399 }
400
401 void
402 JvmtiExport::add_default_read_edges(Handle h_module, TRAPS) {
403 if (!Universe::is_module_initialized()) {
404 return; // extra safety
405 }
406 assert(!h_module.is_null(), "module should always be set");
407
408 // Invoke the transformedByAgent method
409 JavaValue result(T_VOID);
410 JavaCalls::call_static(&result,
411 SystemDictionary::module_Modules_klass(),
412 vmSymbols::transformedByAgent_name(),
413 vmSymbols::transformedByAgent_signature(),
414 h_module,
415 THREAD);
416
417 if (HAS_PENDING_EXCEPTION) {
418 LogTarget(Trace, jvmti) log;
419 LogStreamCHeap log_stream(log);
420 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
421 log_stream.cr();
422 CLEAR_PENDING_EXCEPTION;
423 return;
424 }
425 }
426
427 jvmtiError
428 JvmtiExport::add_module_reads(Handle module, Handle to_module, TRAPS) {
429 if (!Universe::is_module_initialized()) {
430 return JVMTI_ERROR_NONE; // extra safety
431 }
432 assert(!module.is_null(), "module should always be set");
433 assert(!to_module.is_null(), "to_module should always be set");
434
435 // Invoke the addReads method
436 JavaValue result(T_VOID);
437 JavaCalls::call_static(&result,
438 SystemDictionary::module_Modules_klass(),
439 vmSymbols::addReads_name(),
440 vmSymbols::addReads_signature(),
441 module,
442 to_module,
443 THREAD);
444
445 if (HAS_PENDING_EXCEPTION) {
446 LogTarget(Trace, jvmti) log;
447 LogStreamCHeap log_stream(log);
448 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
449 log_stream.cr();
450 CLEAR_PENDING_EXCEPTION;
451 return JVMTI_ERROR_INTERNAL;
452 }
453 return JVMTI_ERROR_NONE;
454 }
455
456 jvmtiError
457 JvmtiExport::add_module_exports(Handle module, Handle pkg_name, Handle to_module, TRAPS) {
458 if (!Universe::is_module_initialized()) {
459 return JVMTI_ERROR_NONE; // extra safety
460 }
461 assert(!module.is_null(), "module should always be set");
462 assert(!to_module.is_null(), "to_module should always be set");
463 assert(!pkg_name.is_null(), "pkg_name should always be set");
464
465 // Invoke the addExports method
466 JavaValue result(T_VOID);
467 JavaCalls::call_static(&result,
468 SystemDictionary::module_Modules_klass(),
469 vmSymbols::addExports_name(),
470 vmSymbols::addExports_signature(),
471 module,
472 pkg_name,
473 to_module,
474 THREAD);
475
476 if (HAS_PENDING_EXCEPTION) {
477 Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
478 LogTarget(Trace, jvmti) log;
479 LogStreamCHeap log_stream(log);
480 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
481 log_stream.cr();
482 CLEAR_PENDING_EXCEPTION;
483 if (ex_name == vmSymbols::java_lang_IllegalArgumentException()) {
484 return JVMTI_ERROR_ILLEGAL_ARGUMENT;
485 }
486 return JVMTI_ERROR_INTERNAL;
487 }
488 return JVMTI_ERROR_NONE;
489 }
490
491 jvmtiError
492 JvmtiExport::add_module_opens(Handle module, Handle pkg_name, Handle to_module, TRAPS) {
493 if (!Universe::is_module_initialized()) {
494 return JVMTI_ERROR_NONE; // extra safety
495 }
496 assert(!module.is_null(), "module should always be set");
497 assert(!to_module.is_null(), "to_module should always be set");
498 assert(!pkg_name.is_null(), "pkg_name should always be set");
499
500 // Invoke the addOpens method
501 JavaValue result(T_VOID);
502 JavaCalls::call_static(&result,
503 SystemDictionary::module_Modules_klass(),
504 vmSymbols::addOpens_name(),
505 vmSymbols::addExports_signature(),
506 module,
507 pkg_name,
508 to_module,
509 THREAD);
510
511 if (HAS_PENDING_EXCEPTION) {
512 Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
513 LogTarget(Trace, jvmti) log;
514 LogStreamCHeap log_stream(log);
515 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
516 log_stream.cr();
517 CLEAR_PENDING_EXCEPTION;
518 if (ex_name == vmSymbols::java_lang_IllegalArgumentException()) {
519 return JVMTI_ERROR_ILLEGAL_ARGUMENT;
520 }
521 return JVMTI_ERROR_INTERNAL;
522 }
523 return JVMTI_ERROR_NONE;
524 }
525
526 jvmtiError
527 JvmtiExport::add_module_uses(Handle module, Handle service, TRAPS) {
528 if (!Universe::is_module_initialized()) {
529 return JVMTI_ERROR_NONE; // extra safety
530 }
531 assert(!module.is_null(), "module should always be set");
532 assert(!service.is_null(), "service should always be set");
533
534 // Invoke the addUses method
535 JavaValue result(T_VOID);
536 JavaCalls::call_static(&result,
537 SystemDictionary::module_Modules_klass(),
538 vmSymbols::addUses_name(),
539 vmSymbols::addUses_signature(),
540 module,
541 service,
542 THREAD);
543
544 if (HAS_PENDING_EXCEPTION) {
545 LogTarget(Trace, jvmti) log;
546 LogStreamCHeap log_stream(log);
547 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
548 log_stream.cr();
549 CLEAR_PENDING_EXCEPTION;
550 return JVMTI_ERROR_INTERNAL;
551 }
552 return JVMTI_ERROR_NONE;
553 }
554
555 jvmtiError
556 JvmtiExport::add_module_provides(Handle module, Handle service, Handle impl_class, TRAPS) {
557 if (!Universe::is_module_initialized()) {
558 return JVMTI_ERROR_NONE; // extra safety
559 }
560 assert(!module.is_null(), "module should always be set");
561 assert(!service.is_null(), "service should always be set");
562 assert(!impl_class.is_null(), "impl_class should always be set");
563
564 // Invoke the addProvides method
565 JavaValue result(T_VOID);
566 JavaCalls::call_static(&result,
567 SystemDictionary::module_Modules_klass(),
568 vmSymbols::addProvides_name(),
569 vmSymbols::addProvides_signature(),
570 module,
571 service,
572 impl_class,
573 THREAD);
574
575 if (HAS_PENDING_EXCEPTION) {
576 LogTarget(Trace, jvmti) log;
577 LogStreamCHeap log_stream(log);
578 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
579 log_stream.cr();
580 CLEAR_PENDING_EXCEPTION;
581 return JVMTI_ERROR_INTERNAL;
582 }
583 return JVMTI_ERROR_NONE;
584 }
585
586 void
587 JvmtiExport::decode_version_values(jint version, int * major, int * minor,
588 int * micro) {
589 *major = (version & JVMTI_VERSION_MASK_MAJOR) >> JVMTI_VERSION_SHIFT_MAJOR;
590 *minor = (version & JVMTI_VERSION_MASK_MINOR) >> JVMTI_VERSION_SHIFT_MINOR;
591 *micro = (version & JVMTI_VERSION_MASK_MICRO) >> JVMTI_VERSION_SHIFT_MICRO;
592 }
593
594 void JvmtiExport::enter_primordial_phase() {
595 JvmtiEnvBase::set_phase(JVMTI_PHASE_PRIMORDIAL);
596 }
597
|
399 }
400
401 void
402 JvmtiExport::add_default_read_edges(Handle h_module, TRAPS) {
403 if (!Universe::is_module_initialized()) {
404 return; // extra safety
405 }
406 assert(!h_module.is_null(), "module should always be set");
407
408 // Invoke the transformedByAgent method
409 JavaValue result(T_VOID);
410 JavaCalls::call_static(&result,
411 SystemDictionary::module_Modules_klass(),
412 vmSymbols::transformedByAgent_name(),
413 vmSymbols::transformedByAgent_signature(),
414 h_module,
415 THREAD);
416
417 if (HAS_PENDING_EXCEPTION) {
418 LogTarget(Trace, jvmti) log;
419 LogStream log_stream(log);
420 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
421 log_stream.cr();
422 CLEAR_PENDING_EXCEPTION;
423 return;
424 }
425 }
426
427 jvmtiError
428 JvmtiExport::add_module_reads(Handle module, Handle to_module, TRAPS) {
429 if (!Universe::is_module_initialized()) {
430 return JVMTI_ERROR_NONE; // extra safety
431 }
432 assert(!module.is_null(), "module should always be set");
433 assert(!to_module.is_null(), "to_module should always be set");
434
435 // Invoke the addReads method
436 JavaValue result(T_VOID);
437 JavaCalls::call_static(&result,
438 SystemDictionary::module_Modules_klass(),
439 vmSymbols::addReads_name(),
440 vmSymbols::addReads_signature(),
441 module,
442 to_module,
443 THREAD);
444
445 if (HAS_PENDING_EXCEPTION) {
446 LogTarget(Trace, jvmti) log;
447 LogStream log_stream(log);
448 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
449 log_stream.cr();
450 CLEAR_PENDING_EXCEPTION;
451 return JVMTI_ERROR_INTERNAL;
452 }
453 return JVMTI_ERROR_NONE;
454 }
455
456 jvmtiError
457 JvmtiExport::add_module_exports(Handle module, Handle pkg_name, Handle to_module, TRAPS) {
458 if (!Universe::is_module_initialized()) {
459 return JVMTI_ERROR_NONE; // extra safety
460 }
461 assert(!module.is_null(), "module should always be set");
462 assert(!to_module.is_null(), "to_module should always be set");
463 assert(!pkg_name.is_null(), "pkg_name should always be set");
464
465 // Invoke the addExports method
466 JavaValue result(T_VOID);
467 JavaCalls::call_static(&result,
468 SystemDictionary::module_Modules_klass(),
469 vmSymbols::addExports_name(),
470 vmSymbols::addExports_signature(),
471 module,
472 pkg_name,
473 to_module,
474 THREAD);
475
476 if (HAS_PENDING_EXCEPTION) {
477 Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
478 LogTarget(Trace, jvmti) log;
479 LogStream log_stream(log);
480 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
481 log_stream.cr();
482 CLEAR_PENDING_EXCEPTION;
483 if (ex_name == vmSymbols::java_lang_IllegalArgumentException()) {
484 return JVMTI_ERROR_ILLEGAL_ARGUMENT;
485 }
486 return JVMTI_ERROR_INTERNAL;
487 }
488 return JVMTI_ERROR_NONE;
489 }
490
491 jvmtiError
492 JvmtiExport::add_module_opens(Handle module, Handle pkg_name, Handle to_module, TRAPS) {
493 if (!Universe::is_module_initialized()) {
494 return JVMTI_ERROR_NONE; // extra safety
495 }
496 assert(!module.is_null(), "module should always be set");
497 assert(!to_module.is_null(), "to_module should always be set");
498 assert(!pkg_name.is_null(), "pkg_name should always be set");
499
500 // Invoke the addOpens method
501 JavaValue result(T_VOID);
502 JavaCalls::call_static(&result,
503 SystemDictionary::module_Modules_klass(),
504 vmSymbols::addOpens_name(),
505 vmSymbols::addExports_signature(),
506 module,
507 pkg_name,
508 to_module,
509 THREAD);
510
511 if (HAS_PENDING_EXCEPTION) {
512 Symbol* ex_name = PENDING_EXCEPTION->klass()->name();
513 LogTarget(Trace, jvmti) log;
514 LogStream log_stream(log);
515 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
516 log_stream.cr();
517 CLEAR_PENDING_EXCEPTION;
518 if (ex_name == vmSymbols::java_lang_IllegalArgumentException()) {
519 return JVMTI_ERROR_ILLEGAL_ARGUMENT;
520 }
521 return JVMTI_ERROR_INTERNAL;
522 }
523 return JVMTI_ERROR_NONE;
524 }
525
526 jvmtiError
527 JvmtiExport::add_module_uses(Handle module, Handle service, TRAPS) {
528 if (!Universe::is_module_initialized()) {
529 return JVMTI_ERROR_NONE; // extra safety
530 }
531 assert(!module.is_null(), "module should always be set");
532 assert(!service.is_null(), "service should always be set");
533
534 // Invoke the addUses method
535 JavaValue result(T_VOID);
536 JavaCalls::call_static(&result,
537 SystemDictionary::module_Modules_klass(),
538 vmSymbols::addUses_name(),
539 vmSymbols::addUses_signature(),
540 module,
541 service,
542 THREAD);
543
544 if (HAS_PENDING_EXCEPTION) {
545 LogTarget(Trace, jvmti) log;
546 LogStream log_stream(log);
547 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
548 log_stream.cr();
549 CLEAR_PENDING_EXCEPTION;
550 return JVMTI_ERROR_INTERNAL;
551 }
552 return JVMTI_ERROR_NONE;
553 }
554
555 jvmtiError
556 JvmtiExport::add_module_provides(Handle module, Handle service, Handle impl_class, TRAPS) {
557 if (!Universe::is_module_initialized()) {
558 return JVMTI_ERROR_NONE; // extra safety
559 }
560 assert(!module.is_null(), "module should always be set");
561 assert(!service.is_null(), "service should always be set");
562 assert(!impl_class.is_null(), "impl_class should always be set");
563
564 // Invoke the addProvides method
565 JavaValue result(T_VOID);
566 JavaCalls::call_static(&result,
567 SystemDictionary::module_Modules_klass(),
568 vmSymbols::addProvides_name(),
569 vmSymbols::addProvides_signature(),
570 module,
571 service,
572 impl_class,
573 THREAD);
574
575 if (HAS_PENDING_EXCEPTION) {
576 LogTarget(Trace, jvmti) log;
577 LogStream log_stream(log);
578 java_lang_Throwable::print(PENDING_EXCEPTION, &log_stream);
579 log_stream.cr();
580 CLEAR_PENDING_EXCEPTION;
581 return JVMTI_ERROR_INTERNAL;
582 }
583 return JVMTI_ERROR_NONE;
584 }
585
586 void
587 JvmtiExport::decode_version_values(jint version, int * major, int * minor,
588 int * micro) {
589 *major = (version & JVMTI_VERSION_MASK_MAJOR) >> JVMTI_VERSION_SHIFT_MAJOR;
590 *minor = (version & JVMTI_VERSION_MASK_MINOR) >> JVMTI_VERSION_SHIFT_MINOR;
591 *micro = (version & JVMTI_VERSION_MASK_MICRO) >> JVMTI_VERSION_SHIFT_MICRO;
592 }
593
594 void JvmtiExport::enter_primordial_phase() {
595 JvmtiEnvBase::set_phase(JVMTI_PHASE_PRIMORDIAL);
596 }
597
|