Skip to content

Commit 6d6d1dd

Browse files
committed
Improve inlining where locals can be aliased; Add a crude mechanism for explicit unchecked array accesses
The `unchecked` builtin should be handled with ultimate care and it would be a lot better if there'd be a mechanism doing this automatically.
1 parent 391db28 commit 6d6d1dd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+5038
-15336
lines changed

dist/asc.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/asc.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/assemblyscript.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/assemblyscript.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/n-body/assembly/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class NBodySystem {
9090
var pz = 0.0;
9191
var size = bodies.length;
9292
for (let i = 0; i < size; i++) {
93-
let b = bodies[i];
93+
let b = unchecked(bodies[i]);
9494
let m = b.mass;
9595
px += b.vx * m;
9696
py += b.vy * m;
@@ -105,7 +105,7 @@ class NBodySystem {
105105
// var buffer = changetype<usize>(bodies.buffer_);
106106

107107
for (let i: u32 = 0; i < size; ++i) {
108-
let bodyi = bodies[i];
108+
let bodyi = unchecked(bodies[i]);
109109
// let bodyi = load<Body>(buffer + i * sizeof<Body>(), 8);
110110

111111
let ix = bodyi.x;
@@ -118,7 +118,7 @@ class NBodySystem {
118118

119119
let bodyim = bodyi.mass;
120120
for (let j: u32 = i + 1; j < size; ++j) {
121-
let bodyj = bodies[j];
121+
let bodyj = unchecked(bodies[j]);
122122
// let bodyj = load<Body>(buffer + j * sizeof<Body>(), 8);
123123

124124
let dx = ix - bodyj.x;
@@ -156,7 +156,7 @@ class NBodySystem {
156156
var bodies = this.bodies;
157157

158158
for (let i: u32 = 0, size: u32 = bodies.length; i < size; ++i) {
159-
let bodyi = bodies[i];
159+
let bodyi = unchecked(bodies[i]);
160160

161161
let ix = bodyi.x;
162162
let iy = bodyi.y;

0 commit comments

Comments
 (0)