annotate test/runtime/6626217/Loader2.java @ 12986:1b422ef5288a

8025728: Missing volatile specifier for field G1AllocRegion::_alloc_region Summary: The field G1AllocRegion::_alloc_region needs to be declared volatile as it is used with that intention. Otherwise the compiler may generate the code that reloads the value which might have changed in the meantime, leading to spurious crashes. Reviewed-by: iveresov, simonis, tschatzl Contributed-by: Axel Siebenborn <axel.siebenborn@sap.com>
author tschatzl
date Wed, 23 Oct 2013 10:23:06 +0200
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 }