mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-19 10:34:38 +02:00
8142968: Module System implementation
Initial integration of JEP 200, JEP 260, JEP 261, and JEP 282 Co-authored-by: Alex Buckley <alex.buckley@oracle.com> Co-authored-by: Jonathan Gibbons <jonathan.gibbons@oracle.com> Co-authored-by: Karen Kinnear <karen.kinnear@oracle.com> Co-authored-by: Mandy Chung <mandy.chung@oracle.com> Co-authored-by: Mark Reinhold <mark.reinhold@oracle.com> Co-authored-by: Harold Seigel <harold.seigel@oracle.com> Co-authored-by: Lois Foltan <lois.foltan@oracle.com> Co-authored-by: Calvin Cheung <calvin.cheung@oracle.com> Co-authored-by: Christian Tornqvist <christian.tornqvist@oracle.com> Co-authored-by: Erik Joelsson <erik.joelsson@oracle.com> Co-authored-by: George Triantafillou <george.triantafillou@oracle.com> Co-authored-by: Igor Ignatyev <igor.ignatyev@oracle.com> Co-authored-by: Ioi Lam <ioi.lam@oracle.com> Co-authored-by: James Laskey <james.laskey@oracle.com> Co-authored-by: Jean-Francois Denise <jean-francois.denise@oracle.com> Co-authored-by: Jiangli Zhou <jiangli.zhou@oracle.com> Co-authored-by: Markus Gronlund <markus.gronlund@oracle.com> Co-authored-by: Serguei Spitsyn <serguei.spitsyn@oracle.com> Co-authored-by: Staffan Larsen <staffan.larsen@oracle.com> Co-authored-by: Sundararajan Athijegannathan <sundararajan.athijegannathan@oracle.com> Reviewed-by: acorn, ccheung, coleenp, ctornqvi, dholmes, dsimms, gtriantafill, iklam, jiangli, mgronlun, mseledtsov, cjplummer, sspitsyn, stefank, twisti, hseigel, lfoltan, alanb, mchung, dfazunen
This commit is contained in:
parent
007b0fa3db
commit
f30fc1c88b
297 changed files with 15848 additions and 2302 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -114,6 +114,17 @@ JvmtiEnvBase::initialize() {
|
|||
}
|
||||
}
|
||||
|
||||
jvmtiPhase
|
||||
JvmtiEnvBase::phase() {
|
||||
// For the JVMTI environments possessed the can_generate_early_vmstart:
|
||||
// replace JVMTI_PHASE_PRIMORDIAL with JVMTI_PHASE_START
|
||||
if (_phase == JVMTI_PHASE_PRIMORDIAL &&
|
||||
JvmtiExport::early_vmstart_recorded() &&
|
||||
early_vmstart_env()) {
|
||||
return JVMTI_PHASE_START;
|
||||
}
|
||||
return _phase; // Normal case
|
||||
}
|
||||
|
||||
bool
|
||||
JvmtiEnvBase::is_valid() {
|
||||
|
@ -1475,3 +1486,35 @@ JvmtiMonitorClosure::do_monitor(ObjectMonitor* mon) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
GrowableArray<jobject>* JvmtiModuleClosure::_tbl = NULL;
|
||||
|
||||
jvmtiError
|
||||
JvmtiModuleClosure::get_all_modules(JvmtiEnv* env, jint* module_count_ptr, jobject** modules_ptr) {
|
||||
ResourceMark rm;
|
||||
MutexLocker ml(Module_lock);
|
||||
|
||||
_tbl = new GrowableArray<jobject>(77);
|
||||
if (_tbl == NULL) {
|
||||
return JVMTI_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
// Iterate over all the modules loaded to the system.
|
||||
ClassLoaderDataGraph::modules_do(&do_module);
|
||||
|
||||
jint len = _tbl->length();
|
||||
guarantee(len > 0, "at least one module must be present");
|
||||
|
||||
jobject* array = (jobject*)env->jvmtiMalloc((jlong)(len * sizeof(jobject)));
|
||||
if (array == NULL) {
|
||||
return JVMTI_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
for (jint idx = 0; idx < len; idx++) {
|
||||
array[idx] = _tbl->at(idx);
|
||||
}
|
||||
_tbl = NULL;
|
||||
*modules_ptr = array;
|
||||
*module_count_ptr = len;
|
||||
return JVMTI_ERROR_NONE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue