Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix busted string handling in assembler.
Fixes various of the remaining self-host failures.
  • Loading branch information
jnthn committed Feb 28, 2013
1 parent 53cd449 commit 60f479a
Showing 1 changed file with 19 additions and 4 deletions.
23 changes: 19 additions & 4 deletions src/org/perl6/nqp/jast2bc/JASTToJVMBytecode.java
Expand Up @@ -197,10 +197,25 @@ else if (curLine.startsWith(".push_nc ")) {
}
else if (curLine.startsWith(".push_sc ")) {
String value = curLine.substring(".push_sc ".length());
value = value.replace("\\n", "\n");
value = value.replace("\\r", "\r");
value = value.replace("\\t", "\t");
il.append(new PUSH(cp, value));
StringBuilder sb = new StringBuilder(value.length());
for (int i = 0; i < value.length(); i++) {
char ch = value.charAt(i);
if (ch == '\\') {
i++;
switch (value.charAt(i)) {
case '\\': sb.append('\\'); break;
case 'n': sb.append('\n'); break;
case 'r': sb.append('\r'); break;
case 't': sb.append('\t'); break;
default:
throw new RuntimeException("Invalid string literal");
}
}
else {
sb.append(ch);
}
}
il.append(new PUSH(cp, sb.toString()));
}
else if (curLine.startsWith(".push_cc ")) {
String className = curLine.substring(".push_sc ".length());
Expand Down

0 comments on commit 60f479a

Please sign in to comment.