зеркало из https://github.com/mozilla/pjs.git
Simpler code in Codegen.visitRegularCall to select which runtime method to call.
This commit is contained in:
Родитель
f22082da7c
Коммит
1460a34ed2
|
@ -1952,72 +1952,64 @@ public class Codegen extends Interpreter {
|
||||||
}
|
}
|
||||||
|
|
||||||
String className;
|
String className;
|
||||||
String methodNameNewObj;
|
String methodName;
|
||||||
String methodNameCall;
|
|
||||||
String callSignature;
|
String callSignature;
|
||||||
|
|
||||||
if (isSpecialCall) {
|
if (isSpecialCall) {
|
||||||
className = "org/mozilla/javascript/ScriptRuntime";
|
className = "org/mozilla/javascript/ScriptRuntime";
|
||||||
methodNameNewObj = "newObjectSpecial";
|
if (type == TokenStream.NEW) {
|
||||||
methodNameCall = "callSpecial";
|
methodName = "newObjectSpecial";
|
||||||
if (type != TokenStream.NEW) {
|
callSignature = "(Lorg/mozilla/javascript/Context;"
|
||||||
callSignature = "(Lorg/mozilla/javascript/Context;" +
|
+"Ljava/lang/Object;"
|
||||||
"Ljava/lang/Object;" +
|
+"[Ljava/lang/Object;"
|
||||||
"Ljava/lang/Object;" +
|
+"Lorg/mozilla/javascript/Scriptable;"
|
||||||
"[Ljava/lang/Object;" +
|
+")Lorg/mozilla/javascript/Scriptable;";
|
||||||
"Lorg/mozilla/javascript/Scriptable;" +
|
aload(variableObjectLocal);
|
||||||
"Lorg/mozilla/javascript/Scriptable;" +
|
} else {
|
||||||
"Ljava/lang/String;I)"; // filename & linenumber
|
methodName = "callSpecial";
|
||||||
|
callSignature = "(Lorg/mozilla/javascript/Context;"
|
||||||
|
+"Ljava/lang/Object;"
|
||||||
|
+"Ljava/lang/Object;"
|
||||||
|
+"[Ljava/lang/Object;"
|
||||||
|
+"Lorg/mozilla/javascript/Scriptable;"
|
||||||
|
+"Lorg/mozilla/javascript/Scriptable;"
|
||||||
|
+"Ljava/lang/String;I" // filename, linenumber
|
||||||
|
+")Ljava/lang/Object;";
|
||||||
aload(thisObjLocal);
|
aload(thisObjLocal);
|
||||||
aload(variableObjectLocal);
|
aload(variableObjectLocal);
|
||||||
push(itsSourceFile == null ? "" : itsSourceFile);
|
push(itsSourceFile == null ? "" : itsSourceFile);
|
||||||
push(itsLineNumber);
|
push(itsLineNumber);
|
||||||
} else {
|
|
||||||
callSignature = "(Lorg/mozilla/javascript/Context;" +
|
|
||||||
"Ljava/lang/Object;" +
|
|
||||||
"[Ljava/lang/Object;" +
|
|
||||||
"Lorg/mozilla/javascript/Scriptable;)";
|
|
||||||
aload(variableObjectLocal);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else if (isSimpleCall) {
|
||||||
methodNameNewObj = "newObject";
|
|
||||||
if (isSimpleCall) {
|
|
||||||
callSignature = "(Lorg/mozilla/javascript/Context;" +
|
|
||||||
"Ljava/lang/String;" +
|
|
||||||
"Lorg/mozilla/javascript/Scriptable;" +
|
|
||||||
"[Ljava/lang/Object;)";
|
|
||||||
methodNameCall = "callSimple";
|
|
||||||
className = "org/mozilla/javascript/optimizer/OptRuntime";
|
className = "org/mozilla/javascript/optimizer/OptRuntime";
|
||||||
|
methodName = "callSimple";
|
||||||
|
callSignature = "(Lorg/mozilla/javascript/Context;"
|
||||||
|
+"Ljava/lang/String;"
|
||||||
|
+"Lorg/mozilla/javascript/Scriptable;"
|
||||||
|
+"[Ljava/lang/Object;"
|
||||||
|
+")Ljava/lang/Object;";
|
||||||
} else {
|
} else {
|
||||||
|
className = "org/mozilla/javascript/ScriptRuntime";
|
||||||
aload(variableObjectLocal);
|
aload(variableObjectLocal);
|
||||||
if (type == TokenStream.NEW) {
|
if (type == TokenStream.NEW) {
|
||||||
callSignature = "(Lorg/mozilla/javascript/Context;" +
|
methodName = "newObject";
|
||||||
"Ljava/lang/Object;" +
|
callSignature = "(Lorg/mozilla/javascript/Context;"
|
||||||
"[Ljava/lang/Object;" +
|
+"Ljava/lang/Object;"
|
||||||
"Lorg/mozilla/javascript/Scriptable;)";
|
+"[Ljava/lang/Object;"
|
||||||
|
+"Lorg/mozilla/javascript/Scriptable;"
|
||||||
|
+")Lorg/mozilla/javascript/Scriptable;";
|
||||||
} else {
|
} else {
|
||||||
callSignature = "(Lorg/mozilla/javascript/Context;" +
|
methodName = "call";
|
||||||
"Ljava/lang/Object;" +
|
callSignature = "(Lorg/mozilla/javascript/Context;"
|
||||||
"Ljava/lang/Object;" +
|
+"Ljava/lang/Object;"
|
||||||
"[Ljava/lang/Object;" +
|
+"Ljava/lang/Object;"
|
||||||
"Lorg/mozilla/javascript/Scriptable;)";
|
+"[Ljava/lang/Object;"
|
||||||
}
|
+"Lorg/mozilla/javascript/Scriptable;"
|
||||||
methodNameCall = "call";
|
+")Ljava/lang/Object;";
|
||||||
className = "org/mozilla/javascript/ScriptRuntime";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == TokenStream.NEW) {
|
addStaticInvoke(className, methodName, callSignature);
|
||||||
addStaticInvoke(className,
|
|
||||||
methodNameNewObj,
|
|
||||||
callSignature
|
|
||||||
+"Lorg/mozilla/javascript/Scriptable;");
|
|
||||||
} else {
|
|
||||||
addStaticInvoke(className,
|
|
||||||
methodNameCall,
|
|
||||||
callSignature
|
|
||||||
+"Ljava/lang/Object;");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void visitStatement(Node node)
|
private void visitStatement(Node node)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче