annotate test/runtime/6626217/Loader2.java @ 2221:0aa3b4908911 jdk7-b131

Merge
author cl
date Wed, 23 Feb 2011 15:48:46 -0800
parents 495caa35b1b5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1715
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
1 import java.io.ByteArrayInputStream;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
2 import java.io.FileInputStream;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
3 public class Loader2 extends ClassLoader {
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
4 int _recur;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
5 public void print( String msg ) {
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
6 for( int i=0; i<_recur; i++ )
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
7 System.out.print(" ");
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
8 System.out.println(">>Loader2>> "+msg);
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
9 }
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
10
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
11 protected Class findClass2(String name) throws ClassNotFoundException {
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
12 print("Fetching the implementation of "+name);
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
13 int old = _recur;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
14 try {
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
15 FileInputStream fi = new FileInputStream(name+".impl2");
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
16 byte result[] = new byte[fi.available()];
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
17 fi.read(result);
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
18
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
19 print("DefineClass1 on "+name);
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
20 _recur++;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
21 Class clazz = defineClass(name, result, 0, result.length);
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
22 _recur = old;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
23 print("Returning newly loaded class.");
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
24 return clazz;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
25 } catch (Exception e) {
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
26 _recur = old;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
27 print("Not found on disk.");
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
28 // If we caught an exception, either the class was not found or
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
29 // it was unreadable by our process.
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
30 return null;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
31 //throw new ClassNotFoundException(e.toString());
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
32 }
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
33 }
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
34
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
35 protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
36 // Attempt a disk load first
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
37 Class c = findClass2(name);
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
38 if( c == null ) {
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
39 // check if the class has already been loaded
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
40 print("Checking for prior loaded class "+name);
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
41 c = findLoadedClass(name);
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
42 print("Letting super-loader load "+name);
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
43 int old = _recur;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
44 _recur++;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
45 c = super.loadClass(name, false);
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
46 _recur=old;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
47 }
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
48 if (resolve) { print("Resolving class "+name); resolveClass(c); }
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
49 print("Returning clazz "+c.getClassLoader()+":"+name);
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
50 return c;
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
51 }
495caa35b1b5 6977952: Test: Sync missing tests from hs16.3 to hs17.x
asaha
parents:
diff changeset
52 }