diff --git a/jlox/tlox/src/main/java/xyz/ctsk/lox/LoxLanguage.java b/jlox/tlox/src/main/java/xyz/ctsk/lox/LoxLanguage.java index a25f388..467ba98 100644 --- a/jlox/tlox/src/main/java/xyz/ctsk/lox/LoxLanguage.java +++ b/jlox/tlox/src/main/java/xyz/ctsk/lox/LoxLanguage.java @@ -2,6 +2,7 @@ package xyz.ctsk.lox; import com.oracle.truffle.api.CallTarget; import com.oracle.truffle.api.TruffleLanguage; +import com.oracle.truffle.api.strings.TruffleString; import xyz.ctsk.lox.nodes.LoxExpressionNode; import xyz.ctsk.lox.nodes.LoxNode; import xyz.ctsk.lox.nodes.LoxRootNode; @@ -11,6 +12,7 @@ import xyz.ctsk.lox.parser.LoxParser; public class LoxLanguage extends TruffleLanguage { public static final String ID = "lox"; public static final String NAME = "Lox"; + public static final TruffleString.Encoding STRING_ENCODING = TruffleString.Encoding.UTF_16; @Override protected CallTarget parse(ParsingRequest request) throws Exception { diff --git a/jlox/tlox/src/main/java/xyz/ctsk/lox/nodes/expr/LoxAddNode.java b/jlox/tlox/src/main/java/xyz/ctsk/lox/nodes/expr/LoxAddNode.java index 9091720..9504c70 100644 --- a/jlox/tlox/src/main/java/xyz/ctsk/lox/nodes/expr/LoxAddNode.java +++ b/jlox/tlox/src/main/java/xyz/ctsk/lox/nodes/expr/LoxAddNode.java @@ -1,8 +1,10 @@ package xyz.ctsk.lox.nodes.expr; +import com.oracle.truffle.api.dsl.Cached; import com.oracle.truffle.api.dsl.Fallback; import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.strings.TruffleString; +import xyz.ctsk.lox.LoxLanguage; import xyz.ctsk.lox.runtime.LoxException; import xyz.ctsk.lox.nodes.LoxBinaryNode; @@ -13,8 +15,8 @@ public abstract class LoxAddNode extends LoxBinaryNode { } @Specialization - public TruffleString add(TruffleString left, TruffleString right) { - return TruffleString.ConcatNode.create().execute(left, right, TruffleString.Encoding.UTF_16, false); + public TruffleString add(TruffleString left, TruffleString right, @Cached TruffleString.ConcatNode concatNode) { + return concatNode.execute(left, right, LoxLanguage.STRING_ENCODING, true); } @Fallback