Index: test/mjsunit/eval-origin.js |
diff --git a/test/mjsunit/eval-origin.js b/test/mjsunit/eval-origin.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bb86ef32fc385e9bcd13de6052cd4d60e4bda158 |
--- /dev/null |
+++ b/test/mjsunit/eval-origin.js |
@@ -0,0 +1,39 @@ |
+// Copyright 2016 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Flags: --nostress-opt |
+ |
+Error.prepareStackTrace = function(exception, frames) { |
+ return frames[0].getEvalOrigin(); |
+} |
+ |
+var source = "new Error()"; |
+var eval_origin; |
+var geval = eval; |
+var log = []; |
+ |
+(function() { |
+ log.push([geval(source).stack, "17:13"]); |
+ log.push([geval(source).stack, "18:13"]); |
+ // log.push([geval(source).stack, "19:13"]); TODO(4921). |
+})(); |
+ |
+(function() { |
+ log.push([eval(source).stack, "23:13"]); |
+ log.push([eval(source).stack, "24:13"]); |
+ // log.push([eval(source).stack, "25:13"]); TODO(4921). |
+})(); |
+ |
+log.push([eval(source).stack, "28:11"]); |
+log.push([eval(source).stack, "29:11"]); |
+// log.push([eval(source).stack, "30:11"]); TODO(4921). |
+ |
+Error.prepareStackTrace = undefined; |
+ |
+for (var item of log) { |
+ var stacktraceline = item[0]; |
+ var expectation = item[1]; |
+ var re = new RegExp(`:${expectation}\\)$`); |
+ assertTrue(re.test(stacktraceline)); |
+} |