Return-Path: Delivered-To: apmail-harmony-commits-archive@www.apache.org Received: (qmail 74094 invoked from network); 16 Feb 2007 13:57:26 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 16 Feb 2007 13:57:26 -0000 Received: (qmail 70001 invoked by uid 500); 16 Feb 2007 13:57:34 -0000 Delivered-To: apmail-harmony-commits-archive@harmony.apache.org Received: (qmail 69981 invoked by uid 500); 16 Feb 2007 13:57:34 -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 69972 invoked by uid 99); 16 Feb 2007 13:57:34 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Feb 2007 05:57:34 -0800 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Feb 2007 05:57:26 -0800 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id CE1147141B8 for ; Fri, 16 Feb 2007 05:57:05 -0800 (PST) Message-ID: <46802.1171634225840.JavaMail.jira@brutus> Date: Fri, 16 Feb 2007 05:57:05 -0800 (PST) From: "Pavel Rebriy (JIRA)" To: commits@harmony.apache.org Subject: [jira] Updated: (HARMONY-3067) [drlvm][verifier] wide instructions In-Reply-To: <24393973.1169991049997.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/HARMONY-3067?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Rebriy updated HARMONY-3067: ---------------------------------- Attachment: Verifier-patch-A-litle-addon.patch Added patch for the last changes: * Several functions were moved to header * Variable declaration is moved to the place of usage * Code format is corrected. > [drlvm][verifier] wide instructions > ----------------------------------- > > Key: HARMONY-3067 > URL: https://issues.apache.org/jira/browse/HARMONY-3067 > Project: Harmony > Issue Type: Bug > Components: DRLVM > Reporter: Alexei Fedotov > Attachments: ManyLocals.java, Verifier-patch-A-litle-addon.patch, verifier_2.patch, verifier_3.patch, verifier_4.patch, verifier_m_i_3.patch, WideGoto.class, WideGoto.j > > > === Description === > The patch adds checks of two constraints, fixes > exception data flow issue and made arrangements > for further subroutine inlining implementation. > > While adding a number of new checks, the patch > reduces the total legth of the code by 75 lines > and reduces verifier memory usage by removing > structures which are not used. At least > removing dead data just improves readability. > === Testing === > Before the patch the test WideGoto.class hangs > on verification stage. > After the patch a verifier correctly reports: > Uncaught exception in main: > java.lang.VerifyError: (class: WideGoto, > method: main([Ljava/lang/String;)V) wide should > be followed by iload, fload, aload, lload, > dload, istore, fstore, astore, lstore, dstore, > ret or iinc > The patch passes acceptance tests. > Both patches and non-patched versions fail on > the same thread manager assertion when trying > to run eclipse. > === Changes === > Below goes a detailed list of changes: > * Added verification of wide instructions. > Added verification of the total bytecode > length. > * Added a new file for subroutine > implementation, added a reference to the file > to MSVC project. Added design of subroutine > inlining algorithm. > * Added type flags for graph nodes and an > appropriate constructor to create nodes of > different types. Added an assertion to get > instruction range only for > VF_TYPE_NODE_CODE_RANGE nodes. > * Simplified checks of a node type removing > access to a last code instruction of a > node. Removed artificial instructions for > handler nodes and start/end nodes. > * Removed service functions to work with > artificial instructions. Moved instruction > stack maps to the corresponding node maps. > Removed second parsing of method signature when > creating method IN and OUT maps. > * Two times decreased a size of bytecode > annotation structures and completely removed > offset structures for such structures. Added > annotations to vf_Context. > * Removed a dynamic vector of exception > handlers for each instruction. > * Removed debug flag macros which are no > longer used in the current version. > * Simplified edge pre-counting algorithm by > noticing that each basic block except the last > produces at least one OUT edge, so we just need > to make action about those blocks which branch > execution. Used local counters in loops instead > of one global counter to foster compiler > optimizations. > * Made vf_Graph class getters inline putting > their definitions in the header file. Added > GetEdgeCount getter. Removed unused SetNode > method (should be added CopyNode instead for > subroutine inlining). > * Added a new reporter macro to add class > and method names to any report. > * Adopted debug facilities to work with new > data structures. > * When parsing a class file or getting > exception information used local unsigned short > type instead of reused and casted int. > === Formatting === > I changed formatting of the code I touched. > * Fixed English and removed excessive "This > function ..." in documentation. Added > Doxygen style documentation using @param and > @return tags for new functions. > * Renamed "deep" -> "depth" and "begin" -> > "start" in variable and function names using > input from a focus group from my cubicle. > * Started using class library C style for > brackets and spaces in function names. > Consistently followed C style for local > variable names and functions (low caps with > underscore). Left Windows/JNI style (camel > style with the first letter in method name > uppercased) for C++ constructs. > * To my ear getting a number of nodes > doesn't imply that we are getting all nodes. So > I renamed GetNodeNumber to GetNodeCount. > * Reduced repeated long indirect pointer > chains context->a->b[i]->c caching in a local > variable. > * Reformat long lines to fit 72 symbols. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.