mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-13 06:51:34 +00:00
Refactor slices for better compliance (#430)
This commit is contained in:
@ -344,7 +344,7 @@ export class Array<T> {
|
||||
var len = this.length_;
|
||||
begin = begin < 0 ? max(begin + len, 0) : min(begin, len);
|
||||
end = end < 0 ? max(end + len, 0) : min(end, len);
|
||||
len = end - begin;
|
||||
len = max(end - begin, 0);
|
||||
var sliced = new Array<T>(len);
|
||||
if (len) {
|
||||
memory.copy(
|
||||
|
@ -52,13 +52,15 @@ export class ArrayBuffer {
|
||||
|
||||
slice(begin: i32 = 0, end: i32 = MAX_BLENGTH): ArrayBuffer {
|
||||
var len = this.byteLength;
|
||||
if (begin < 0) begin = max(len + begin, 0);
|
||||
else begin = min(begin, len);
|
||||
if (end < 0) end = max(len + end, 0);
|
||||
else end = min(end, len);
|
||||
var newLen = max(end - begin, 0);
|
||||
var buffer = allocateUnsafe(newLen);
|
||||
memory.copy(changetype<usize>(buffer) + HEADER_SIZE, changetype<usize>(this) + HEADER_SIZE + begin, newLen);
|
||||
begin = begin < 0 ? max(len + begin, 0) : min(begin, len);
|
||||
end = end < 0 ? max(len + end, 0) : min(end, len);
|
||||
len = max(end - begin, 0);
|
||||
var buffer = allocateUnsafe(len);
|
||||
memory.copy(
|
||||
changetype<usize>(buffer) + HEADER_SIZE,
|
||||
changetype<usize>(this) + HEADER_SIZE + begin,
|
||||
len
|
||||
);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
@ -394,10 +394,10 @@ export class String {
|
||||
}
|
||||
|
||||
slice(beginIndex: i32, endIndex: i32 = i32.MAX_VALUE): String {
|
||||
var length = this.length;
|
||||
var begin = (beginIndex < 0) ? max(beginIndex + length, 0) : min(beginIndex, length);
|
||||
var end = (endIndex < 0) ? max(endIndex + length, 0) : min(endIndex, length);
|
||||
var len = end - begin;
|
||||
var len = this.length;
|
||||
var begin = beginIndex < 0 ? max(beginIndex + len, 0) : min(beginIndex, len);
|
||||
var end = endIndex < 0 ? max(endIndex + len, 0) : min(endIndex, len);
|
||||
len = end - begin;
|
||||
if (len <= 0) return changetype<String>("");
|
||||
var out = allocateUnsafe(len);
|
||||
copyUnsafe(out, 0, this, begin, len);
|
||||
|
Reference in New Issue
Block a user