提交 5a09bc87 编写于 作者: I iklam

8046070: Class Data Sharing clean up and refactoring

Summary: Cleaned up CDS to be more configurable, maintainable and extensible
Reviewed-by: dholmes, coleenp, acorn, mchung
上级 743d5ef6
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -407,19 +407,10 @@ public class URLClassLoader extends SecureClassLoader implements Closeable { ...@@ -407,19 +407,10 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
return pkg; return pkg;
} }
/* // Also called by VM to define Package for classes loaded from the CDS
* Defines a Class using the class bytes obtained from the specified // archive
* Resource. The resulting Class must be resolved before it can be private void definePackageInternal(String pkgname, Manifest man, URL url)
* used. {
*/
private Class<?> defineClass(String name, Resource res) throws IOException {
long t0 = System.nanoTime();
int i = name.lastIndexOf('.');
URL url = res.getCodeSourceURL();
if (i != -1) {
String pkgname = name.substring(0, i);
// Check if package already loaded.
Manifest man = res.getManifest();
if (getAndVerifyPackage(pkgname, man, url) == null) { if (getAndVerifyPackage(pkgname, man, url) == null) {
try { try {
if (man != null) { if (man != null) {
...@@ -438,6 +429,22 @@ public class URLClassLoader extends SecureClassLoader implements Closeable { ...@@ -438,6 +429,22 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
} }
} }
} }
/*
* Defines a Class using the class bytes obtained from the specified
* Resource. The resulting Class must be resolved before it can be
* used.
*/
private Class<?> defineClass(String name, Resource res) throws IOException {
long t0 = System.nanoTime();
int i = name.lastIndexOf('.');
URL url = res.getCodeSourceURL();
if (i != -1) {
String pkgname = name.substring(0, i);
// Check if package already loaded.
Manifest man = res.getManifest();
definePackageInternal(pkgname, man, url);
}
// Now read the class bytes and define the class // Now read the class bytes and define the class
java.nio.ByteBuffer bb = res.getByteBuffer(); java.nio.ByteBuffer bb = res.getByteBuffer();
if (bb != null) { if (bb != null) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册