mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-13 15:01:28 +00:00
eliminate retainRelease and skippedRelease
This commit is contained in:
@ -120,7 +120,11 @@ export class Array<T> extends ArrayBufferView {
|
||||
@operator("{}=") private __unchecked_set(index: i32, value: T): void {
|
||||
if (isManaged<T>()) {
|
||||
let offset = this.dataStart + (<usize>index << alignof<T>());
|
||||
store<usize>(offset, __retainRelease(load<usize>(offset), changetype<usize>(value)));
|
||||
let oldRef: usize = load<usize>(offset);
|
||||
if (changetype<usize>(value) != oldRef) {
|
||||
store<usize>(offset, __retain(changetype<usize>(value)));
|
||||
__release(oldRef);
|
||||
}
|
||||
} else {
|
||||
store<T>(this.dataStart + (<usize>index << alignof<T>()), value);
|
||||
}
|
||||
@ -182,7 +186,11 @@ export class Array<T> extends ArrayBufferView {
|
||||
ensureSize(changetype<usize>(this), newLength, alignof<T>());
|
||||
if (isManaged<T>()) {
|
||||
let offset = this.dataStart + (<usize>length << alignof<T>());
|
||||
store<usize>(offset, __retainRelease(load<usize>(offset), changetype<usize>(value)));
|
||||
let oldRef: usize = load<usize>(offset);
|
||||
if (changetype<usize>(value) != oldRef) {
|
||||
store<usize>(offset, __retain(changetype<usize>(value)));
|
||||
__release(oldRef);
|
||||
}
|
||||
} else {
|
||||
store<T>(this.dataStart + (<usize>length << alignof<T>()), value);
|
||||
}
|
||||
|
Reference in New Issue
Block a user