| import { shouldBe } from "./resources/assert.js"; |
| import * as A from "./namespace-object-inline-caching/a.js" |
| import * as B from "./namespace-object-inline-caching/b.js" |
| |
| // unset caching should be disabled for namespace object. |
| { |
| function lookup(ns) |
| { |
| return ns.hello; |
| } |
| noInline(lookup); |
| |
| shouldBe(A.hello, undefined); |
| shouldBe(B.hello, 42); |
| |
| for (let i = 0; i < 1e4; ++i) |
| shouldBe(lookup(A), undefined); |
| |
| shouldBe(lookup(B), 42); |
| } |
| |
| // usual caching should be disabled for namespace object. |
| { |
| function lookup(ns) |
| { |
| return ns.goodbye; |
| } |
| noInline(lookup); |
| |
| shouldBe(A.goodbye, 0); |
| shouldBe(B.goodbye, undefined); |
| |
| for (let i = 0; i < 1e4; ++i) |
| shouldBe(lookup(A), 0); |
| |
| shouldBe(lookup(B), undefined); |
| } |