/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* Used to verify that the JIT resolves the transparent/opaque type * tests internal to storage(). * * In this case the argument type is variable and thus unknown to the * JIT, so both ObjectIsOpaqueTypedObject and * ObjectIsTransparentTypedObject are resolved as uses of the * "HasClass" primitive. * * Load this into the js shell with IONFLAGS=logs, then exit and run * iongraph. func01 will likely be the one we want (look for calls to * ObjectIsOpaqueTypedObject and ObjectIsTransparentTypedObject in the * graph for pass00). */ if (!this.TypedObject) quit(); var T = TypedObject; function check(v) { return T.storage(v); } function test() { var AT = new T.ArrayType(T.int32,10); var v = new Object; // Not actually a typed object var w = new AT(); // Actually a typed object var a = [v,w]; for ( var i=0 ; i < 1000 ; i++ ) try { check(a[i%2]); } catch (e) {} try { return check(a[1]); } catch (e) {} } test();