зеркало из https://github.com/mozilla/pjs.git
d438da5792
Re: [Rhino in Java] compiling .js to class file gives "bad local" error Date: Wed, 31 Jan 2001 09:41:45 +0100 From: "Sylvia E. Schleutermann" <ses@h-m-s.com> Organization: .hms Health Management Systems Newsgroups: netscape.public.mozilla.jseng References: 1 , 2 I have found out some more. Looking really quickly over the JVM specs, I found that indeed the astore-command requires that the variables index be below 128. However, the book also said that if more index space is needed, a "wide" command can be used to be able to address up to 65xxx variables. Question: is there a possibility to integrate this "wide"-command into the class compiler? Some option, that can be set? Or am I on the wrong tracks? Please help, since I want to avoid spreading the script over many classes to avoid the size limitation. Cheers, Sylvia Sylvia E. Schleutermann <ses@h-m-s.com> wrote in message news:956sv9$9g53@secnews.netscape.com... > I have found out that it is definitely the number of variables. > I removed all variables and then the script compiled into class files > with one base class and inner classes for each function in the script. > > What is the limitation exactly, i.e. does anyone know how many (global) > variables > I can use? Or is there some other kind of work around? > > Cheers, Sylvia > > > Sylvia E. Schleutermann <ses@h-m-s.com> wrote in message > news:956qtv$6kh3@secnews.netscape.com... > > Hello, > > when compiling a *.js file to class file, I get a "bad local" runtime > > exception. > > Stepping through the source, the following happens in reverse order: > > > > Codegen.xstore (75, 58, 209) > > -> in the switch - default case, there is a comparison > > for local (=209), which is compared to Byte.MAX_VALUE (=127). > > When greater, the above exception is thrown. > > > > Codegen.astore (209) > > -> calls Codegen.xstore (ByteCode.ASTORE_0, ByteCode.ASTORE, 209) > > > > Codegen.generatePrologue (<context>, <tree>, true, -1) // -1 is > > directParameterCount > > -> sets itsZeroArgArray = getNewWordLocal(); // here, the 209 is > > produced > > -> calls astore (itsZeroArgArray) > > > > From what I can read from the source code, the 209 seems to be a counter > for > > "locals", perhaps > > local variables?? The function that is being compiled does initialize many > > variables - would it help > > to move the initialize code out of the function into separate code blocks? > > > > The function looks like this > > > > function rule_Disclaimer() > > { > > try { VAR1 = <init code 1>;} catch (exception) { VAR1 = <default init > > code 1>; } > > try { VAR2 = <init code 2>;} catch (exception) { VAR2 = <default init > > code 2>;} > > ... (about 58 such variables) > > > > var cond = true; > > > > < rest of code> > > } > > > > When I compile the script for interpreted mode, all works well. The > > variables VAR1 to VAR58 are to be global > > variables (global to the whole script). > > > > I appreciate any help! Thanks, Sylvia > > > > > > |
||
---|---|---|
.. | ||
examples | ||
macbuild | ||
org/mozilla | ||
src/org/mozilla | ||
toolsrc/org/mozilla/javascript/tools | ||
Makefile | ||
README.html | ||
apiClasses.properties | ||
build.xml | ||
built-on-date | ||
manifest |
README.html
<html> <!-- - The contents of this file are subject to the Netscape Public - License Version 1.1 (the "License"); you may not use this file - except in compliance with the License. You may obtain a copy of - the License at http://www.mozilla.org/NPL/ - - Software distributed under the License is distributed on an "AS - IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - implied. See the License for the specific language governing - rights and limitations under the License. - - The Original Code is Rhino code, released - May 6, 1999. - - The Initial Developer of the Original Code is Netscape - Communications Corporation. Portions created by Netscape are - Copyright (C) 1998-1999 Netscape Communications Corporation. All - Rights Reserved. - - Contributor(s): - Norris Boyd - - Alternatively, the contents of this file may be used under the - terms of the GNU Public License (the "GPL"), in which case the - provisions of the GPL are applicable instead of those above. - If you wish to allow use of your version of this file only - under the terms of the GPL and not to allow others to use your - version of this file under the NPL, indicate your decision by - deleting the provisions above and replace them with the notice - and other provisions required by the GPL. If you do not delete - the provisions above, a recipient may use your version of this - file under either the NPL or the GPL. --> <body> <h1> <span CLASS=LXRSHORTDESC> Rhino: JavaScript in Java<p> </span> </h1> <span CLASS=LXRLONGDESC> Rhino is an implementation of JavaScript in Java. Documentation can be found <a href="http://www.mozilla.org/js/rhino/rhino.html">here</a>. </span> </body> </html>