Skip to content

Commit 99ab54a

Browse files
committed
Use TruffleString.ToValidNode.
1 parent 451313c commit 99ab54a

File tree

1 file changed

+4
-29
lines changed

1 file changed

+4
-29
lines changed

graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/builtins/StringPrototypeBuiltins.java

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@
7272
import com.oracle.truffle.api.strings.TruffleString;
7373
import com.oracle.truffle.api.strings.TruffleString.CodeRange;
7474
import com.oracle.truffle.api.strings.TruffleStringBuilder;
75-
import com.oracle.truffle.api.strings.TruffleStringIterator;
7675
import com.oracle.truffle.js.builtins.RegExpPrototypeBuiltins.JSRegExpExecES5Node;
7776
import com.oracle.truffle.js.builtins.StringPrototypeBuiltinsFactory.CreateHTMLNodeGen;
7877
import com.oracle.truffle.js.builtins.StringPrototypeBuiltinsFactory.CreateStringIteratorNodeGen;
@@ -3013,39 +3012,15 @@ public JSStringToWellFormedNode(JSContext context, JSBuiltin builtin) {
30133012

30143013
@Specialization
30153014
protected static TruffleString doString(TruffleString thisStr,
3016-
@Shared @Cached TruffleString.IsValidNode isValidNode,
3017-
@Shared @Cached TruffleString.CreateCodePointIteratorNode codePointIteratorNode,
3018-
@Shared @Cached TruffleStringIterator.NextNode nextNode,
3019-
@Shared @Cached TruffleStringBuilder.AppendCodePointNode appendCodePointNode,
3020-
@Shared @Cached TruffleStringBuilder.ToStringNode toStringNode) {
3021-
if (isValidNode.execute(thisStr, TruffleString.Encoding.UTF_16)) {
3022-
return thisStr;
3023-
} else {
3024-
TruffleStringIterator it = codePointIteratorNode.execute(thisStr, TruffleString.Encoding.UTF_16);
3025-
TruffleStringBuilder sb = Strings.builderCreate(Strings.length(thisStr));
3026-
while (it.hasNext()) {
3027-
int cp = nextNode.execute(it);
3028-
if (cp >= Character.MIN_SURROGATE && cp <= Character.MAX_SURROGATE) {
3029-
appendCodePointNode.execute(sb, 0xfffd);
3030-
} else {
3031-
appendCodePointNode.execute(sb, cp);
3032-
}
3033-
}
3034-
TruffleString result = toStringNode.execute(sb);
3035-
assert result.isValidUncached(TruffleString.Encoding.UTF_16) : result;
3036-
return result;
3037-
}
3015+
@Shared @Cached TruffleString.ToValidStringNode toValidNode) {
3016+
return toValidNode.execute(thisStr, TruffleString.Encoding.UTF_16);
30383017
}
30393018

30403019
@Specialization(guards = "!isString(thisObj)")
30413020
protected final TruffleString doOther(Object thisObj,
3042-
@Shared @Cached TruffleString.IsValidNode isValidNode,
3043-
@Shared @Cached TruffleString.CreateCodePointIteratorNode codePointIteratorNode,
3044-
@Shared @Cached TruffleStringIterator.NextNode nextNode,
3045-
@Shared @Cached TruffleStringBuilder.AppendCodePointNode appendCodePointNode,
3046-
@Shared @Cached TruffleStringBuilder.ToStringNode toStringNode) {
3021+
@Shared @Cached TruffleString.ToValidStringNode toValidNode) {
30473022
requireObjectCoercible(thisObj);
3048-
return doString(toString(thisObj), isValidNode, codePointIteratorNode, nextNode, appendCodePointNode, toStringNode);
3023+
return doString(toString(thisObj), toValidNode);
30493024
}
30503025
}
30513026

0 commit comments

Comments
 (0)