js/src/jit-test/tests/parallel/ic-getproperty.js

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/js/src/jit-test/tests/parallel/ic-getproperty.js	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,75 @@
     1.4 +load(libdir + "parallelarray-helpers.js");
     1.5 +
     1.6 +function testICProto() {
     1.7 +  function C() {}
     1.8 +  C.prototype.foo = "foo";
     1.9 +  var c = new C;
    1.10 +  assertArraySeqParResultsEq(
    1.11 +    range(0, minItemsTestingThreshold),
    1.12 +    "map",
    1.13 +    function() { return c.foo; });
    1.14 +}
    1.15 +
    1.16 +function f(o) {
    1.17 +  assertArraySeqParResultsEq(
    1.18 +    range(0, minItemsTestingThreshold),
    1.19 +    "map",
    1.20 +    function() { return o.foo; });
    1.21 +}
    1.22 +
    1.23 +function g(o) {
    1.24 +  assertArraySeqParResultsEq(
    1.25 +    range(0, minItemsTestingThreshold),
    1.26 +    "map",
    1.27 +    function() { return o.length; });
    1.28 +}
    1.29 +
    1.30 +function testICMultiple() {
    1.31 +  var o1 = { foo: 0 };
    1.32 +  var o2 = { foo: 0, bar: '' };
    1.33 +  var o3 = { foo: 0, bar: '', baz: function () { } };
    1.34 +  var o4 = { foo: { } };
    1.35 +  f(o1); f(o2); f(o3); f(o2); f(o1); f(o4);
    1.36 +}
    1.37 +
    1.38 +function testICSameShapeDifferentProto() {
    1.39 +  function A () { this.bar = 1; }
    1.40 +  A.prototype.foo = "a";
    1.41 +  A.prototype.a = true;
    1.42 +  var x = new A;
    1.43 +  function B () { this.bar = 2; }
    1.44 +  B.prototype.foo = "b";
    1.45 +  A.prototype.b = true;
    1.46 +  var y = new B;
    1.47 +
    1.48 +  f(x);
    1.49 +  f(y);
    1.50 +}
    1.51 +
    1.52 +function testICArrayLength() {
    1.53 +  var o1 = { length: 42 };
    1.54 +  var o2 = [1,2,3,4];
    1.55 +  g(o1); g(o2);
    1.56 +}
    1.57 +
    1.58 +function testICTypedArrayLength() {
    1.59 +  var o1 = { length: 42 };
    1.60 +  var o2 = new Int8Array(128);
    1.61 +  var o3 = new Uint8Array(128);
    1.62 +  var o4 = new Uint8ClampedArray(128);
    1.63 +  var o5 = new Int16Array(128);
    1.64 +  var o6 = new Uint16Array(128);
    1.65 +  var o7 = new Int32Array(128);
    1.66 +  var o8 = new Uint32Array(128);
    1.67 +  var o9 = new Float32Array(128);
    1.68 +  var o0 = new Float64Array(128);
    1.69 +  g(o1); g(o2); g(o3); g(o4); g(o5); g(o6); g(o7); g(o8); g(o9); g(o0);
    1.70 +}
    1.71 +
    1.72 +if (getBuildConfiguration().parallelJS) {
    1.73 +  testICProto();
    1.74 +  testICMultiple();
    1.75 +  testICSameShapeDifferentProto();
    1.76 +  testICArrayLength();
    1.77 +  testICTypedArrayLength();
    1.78 +}

mercurial