Index: test/mjsunit/compiler/escape-analysis-deopt-1.js |
diff --git a/test/mjsunit/regress/regress-299979.js b/test/mjsunit/compiler/escape-analysis-deopt-1.js |
similarity index 78% |
copy from test/mjsunit/regress/regress-299979.js |
copy to test/mjsunit/compiler/escape-analysis-deopt-1.js |
index 0afbcb35717f4c60f62d8cd8442ab164ec93246b..7337264b856513efdfc799a84c563263c35b7790 100644 |
--- a/test/mjsunit/regress/regress-299979.js |
+++ b/test/mjsunit/compiler/escape-analysis-deopt-1.js |
@@ -25,10 +25,23 @@ |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+// Flags: --allow-natives-syntax --turbo-escape |
-(function(){ |
+// Test deoptimization with captured objects in local variables. |
+(function testDeoptLocal() { |
"use strict"; |
- var list = Object.freeze([1, 2, 3]); |
- assertThrows(function() { list.unshift(4); }, TypeError); |
- assertThrows(function() { list.shift(); }, TypeError); |
+ function constructor1(a) { |
+ return arguments; |
+ } |
+ function func(a) { |
+ var o1 = constructor1(1,2,3); |
+ if (a) { %DeoptimizeNow(); } |
+ assertEquals(1, o1[0]); |
+ assertEquals(2, o1[1]); |
+ assertEquals(3, o1[2]); |
+ } |
+ func(false); |
+ func(false); |
+ %OptimizeFunctionOnNextCall(func); |
+ func(true); |
})(); |