You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by yi...@apache.org on 2020/04/10 13:05:22 UTC
[royale-compiler] branch issue_143 updated: Cache conditionalClosure
This is an automated email from the ASF dual-hosted git repository.
yishayw pushed a commit to branch issue_143
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
The following commit(s) were added to refs/heads/issue_143 by this push:
new 6461abf Cache conditionalClosure
6461abf is described below
commit 6461abff68aa1fddc7ffcd745403982a900f6919
Author: DESKTOP-RH4S838\Yishay <yi...@hotmail.com>
AuthorDate: Fri Apr 10 16:04:31 2020 +0300
Cache conditionalClosure
Reference #143
---
.../compiler/internal/codegen/js/JSEmitter.java | 24 ++++++++++++++--------
.../codegen/js/royale/JSRoyaleEmitterTokens.java | 2 +-
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java
index e7d5194..338d138 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java
@@ -917,7 +917,7 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
}
if (checkForConditionalBind && project.getBuiltinType(BuiltinType.FUNCTION).equals(definition) &&
assignedNode instanceof MemberAccessExpressionNode) {
- emitAssignedCoercionHelper(assignedNode);
+ emitAssignedCoercionHelper(assignedNode, definition);
} else {
emitAssignedValue(assignedNode);
}
@@ -934,19 +934,27 @@ public class JSEmitter extends ASEmitter implements IJSEmitter
}
}
- private void emitAssignedCoercionHelper(IExpressionNode assignedNode) {
+ private void emitAssignedCoercionHelper(IExpressionNode assignedNode, IDefinition nodeDef) {
MemberAccessExpressionNode maeNode = (MemberAccessExpressionNode)assignedNode;
- if (maeNode.getLeftOperandNode() instanceof ILanguageIdentifierNode &&
- ((ILanguageIdentifierNode)maeNode.getLeftOperandNode()).getKind().equals(ILanguageIdentifierNode.LanguageIdentifierKind.THIS)) {
+ ILanguageIdentifierNode.LanguageIdentifierKind kind = null;
+ if (nodeDef.isStatic() || maeNode.getLeftOperandNode() instanceof ILanguageIdentifierNode &&
+ ((kind = ((ILanguageIdentifierNode)maeNode.getLeftOperandNode()).getKind()).equals(ILanguageIdentifierNode.LanguageIdentifierKind.THIS) ||
+ kind.equals(ILanguageIdentifierNode.LanguageIdentifierKind.SUPER))) {
emitAssignedValue(assignedNode);
} else {
- write(JSRoyaleEmitterTokens.CONDITIONAL_BIND_FUNCTION_NAME.getToken() +
+ write(JSRoyaleEmitterTokens.CONDITIONAL_CLOSURE_FUNCTION_NAME.getToken() +
ASEmitterTokens.PAREN_OPEN.getToken()
);
emitAssignedValue(assignedNode);
- write(ASEmitterTokens.COMMA.getToken());
- getWalker().walk(maeNode.getLeftOperandNode());
- write(ASEmitterTokens.PAREN_CLOSE.getToken());
+ write(ASEmitterTokens.COMMA.getToken());
+ write(ASEmitterTokens.SPACE.getToken());
+ getWalker().walk(maeNode.getLeftOperandNode());
+ write(ASEmitterTokens.COMMA.getToken());
+ write(ASEmitterTokens.SPACE.getToken());
+ write(ASEmitterTokens.SINGLE_QUOTE.getToken());
+ getWalker().walk(maeNode.getRightOperandNode());
+ write(ASEmitterTokens.SINGLE_QUOTE.getToken());
+ write(ASEmitterTokens.PAREN_CLOSE.getToken());
}
}
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java
index 722906e..4f3815b 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/royale/JSRoyaleEmitterTokens.java
@@ -68,7 +68,7 @@ public enum JSRoyaleEmitterTokens implements IEmitterTokens
SETTER_PREFIX("set__"),
BINDABLE_PREFIX("bindable__"),
CLOSURE_FUNCTION_NAME("org.apache.royale.utils.Language.closure"),
- CONDITIONAL_BIND_FUNCTION_NAME("org.apache.royale.utils.Language.conditionalBind"),
+ CONDITIONAL_CLOSURE_FUNCTION_NAME("org.apache.royale.utils.Language.conditionalClosure"),
SKIP_AS_COERCIONS("skipAsCoercions"),
SKIP_FUNCTION_COERCIONS("skipFunctionCoercions"),
JSX("JSX"),