| /* -*- tab-width: 8; 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 ObjectIsTypeDescr tests |
| * internal to Type.toSource(). |
| * |
| * In this case the argument type is always a type descriptor object |
| * (though not a unique one), so ObjectIsTypeDescr resolves to true |
| * and there should be no exceptions. |
| * |
| * Load this into the js shell with IONFLAGS=logs, then exit and run |
| * iongraph. You're looking for a smallish function within the |
| * "self-hosted" domain. Look for a call to ObjectIsTypeDescr far |
| * down in the graph for pass00, with a call to DescrToSource in a |
| * subsequent block (all of this is at the mercy of the way the code |
| * is currently written). |
| */ |
| |
| if (!this.TypedObject) |
| quit(); |
| |
| var T = TypedObject; |
| var ST1 = new T.StructType({x:T.int32}); |
| var ST2 = new T.StructType({x:T.float64}); |
| |
| function check(v) { |
| return v.toSource(); |
| } |
| |
| function test() { |
| var a = [ ST1, ST2 ]; |
| for ( var i=0 ; i < 1000 ; i++ ) |
| check(a[i%2]); |
| return check(a[0]); |
| } |
| |
| print(test()); |
| |
| |