Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 38702 invoked from network); 4 Dec 2007 11:16:10 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 4 Dec 2007 11:16:10 -0000 Received: (qmail 11372 invoked by uid 500); 4 Dec 2007 11:15:56 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 11293 invoked by uid 500); 4 Dec 2007 11:15:55 -0000 Mailing-List: contact commits-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list commits@harmony.apache.org Received: (qmail 11083 invoked by uid 99); 4 Dec 2007 11:15:55 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 04 Dec 2007 03:15:54 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 04 Dec 2007 11:16:03 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id E178D1A9832; Tue, 4 Dec 2007 03:15:41 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r600879 - in /harmony/enhanced/drlvm/trunk/vm: include/open/ jitrino/src/optimizer/ jitrino/src/vm/ vmcore/src/class_support/ vmcore/src/kernel_classes/javasrc/org/apache/harmony/drlvm/ Date: Tue, 04 Dec 2007 11:15:39 -0000 To: commits@harmony.apache.org From: varlax@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071204111541.E178D1A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: varlax Date: Tue Dec 4 03:15:28 2007 New Revision: 600879 URL: http://svn.apache.org/viewvc?rev=600879&view=rev Log: Applied HARMONY-5197 [drlvm][jit] stress tests org.apache.harmony.test.stress.stress.gc.frag.FragmentationFinalizer crashes Modified: harmony/enhanced/drlvm/trunk/vm/include/open/vm.h harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/helper_inliner.cpp harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/inliner.cpp harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.cpp harmony/enhanced/drlvm/trunk/vm/jitrino/src/vm/VMInterface.h harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/C_Interface.cpp harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/drlvm/VMHelper.java Modified: harmony/enhanced/drlvm/trunk/vm/include/open/vm.h URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/include/open/vm.h?rev=600879&r1=600878&r2=600879&view=diff ============================================================================== --- harmony/enhanced/drlvm/trunk/vm/include/open/vm.h (original) +++ harmony/enhanced/drlvm/trunk/vm/include/open/vm.h Tue Dec 4 03:15:28 2007 @@ -85,13 +85,12 @@ VMEXPORT Class_Handle get_system_string_class(); /** - * Loads a class of a given name. + * Find already loaded class of a given name. * - * @return NULL if a class cannot be loaded. + * @return NULL if a class is not loaded. */ - VMEXPORT Class_Handle -class_load_class_by_name_using_bootstrap_class_loader(const char *name); +class_lookup_class_by_name_using_bootstrap_class_loader(const char *name); /** * The following three functions will be eventually renamed to Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/helper_inliner.cpp URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/helper_inliner.cpp?rev=600879&r1=600878&r2=600879&view=diff ============================================================================== --- harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/helper_inliner.cpp (original) +++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/helper_inliner.cpp Tue Dec 4 03:15:28 2007 @@ -143,7 +143,8 @@ HelperInlinerFlags& flags = action->getFlags(); if (flags.pragmaInlineType== NULL) { - flags.pragmaInlineType= cc->getVMCompilationInterface()->resolveClassUsingBootstrapClassloader(PRAGMA_INLINE_TYPE_NAME); + // Avoid class resolution during compilation. VMMagic package should be loaded & resolved at start up. + flags.pragmaInlineType= cc->getVMCompilationInterface()->findClassUsingBootstrapClassloader(PRAGMA_INLINE_TYPE_NAME); if (flags.pragmaInlineType == NULL) { Log::out()<<"Helpers inline pass failed! class not found: "<getBoolArg("sync_optimistic", false) ? argSource->getBoolArg("sync_optcatch", true) : false; - inlinePragma = irm.getCompilationInterface().resolveClassUsingBootstrapClassloader(PRAGMA_INLINE_TYPE_NAME); + // Avoid class resolution during compilation. VMMagic package should be loaded & resolved at start up. + inlinePragma = irm.getCompilationInterface().findClassUsingBootstrapClassloader(PRAGMA_INLINE_TYPE_NAME); } int32 @@ -911,7 +912,7 @@ call = ((Inst*)callNode->getLastInst())->asMethodCallInst(); assert(call != NULL); methodDesc = call->getMethodDesc(); - bool isPragmaInline = methodDesc->hasAnnotation(inlinePragma);; + bool isPragmaInline = inlinePragma != NULL && methodDesc->hasAnnotation(inlinePragma);; // If candidate would cause top level method to exceed size threshold, throw away. @@ -955,7 +956,7 @@ MethodDesc *methodDesc = call->getMethodDesc(); IRManager* inlinedIRM = new (_tmpMM) IRManager(_tmpMM, _toplevelIRM, *methodDesc, NULL); // Augment inline tree - bool forceInline = methodDesc->hasAnnotation(inlinePragma); + bool forceInline = inlinePragma != NULL && methodDesc->hasAnnotation(inlinePragma); InlineNode *inlineNode = new (_tmpMM) InlineNode(*inlinedIRM, call, call->getNode(), forceInline); inlineCC.setHIRManager(inlinedIRM); @@ -993,7 +994,7 @@ MethodDesc* methodDesc = call->getMethodDesc(); Log::out() << "Considering inlining instruction I" << (int)call->getId() << ::std::endl; - if (methodDesc->hasAnnotation(inlinePragma)) { + if (inlinePragma != NULL && methodDesc->hasAnnotation(inlinePragma)) { assert(!methodDesc->isSynchronized()); //not tested! if (Log::isEnabled()) { Log::out()<<"Found Inline pragma, adding to the queue:";call->print(Log::out());Log::out()<string_pool.lookup(name); - Class *clss = env->bootstrap_class_loader->LoadVerifyAndPrepareClass(env, n); + Class *clss = env->bootstrap_class_loader->LookupClass(n); return (Class_Handle)clss; } Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/drlvm/VMHelper.java URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/drlvm/VMHelper.java?rev=600879&r1=600878&r2=600879&view=diff ============================================================================== --- harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/drlvm/VMHelper.java (original) +++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/org/apache/harmony/drlvm/VMHelper.java Tue Dec 4 03:15:28 2007 @@ -54,6 +54,12 @@ public static final int OBJ_INFO_OFFSET = 4; + // Force loading of magic classes. + static { + try { + Class.forName(Inline.class.getName(), true, null); + } catch (ClassNotFoundException e) {} + }