--- a/anonk.patch Fri Jun 06 19:08:22 2008 -0700
+++ b/anonk.patch Tue Jul 15 00:03:41 2008 -0700
@@ -13,7 +13,7 @@ diff --git a/src/share/vm/classfile/clas
diff --git a/src/share/vm/classfile/classFileParser.cpp b/src/share/vm/classfile/classFileParser.cpp
--- a/src/share/vm/classfile/classFileParser.cpp
+++ b/src/share/vm/classfile/classFileParser.cpp
-@@ -167,9 +167,21 @@ void ClassFileParser::parse_constant_poo
+@@ -168,9 +168,21 @@ void ClassFileParser::parse_constant_poo
// Got utf8 string, guarantee utf8_length+1 bytes, set stream position forward.
cfs->guarantee_more(utf8_length+1, CHECK); // utf8 string, tag/access_flags
cfs->skip_u1_fast(utf8_length);
@@ -35,7 +35,7 @@ diff --git a/src/share/vm/classfile/clas
}
unsigned int hash;
-@@ -300,7 +312,13 @@ constantPoolHandle ClassFileParser::pars
+@@ -301,7 +313,13 @@ constantPoolHandle ClassFileParser::pars
cp->tag_at(class_index).is_utf8(),
"Invalid constant pool index %u in class file %s",
class_index, CHECK_(nullHandle));
@@ -50,7 +50,7 @@ diff --git a/src/share/vm/classfile/clas
}
break;
case JVM_CONSTANT_UnresolvedString :
-@@ -325,16 +343,45 @@ constantPoolHandle ClassFileParser::pars
+@@ -326,16 +344,45 @@ constantPoolHandle ClassFileParser::pars
} // end of switch
} // end of for
@@ -96,7 +96,7 @@ diff --git a/src/share/vm/classfile/clas
verify_legal_class_name(class_name, CHECK_(nullHandle));
break;
}
-@@ -377,6 +424,71 @@ constantPoolHandle ClassFileParser::pars
+@@ -378,6 +425,71 @@ constantPoolHandle ClassFileParser::pars
}
@@ -168,7 +168,7 @@ diff --git a/src/share/vm/classfile/clas
class NameSigHash: public ResourceObj {
public:
symbolOop _name; // name
-@@ -447,25 +559,32 @@ objArrayHandle ClassFileParser::parse_in
+@@ -448,25 +560,32 @@ objArrayHandle ClassFileParser::parse_in
int index;
for (index = 0; index < length; index++) {
u2 interface_index = cfs->get_u2(CHECK_(nullHandle));
@@ -216,7 +216,7 @@ diff --git a/src/share/vm/classfile/clas
if (!Klass::cast(interf())->is_interface()) {
THROW_MSG_(vmSymbols::java_lang_IncompatibleClassChangeError(), "Implementing class", nullHandle);
-@@ -876,8 +995,7 @@ typeArrayHandle ClassFileParser::parse_e
+@@ -877,8 +996,7 @@ typeArrayHandle ClassFileParser::parse_e
"Illegal exception table handler in class file %s", CHECK_(nullHandle));
if (catch_type_index != 0) {
guarantee_property(valid_cp_range(catch_type_index, cp->length()) &&
@@ -226,7 +226,7 @@ diff --git a/src/share/vm/classfile/clas
"Catch type in exception table has bad constant type in class file %s", CHECK_(nullHandle));
}
}
-@@ -1116,7 +1234,7 @@ void ClassFileParser::parse_type_array(u
+@@ -1117,7 +1235,7 @@ void ClassFileParser::parse_type_array(u
} else if (tag == ITEM_Object) {
u2 class_index = u2_array[i2++] = cfs->get_u2(CHECK);
guarantee_property(valid_cp_range(class_index, cp->length()) &&
@@ -235,7 +235,7 @@ diff --git a/src/share/vm/classfile/clas
"Bad class index %u in StackMap in class file %s",
class_index, CHECK);
} else if (tag == ITEM_Uninitialized) {
-@@ -2339,6 +2457,7 @@ instanceKlassHandle ClassFileParser::par
+@@ -2349,6 +2467,7 @@ instanceKlassHandle ClassFileParser::par
instanceKlassHandle ClassFileParser::parseClassFile(symbolHandle name,
Handle class_loader,
Handle protection_domain,
@@ -243,7 +243,7 @@ diff --git a/src/share/vm/classfile/clas
symbolHandle& parsed_name,
TRAPS) {
// So that JVMTI can cache class file in the state before retransformable agents
-@@ -2370,6 +2489,7 @@ instanceKlassHandle ClassFileParser::par
+@@ -2380,6 +2499,7 @@ instanceKlassHandle ClassFileParser::par
}
}
@@ -251,7 +251,7 @@ diff --git a/src/share/vm/classfile/clas
instanceKlassHandle nullHandle;
-@@ -2500,14 +2620,22 @@ instanceKlassHandle ClassFileParser::par
+@@ -2510,14 +2630,22 @@ instanceKlassHandle ClassFileParser::par
CHECK_(nullHandle));
} else {
check_property(valid_cp_range(super_class_index, cp_size) &&
@@ -276,7 +276,7 @@ diff --git a/src/share/vm/classfile/clas
"Bad superclass name in class file %s", CHECK_(nullHandle));
}
}
-@@ -2547,7 +2675,7 @@ instanceKlassHandle ClassFileParser::par
+@@ -2557,7 +2685,7 @@ instanceKlassHandle ClassFileParser::par
objArrayHandle methods_default_annotations(THREAD, methods_default_annotations_oop);
// We check super class after class file is parsed and format is checked
@@ -285,7 +285,7 @@ diff --git a/src/share/vm/classfile/clas
symbolHandle sk (THREAD, cp->klass_name_at(super_class_index));
if (access_flags.is_interface()) {
// Before attempting to resolve the superclass, check for class format
-@@ -2564,6 +2692,9 @@ instanceKlassHandle ClassFileParser::par
+@@ -2574,6 +2702,9 @@ instanceKlassHandle ClassFileParser::par
CHECK_(nullHandle));
KlassHandle kh (THREAD, k);
super_klass = instanceKlassHandle(THREAD, kh());
@@ -295,7 +295,7 @@ diff --git a/src/share/vm/classfile/clas
if (super_klass->is_interface()) {
ResourceMark rm(THREAD);
Exceptions::fthrow(
-@@ -2973,6 +3104,7 @@ instanceKlassHandle ClassFileParser::par
+@@ -3000,6 +3131,7 @@ instanceKlassHandle ClassFileParser::par
this_klass->set_method_ordering(method_ordering());
this_klass->set_initial_method_idnum(methods->length());
this_klass->set_name(cp->klass_name_at(this_class_index));
@@ -357,7 +357,7 @@ diff --git a/src/share/vm/classfile/syst
diff --git a/src/share/vm/classfile/systemDictionary.cpp b/src/share/vm/classfile/systemDictionary.cpp
--- a/src/share/vm/classfile/systemDictionary.cpp
+++ b/src/share/vm/classfile/systemDictionary.cpp
-@@ -949,6 +949,8 @@ klassOop SystemDictionary::parse_stream(
+@@ -937,6 +937,8 @@ klassOop SystemDictionary::parse_stream(
Handle class_loader,
Handle protection_domain,
ClassFileStream* st,
@@ -366,7 +366,7 @@ diff --git a/src/share/vm/classfile/syst
TRAPS) {
symbolHandle parsed_name;
-@@ -965,9 +967,9 @@ klassOop SystemDictionary::parse_stream(
+@@ -953,9 +955,9 @@ klassOop SystemDictionary::parse_stream(
instanceKlassHandle k = ClassFileParser(st).parseClassFile(class_name,
class_loader,
protection_domain,
@@ -377,7 +377,7 @@ diff --git a/src/share/vm/classfile/syst
// We don't redefine the class, so we just need to clean up whether there
// was an error or not (don't want to modify any system dictionary
-@@ -982,6 +984,29 @@ klassOop SystemDictionary::parse_stream(
+@@ -970,6 +972,29 @@ klassOop SystemDictionary::parse_stream(
MutexLocker mu(SystemDictionary_lock, THREAD);
placeholders()->find_and_remove(p_index, p_hash, parsed_name, class_loader, THREAD);
SystemDictionary_lock->notify_all();
@@ -410,7 +410,7 @@ diff --git a/src/share/vm/classfile/syst
diff --git a/src/share/vm/classfile/systemDictionary.hpp b/src/share/vm/classfile/systemDictionary.hpp
--- a/src/share/vm/classfile/systemDictionary.hpp
+++ b/src/share/vm/classfile/systemDictionary.hpp
-@@ -107,6 +107,16 @@ public:
+@@ -228,6 +228,16 @@ public:
Handle class_loader,
Handle protection_domain,
ClassFileStream* st,
@@ -427,9 +427,9 @@ diff --git a/src/share/vm/classfile/syst
TRAPS);
// Resolve from stream (called by jni_DefineClass and JVM_DefineClass)
-@@ -315,9 +325,13 @@ public:
- static klassOop int_klass() { return check_klass(_int_klass); }
- static klassOop long_klass() { return check_klass(_long_klass); }
+@@ -388,9 +398,13 @@ public:
+ // Local definition for direct access to the private array:
+ #define WK_KLASS(name) _well_known_klasses[SystemDictionary::WK_KLASS_ENUM_NAME(name)]
+ // Return Integer for T_INT, etc.
+ // Return NULL if t is not a boxable primitive type, such as T_OBJECT or T_ILLEGAL.
@@ -462,7 +462,7 @@ diff --git a/src/share/vm/oops/constantP
diff --git a/src/share/vm/oops/constantPoolKlass.cpp b/src/share/vm/oops/constantPoolKlass.cpp
--- a/src/share/vm/oops/constantPoolKlass.cpp
+++ b/src/share/vm/oops/constantPoolKlass.cpp
-@@ -380,6 +380,7 @@ void constantPoolKlass::oop_verify_on(oo
+@@ -381,6 +381,7 @@ void constantPoolKlass::oop_verify_on(oo
guarantee((*base)->is_symbol() || (*base)->is_instance(),
"should be symbol or instance");
}
@@ -522,7 +522,7 @@ diff --git a/src/share/vm/oops/constantP
diff --git a/src/share/vm/oops/constantPoolOop.hpp b/src/share/vm/oops/constantPoolOop.hpp
--- a/src/share/vm/oops/constantPoolOop.hpp
+++ b/src/share/vm/oops/constantPoolOop.hpp
-@@ -268,7 +268,14 @@ class constantPoolOopDesc : public array
+@@ -269,7 +269,14 @@ class constantPoolOopDesc : public oopDe
oop string_at(int which, TRAPS) {
constantPoolHandle h_this(THREAD, this);
@@ -538,7 +538,7 @@ diff --git a/src/share/vm/oops/constantP
}
// only called when we are sure a string entry is already resolved (via an
-@@ -292,6 +299,7 @@ class constantPoolOopDesc : public array
+@@ -293,6 +300,7 @@ class constantPoolOopDesc : public oopDe
// UTF8 char* representation was chosen to avoid conversion of
// java_lang_Strings at resolved entries into symbolOops
// or vice versa.
@@ -546,7 +546,7 @@ diff --git a/src/share/vm/oops/constantP
char* string_at_noresolve(int which);
jint name_and_type_at(int which) {
-@@ -395,7 +403,7 @@ class constantPoolOopDesc : public array
+@@ -404,7 +412,7 @@ class constantPoolOopDesc : public oopDe
// Implementation of methods that needs an exposed 'this' pointer, in order to
// handle GC while executing the method
static klassOop klass_at_impl(constantPoolHandle this_oop, int which, TRAPS);
@@ -567,7 +567,7 @@ diff --git a/src/share/vm/oops/instanceK
// Class signers.
objArrayOop _signers;
// Name of source file containing this klass, NULL if not specified.
-@@ -370,6 +372,11 @@ class instanceKlass: public Klass {
+@@ -375,6 +377,11 @@ class instanceKlass: public Klass {
oop protection_domain() { return _protection_domain; }
void set_protection_domain(oop pd) { oop_store((oop*) &_protection_domain, pd); }
@@ -579,7 +579,7 @@ diff --git a/src/share/vm/oops/instanceK
// signers
objArrayOop signers() const { return _signers; }
void set_signers(objArrayOop s) { oop_store((oop*) &_signers, oop(s)); }
-@@ -685,6 +692,7 @@ private:
+@@ -701,6 +708,7 @@ private:
oop* adr_constants() const { return (oop*)&this->_constants;}
oop* adr_class_loader() const { return (oop*)&this->_class_loader;}
oop* adr_protection_domain() const { return (oop*)&this->_protection_domain;}
@@ -641,11 +641,11 @@ diff --git a/src/share/vm/oops/instanceK
+ }
+
oop* sg_addr = ik->adr_signers();
- if (PSScavenge::should_scavenge(*sg_addr)) {
+ if (PSScavenge::should_scavenge(sg_addr)) {
pm->claim_or_forward_breadth(sg_addr);
@@ -316,6 +327,11 @@ void instanceKlassKlass::oop_push_conten
oop* pd_addr = ik->adr_protection_domain();
- if (PSScavenge::should_scavenge(*pd_addr)) {
+ if (PSScavenge::should_scavenge(pd_addr)) {
pm->claim_or_forward_depth(pd_addr);
+ }
+
@@ -671,7 +671,7 @@ diff --git a/src/share/vm/oops/instanceK
st->print(" - signers: "); ik->signers()->print_value_on(st); st->cr();
if (ik->source_file_name() != NULL) {
st->print(" - source file: ");
-@@ -624,7 +642,7 @@ void instanceKlassKlass::oop_verify_on(o
+@@ -626,7 +644,7 @@ void instanceKlassKlass::oop_verify_on(o
ik->_verify_count = Universe::verify_count();
#endif
// Verify that klass is present in SystemDictionary
@@ -680,7 +680,7 @@ diff --git a/src/share/vm/oops/instanceK
symbolHandle h_name (thread, ik->name());
Handle h_loader (thread, ik->class_loader());
Handle h_obj(thread, obj);
-@@ -762,6 +780,9 @@ void instanceKlassKlass::oop_verify_on(o
+@@ -764,6 +782,9 @@ void instanceKlassKlass::oop_verify_on(o
if (ik->protection_domain() != NULL) {
guarantee(ik->protection_domain()->is_oop(), "should be oop");
}
@@ -758,7 +758,7 @@ diff --git a/src/share/vm/prims/unsafe.c
diff --git a/src/share/vm/prims/unsafe.cpp b/src/share/vm/prims/unsafe.cpp
--- a/src/share/vm/prims/unsafe.cpp
+++ b/src/share/vm/prims/unsafe.cpp
-@@ -792,6 +792,74 @@ UNSAFE_ENTRY(jclass, Unsafe_DefineClass1
+@@ -837,6 +837,74 @@ UNSAFE_ENTRY(jclass, Unsafe_DefineClass1
}
UNSAFE_END
@@ -833,7 +833,7 @@ diff --git a/src/share/vm/prims/unsafe.c
UNSAFE_ENTRY(void, Unsafe_MonitorEnter(JNIEnv *env, jobject unsafe, jobject jobj))
UnsafeWrapper("Unsafe_MonitorEnter");
-@@ -1246,6 +1314,9 @@ JNINativeMethod memcopy_methods_15[] = {
+@@ -1291,6 +1359,9 @@ JNINativeMethod memcopy_methods_15[] = {
{CC"copyMemory", CC"("ADR ADR"J)V", FN_PTR(Unsafe_CopyMemory)}
};
@@ -843,7 +843,7 @@ diff --git a/src/share/vm/prims/unsafe.c
#undef CC
#undef FN_PTR
-@@ -1308,6 +1379,15 @@ JVM_ENTRY(void, JVM_RegisterUnsafeMethod
+@@ -1353,6 +1424,15 @@ JVM_ENTRY(void, JVM_RegisterUnsafeMethod
}
}
}