projects
/
org.ibex.core.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
c9061d8
)
2003/07/07 01:50:03
author
brian
<brian@xwt.org>
Fri, 30 Jan 2004 07:03:29 +0000
(07:03 +0000)
committer
brian
<brian@xwt.org>
Fri, 30 Jan 2004 07:03:29 +0000
(07:03 +0000)
darcs-hash:
20040130070329
-aa32f-
dd00bed603eb776a0e742951d4e14e4e83ee6f2b
.gz
src/org/xwt/js/CompiledFunctionImpl.java
patch
|
blob
|
history
diff --git
a/src/org/xwt/js/CompiledFunctionImpl.java
b/src/org/xwt/js/CompiledFunctionImpl.java
index
217a613
..
8f063b2
100644
(file)
--- a/
src/org/xwt/js/CompiledFunctionImpl.java
+++ b/
src/org/xwt/js/CompiledFunctionImpl.java
@@
-37,7
+37,12
@@
class CompiledFunctionImpl extends JSCallable implements ByteCodes, Tokens {
private CompiledFunctionImpl cloneWithNewParentScope(JS.Scope s) throws IOException {
CompiledFunctionImpl ret = new JS.CompiledFunction(sourceName, firstLine, null, s);
private CompiledFunctionImpl cloneWithNewParentScope(JS.Scope s) throws IOException {
CompiledFunctionImpl ret = new JS.CompiledFunction(sourceName, firstLine, null, s);
- ret.paste(this);
+ // Reuse the same op, arg, line, and size variables for the new "instance" of the function
+ // NOTE: Neither *this* function nor the new function should be modified after this call
+ ret.op = this.op;
+ ret.arg = this.arg;
+ ret.line = this.line;
+ ret.size = this.size;
return ret;
}
return ret;
}
@@
-63,7
+68,7
@@
class CompiledFunctionImpl extends JSCallable implements ByteCodes, Tokens {
try {
cx.currentCompiledFunction = (CompiledFunction)this;
int size = cx.stack.size();
try {
cx.currentCompiledFunction = (CompiledFunction)this;
int size = cx.stack.size();
- cx.stack.push(new CallMarker());
+ cx.stack.push(callMarker);
cx.stack.push(args);
eval(scope);
Object ret = cx.stack.pop();
cx.stack.push(args);
eval(scope);
Object ret = cx.stack.pop();
@@
-454,7
+459,7
@@
class CompiledFunctionImpl extends JSCallable implements ByteCodes, Tokens {
// FunctionScope /////////////////////////////////////////////////////////////////
// FunctionScope /////////////////////////////////////////////////////////////////
- private class FunctionScope extends JS.Scope {
+ private static class FunctionScope extends JS.Scope {
String sourceName;
public FunctionScope(String sourceName, Scope parentScope) { super(parentScope); this.sourceName = sourceName; }
public String getSourceName() { return sourceName; }
String sourceName;
public FunctionScope(String sourceName, Scope parentScope) { super(parentScope); this.sourceName = sourceName; }
public String getSourceName() { return sourceName; }
@@
-464,6
+469,7
@@
class CompiledFunctionImpl extends JSCallable implements ByteCodes, Tokens {
// Markers //////////////////////////////////////////////////////////////////////
public static class CallMarker { public CallMarker() { } }
// Markers //////////////////////////////////////////////////////////////////////
public static class CallMarker { public CallMarker() { } }
+ private static CallMarker callMarker = new CallMarker();
public static class CatchMarker { public CatchMarker() { } }
private static CatchMarker catchMarker = new CatchMarker();
public static class CatchMarker { public CatchMarker() { } }
private static CatchMarker catchMarker = new CatchMarker();