Byte Verification is just one possible place, I guess a cache mechanism *may* be used.
Class sharing, such as http://www.ibm.com/developerworks/java/library/j-ibmjava4/ (Class OS sharing may not be the Class sharing, but I seem found something before^_^ some OS has system cache mechanism itself) 2008/11/4 Wenlong Li <[EMAIL PROTECTED]>: > Mingjian, > > Thx for your kind suggestion. I tried the verification bypass approach > on Harmony, and found it doesn't help performance (This is because > verification is not the hotspot function). > > btw, can you comment more on " some class OS sharing mechanism may > reduce the second jvm startup > time?(IBM and SUN JDK 6.0+ seem using this mechanism)", I don't fully > understand what it means. > > Thx, Wenlong > > > I changed the following verification function (in verifier_stub.cpp), > you can see the new verification is very light-weight. > > bool Class::verify(const Global_Env * env) // This is the original > implementation in Harmony > { > // fast path > if (m_state >= ST_BytecodesVerified) > return true; > > LMAutoUnlock aulock(m_lock); > if (m_state >= ST_BytecodesVerified) > return true; > > if (is_array()) { > // no need do bytecode verification for arrays > m_state = ST_BytecodesVerified; > return true; > } > > /** > * Get verifier enable status > */ > Boolean is_forced = env->verify_all; > Boolean is_strict = env->verify_strict; > Boolean is_bootstrap = m_class_loader->IsBootstrap(); > Boolean is_enabled = env->verify; > > /** > * Verify class > */ > if (is_enabled == 1 && !is_interface() > && (is_bootstrap == FALSE || is_forced == TRUE)) { > char *error; > vf_Result result = > vf_verify_class(this, is_strict, &error); > if (VF_OK != result) { > aulock.ForceUnlock(); > REPORT_FAILED_CLASS_CLASS(m_class_loader, this, > "java/lang/VerifyError", error); > vf_release_memory(error); > return false; > } > } > m_state = ST_BytecodesVerified; > > return true; > } // Class::verify > > to > bool Class::verify(const Global_Env * env) // This is the optimized > version. It could estimate the verification bypass > { > // fast path > if (m_state >= ST_BytecodesVerified) > return true; > m_state = ST_BytecodesVerified; > return true; > } > > On Tue, Nov 4, 2008 at 1:20 PM, Jin Mingjian <[EMAIL PROTECTED]> wrote: >> just a note here: >> From some dynamic language implementors, it is reported that, Sun's >> jvm may treat the bootstrape classes different. (such as, some >> verification has been bypassed?) >> >> some class OS sharing mechanism may reduce the second jvm startup >> time?(IBM and SUN JDK 6.0+ seem using this mechanism) >> >
