@@ -19,22 +19,22 @@ export class StaticArray<T> {
19
19
static fromArray < T > ( source : Array < T > ) : StaticArray < T > {
20
20
var length = source . length ;
21
21
var outSize = < usize > length << alignof < T > ( ) ;
22
- var out = __alloc ( outSize , idof < StaticArray < T > > ( ) ) ;
22
+ var outPtr = __alloc ( outSize , idof < StaticArray < T > > ( ) ) ;
23
+ var srcPtr = load < usize > ( changetype < usize > ( source ) , offsetof < Array < T > > ( "dataStart" ) ) ;
23
24
if ( isManaged < T > ( ) ) {
24
- let sourcePtr = source . dataStart ;
25
25
for ( let i = 0 ; i < length ; ++ i ) {
26
26
let off = < usize > i << alignof < T > ( ) ;
27
- store < usize > ( out + off , __retain ( load < usize > ( sourcePtr + off ) ) ) ;
27
+ store < usize > ( outPtr + off , __retain ( load < usize > ( srcPtr + off ) ) ) ;
28
28
}
29
29
} else {
30
- memory . copy ( out , source . dataStart , outSize ) ;
30
+ memory . copy ( outPtr , srcPtr , outSize ) ;
31
31
}
32
- return changetype < StaticArray < T > > ( out ) ;
32
+ return changetype < StaticArray < T > > ( outPtr ) ;
33
33
}
34
34
35
35
static concat < T > ( source : StaticArray < T > , other : StaticArray < T > ) : StaticArray < T > {
36
36
var sourceLen = source . length ;
37
- var otherLen = select ( 0 , other . length , other === null ) ;
37
+ var otherLen = select ( 0 , other . length , changetype < usize > ( other ) == 0 ) ;
38
38
var outLen = sourceLen + otherLen ;
39
39
if ( < u32 > outLen > < u32 > BLOCK_MAXSIZE >>> alignof < T > ( ) ) throw new Error ( E_INVALIDLENGTH ) ;
40
40
var out = changetype < StaticArray < T > > ( __alloc ( < usize > outLen << alignof < T > ( ) , idof < StaticArray < T > > ( ) ) ) ; // retains
@@ -166,28 +166,28 @@ export class StaticArray<T> {
166
166
167
167
concat ( other : Array < T > ) : Array < T > {
168
168
var thisLen = this . length ;
169
- var otherLen = select ( 0 , other . length , other === null ) ;
169
+ var otherLen = select ( 0 , other . length , changetype < usize > ( other ) == 0 ) ;
170
170
var outLen = thisLen + otherLen ;
171
171
if ( < u32 > outLen > < u32 > BLOCK_MAXSIZE >>> alignof < T > ( ) ) throw new Error ( E_INVALIDLENGTH ) ;
172
172
var out = changetype < Array < T > > ( __allocArray ( outLen , alignof < T > ( ) , idof < Array < T > > ( ) ) ) ; // retains
173
- var outStart = out . dataStart ;
173
+ var outPtr = load < usize > ( changetype < usize > ( out ) , offsetof < Array < T > > ( "dataStart" ) ) ;
174
+ var otherPtr = load < usize > ( changetype < usize > ( other ) , offsetof < Array < T > > ( "dataStart" ) ) ;
174
175
var thisSize = < usize > thisLen << alignof < T > ( ) ;
175
176
if ( isManaged < T > ( ) ) {
176
177
let thisStart = changetype < usize > ( this ) ;
177
178
for ( let offset : usize = 0 ; offset < thisSize ; offset += sizeof < T > ( ) ) {
178
179
let ref = load < usize > ( thisStart + offset ) ;
179
- store < usize > ( outStart + offset , __retain ( ref ) ) ;
180
+ store < usize > ( outPtr + offset , __retain ( ref ) ) ;
180
181
}
181
- outStart += thisSize ;
182
- let otherStart = other . dataStart ;
182
+ outPtr += thisSize ;
183
183
let otherSize = < usize > otherLen << alignof < T > ( ) ;
184
184
for ( let offset : usize = 0 ; offset < otherSize ; offset += sizeof < T > ( ) ) {
185
- let ref = load < usize > ( otherStart + offset ) ;
186
- store < usize > ( outStart + offset , __retain ( ref ) ) ;
185
+ let ref = load < usize > ( otherPtr + offset ) ;
186
+ store < usize > ( outPtr + offset , __retain ( ref ) ) ;
187
187
}
188
188
} else {
189
- memory . copy ( outStart , changetype < usize > ( this ) , thisSize ) ;
190
- memory . copy ( outStart + thisSize , other . dataStart , < usize > otherLen << alignof < T > ( ) ) ;
189
+ memory . copy ( outPtr , changetype < usize > ( this ) , thisSize ) ;
190
+ memory . copy ( outPtr + thisSize , otherPtr , < usize > otherLen << alignof < T > ( ) ) ;
191
191
}
192
192
return out ;
193
193
}
@@ -198,18 +198,18 @@ export class StaticArray<T> {
198
198
end = end < 0 ? max ( end + length , 0 ) : min ( end , length ) ;
199
199
length = max ( end - start , 0 ) ;
200
200
var slice = changetype < Array < T > > ( __allocArray ( length , alignof < T > ( ) , idof < Array < T > > ( ) ) ) ; // retains
201
- var sliceBase = slice . dataStart ;
202
- var thisBase = changetype < usize > ( this ) + ( < usize > start << alignof < T > ( ) ) ;
201
+ var slicePtr = load < usize > ( changetype < usize > ( slice ) , offsetof < Array < T > > ( " dataStart" ) ) ;
202
+ var thisPtr = changetype < usize > ( this ) + ( < usize > start << alignof < T > ( ) ) ;
203
203
if ( isManaged < T > ( ) ) {
204
204
let off = < usize > 0 ;
205
205
let end = < usize > length << alignof < usize > ( ) ;
206
206
while ( off < end ) {
207
- let ref = load < usize > ( thisBase + off ) ;
208
- store < usize > ( sliceBase + off , __retain ( ref ) ) ;
207
+ let ref = load < usize > ( thisPtr + off ) ;
208
+ store < usize > ( slicePtr + off , __retain ( ref ) ) ;
209
209
off += sizeof < usize > ( ) ;
210
210
}
211
211
} else {
212
- memory . copy ( sliceBase , thisBase , length << alignof < T > ( ) ) ;
212
+ memory . copy ( slicePtr , thisPtr , length << alignof < T > ( ) ) ;
213
213
}
214
214
return slice ;
215
215
}
0 commit comments