Advertisement
darkxst

esr10-test.diff

Jan 1st, 2013
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 3.67 KB | None | 0 0
  1. diff --git a/js/src/tests/js1_5/Regress/jstests.list b/js/src/tests/js1_5/Regress/jstests.list
  2. index 261a913..0108d02 100644
  3. --- a/js/src/tests/js1_5/Regress/jstests.list
  4. +++ b/js/src/tests/js1_5/Regress/jstests.list
  5. @@ -357,7 +357,7 @@ script regress-68498-004.js
  6.  script regress-69607.js
  7.  script regress-71107.js
  8.  script regress-76054.js
  9. -script regress-80981.js
  10. +slow script regress-80981.js
  11.  script regress-82306.js
  12.  script regress-89443.js
  13.  script regress-89474.js
  14.  
  15. diff --git a/js/src/tests/js1_8/extensions/regress-422269.js b/js/src/tests/js1_8/extensions/regress-422269.js
  16. index c150f94..1dde8bb 100644
  17. --- a/js/src/tests/js1_8/extensions/regress-422269.js
  18. +++ b/js/src/tests/js1_8/extensions/regress-422269.js
  19. @@ -38,8 +38,8 @@
  20.  //-----------------------------------------------------------------------------
  21.  var BUGNUMBER = 422269;
  22.  var summary = 'Compile-time let block should not capture runtime references';
  23. -var actual = 'No leak';
  24. -var expect = 'No leak';
  25. +var actual = 'referenced only by stack and closure';
  26. +var expect = 'referenced only by stack and closure';
  27.  
  28.  
  29.  //-----------------------------------------------------------------------------
  30. @@ -56,31 +56,39 @@ function test()
  31.    function f()
  32.    {
  33.      let m = {sin: Math.sin};
  34. -    (function() { m.sin(1); })();
  35. +    (function holder() { m.sin(1); })();
  36.      return m;
  37.    }
  38.  
  39. -  if (typeof countHeap == 'undefined')
  40. +  if (typeof findReferences == 'undefined')
  41.    {
  42.      expect = actual = 'Test skipped';
  43. -    print('Test skipped. Requires countHeap function.');
  44. +    print('Test skipped. Requires findReferences function.');
  45.    }
  46.    else
  47.    {
  48.      var x = f();
  49. -    f(); // overwrite the machine stack with new objects
  50. -    gc();
  51. -    var n = countHeap();
  52. -    x = null;
  53. -    // When running with the method JIT, null may not get stored to memory right away.
  54. -    // Calling eval ensures that all values are stored out so that the old x is no
  55. -    // longer rooted from the stack.
  56. -    eval("");
  57. -    gc();
  58. +    var refs = findReferences(x);
  59.  
  60. -    var n2 = countHeap();
  61. -    if (n2 >= n)
  62. -      actual = "leak is detected, something roots the result of f";
  63. +    // At this point, x should only be referenced from the stack --- the
  64. +    // variable 'x' itself, and any random things the conservative scanner
  65. +    // finds --- and possibly from the 'holder' closure, which could itself
  66. +    // be held alive for random reasons. Remove those from the refs list, and
  67. +    // then complain if anything is left.
  68. +    for (var edge in refs) {
  69. +      // Remove references from roots, like the stack.
  70. +      if (refs[edge].every(function (r) r === null))
  71. +        delete refs[edge];
  72. +      // Remove references from the closure, which could be held alive for
  73. +      // random reasons.
  74. +      else if (refs[edge].length === 1 &&
  75. +               typeof refs[edge][0] === "function" &&
  76. +               refs[edge][0].name === "holder")
  77. +        delete refs[edge];
  78. +    }
  79. +
  80. +    if (Object.keys(refs).length != 0)
  81. +        actual = "unexpected references to the result of f: " + Object.keys(refs).join(", ");
  82.    }
  83.    reportCompare(expect, actual, summary);
  84.  
  85. diff --git a/js/src/tests/js1_8_5/extensions/jstests.list b/js/src/tests/js1_8_5/extensions/jstests.list
  86. index 8328ad2..d07af06 100644
  87. --- a/js/src/tests/js1_8_5/extensions/jstests.list
  88. +++ b/js/src/tests/js1_8_5/extensions/jstests.list
  89. @@ -30,7 +30,6 @@ skip-if(!xulRuntime.shell) script clone-forge.js
  90.  skip-if(!xulRuntime.shell) script clone-complex-object.js
  91.  script set-property-non-extensible.js
  92.  script recursion.js
  93. -script findReferences-01.js
  94.  script findReferences-02.js
  95.  script findReferences-03.js
  96.  script findReferences-04.js
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement