Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions std/assembly/string.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,17 @@ import { Array } from "./array";
}

static fromCodePoint(code: i32): String {
assert(<u32>code <= 0x10FFFF);
var hasSur = code > 0xFFFF;
var hasSur = <u32>code > 0xFFFF;
var out = changetype<String>(__new(2 << i32(hasSur), idof<String>()));
if (!hasSur) {
store<u16>(changetype<usize>(out), <u16>code);
} else {
// Checks valid code point range
assert(<u32>code <= 0x10FFFF);
code -= 0x10000;
let hi = (code & 0x03FF) | 0xDC00;
let lo = (code >>> 10) | 0xD800;
store<u32>(changetype<usize>(out), lo | (hi << 16));
let lo = code >>> 10 | 0xD800;
store<u32>(changetype<usize>(out), lo | hi << 16);
}
return out;
}
Expand Down
24 changes: 12 additions & 12 deletions tests/compiler/std/string-casemapping.optimized.wat
Original file line number Diff line number Diff line change
Expand Up @@ -5967,22 +5967,11 @@
global.get $~lib/memory/__stack_pointer
i32.const 0
i32.store
local.get $0
i32.const 1114111
i32.gt_u
if
i32.const 0
i32.const 15344
i32.const 33
i32.const 5
call $~lib/builtins/abort
unreachable
end
global.get $~lib/memory/__stack_pointer
i32.const 2
local.get $0
i32.const 65535
i32.gt_s
i32.gt_u
local.tee $2
i32.shl
i32.const 1
Expand All @@ -5991,6 +5980,17 @@
i32.store
local.get $2
if
local.get $0
i32.const 1114111
i32.gt_u
if
i32.const 0
i32.const 15344
i32.const 39
i32.const 7
call $~lib/builtins/abort
unreachable
end
local.get $1
local.get $0
i32.const 65536
Expand Down
26 changes: 13 additions & 13 deletions tests/compiler/std/string-casemapping.untouched.wat
Original file line number Diff line number Diff line change
Expand Up @@ -8589,20 +8589,8 @@
i32.const 0
i32.store
local.get $0
i32.const 1114111
i32.le_u
i32.eqz
if
i32.const 0
i32.const 14576
i32.const 33
i32.const 5
call $~lib/builtins/abort
unreachable
end
local.get $0
i32.const 65535
i32.gt_s
i32.gt_u
local.set $1
global.get $~lib/memory/__stack_pointer
i32.const 2
Expand All @@ -8619,6 +8607,18 @@
local.get $0
i32.store16
else
local.get $0
i32.const 1114111
i32.le_u
i32.eqz
if
i32.const 0
i32.const 14576
i32.const 39
i32.const 7
call $~lib/builtins/abort
unreachable
end
local.get $0
i32.const 65536
i32.sub
Expand Down
28 changes: 14 additions & 14 deletions tests/compiler/std/string.optimized.wat
Original file line number Diff line number Diff line change
Expand Up @@ -2770,7 +2770,7 @@
if
i32.const 1264
i32.const 1328
i32.const 56
i32.const 57
i32.const 31
call $~lib/builtins/abort
unreachable
Expand Down Expand Up @@ -20364,22 +20364,11 @@
global.get $~lib/memory/__stack_pointer
i32.const 0
i32.store
local.get $0
i32.const 1114111
i32.gt_u
if
i32.const 0
i32.const 1328
i32.const 33
i32.const 5
call $~lib/builtins/abort
unreachable
end
global.get $~lib/memory/__stack_pointer
i32.const 2
local.get $0
i32.const 65535
i32.gt_s
i32.gt_u
local.tee $2
i32.shl
i32.const 1
Expand All @@ -20388,6 +20377,17 @@
i32.store
local.get $2
if
local.get $0
i32.const 1114111
i32.gt_u
if
i32.const 0
i32.const 1328
i32.const 39
i32.const 7
call $~lib/builtins/abort
unreachable
end
local.get $1
local.get $0
i32.const 65536
Expand Down Expand Up @@ -20988,7 +20988,7 @@
if
i32.const 13648
i32.const 1328
i32.const 332
i32.const 333
i32.const 7
call $~lib/builtins/abort
unreachable
Expand Down
30 changes: 15 additions & 15 deletions tests/compiler/std/string.untouched.wat
Original file line number Diff line number Diff line change
Expand Up @@ -3089,7 +3089,7 @@
if
i32.const 240
i32.const 304
i32.const 56
i32.const 57
i32.const 31
call $~lib/builtins/abort
unreachable
Expand Down Expand Up @@ -25393,20 +25393,8 @@
i32.const 0
i32.store
local.get $0
i32.const 1114111
i32.le_u
i32.eqz
if
i32.const 0
i32.const 304
i32.const 33
i32.const 5
call $~lib/builtins/abort
unreachable
end
local.get $0
i32.const 65535
i32.gt_s
i32.gt_u
local.set $1
global.get $~lib/memory/__stack_pointer
i32.const 2
Expand All @@ -25423,6 +25411,18 @@
local.get $0
i32.store16
else
local.get $0
i32.const 1114111
i32.le_u
i32.eqz
if
i32.const 0
i32.const 304
i32.const 39
i32.const 7
call $~lib/builtins/abort
unreachable
end
local.get $0
i32.const 65536
i32.sub
Expand Down Expand Up @@ -26084,7 +26084,7 @@
if
i32.const 12624
i32.const 304
i32.const 332
i32.const 333
i32.const 7
call $~lib/builtins/abort
unreachable
Expand Down