summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--deps/v8/include/v8-version.h2
-rw-r--r--deps/v8/src/execution/isolate.cc7
-rw-r--r--deps/v8/test/mjsunit/regress/wasm/regress-crbug-1007608.js26
-rw-r--r--deps/v8/tools/testrunner/base_runner.py8
-rw-r--r--deps/v8/tools/testrunner/testproc/progress.py25
5 files changed, 62 insertions, 6 deletions
diff --git a/deps/v8/include/v8-version.h b/deps/v8/include/v8-version.h
index 000be3a739..ef90963d25 100644
--- a/deps/v8/include/v8-version.h
+++ b/deps/v8/include/v8-version.h
@@ -11,7 +11,7 @@
#define V8_MAJOR_VERSION 7
#define V8_MINOR_VERSION 8
#define V8_BUILD_NUMBER 279
-#define V8_PATCH_LEVEL 15
+#define V8_PATCH_LEVEL 17
// Use 1 for candidates and 0 otherwise.
// (Boolean macro values are not supported by all preprocessors.)
diff --git a/deps/v8/src/execution/isolate.cc b/deps/v8/src/execution/isolate.cc
index d090ed5260..3ba39562b1 100644
--- a/deps/v8/src/execution/isolate.cc
+++ b/deps/v8/src/execution/isolate.cc
@@ -1680,8 +1680,13 @@ Object Isolate::UnwindAndFindHandler() {
int return_offset = static_cast<int>(frame->pc() - instruction_start);
int handler_offset = table.LookupReturn(return_offset);
DCHECK_NE(-1, handler_offset);
+ // Compute the stack pointer from the frame pointer. This ensures that
+ // argument slots on the stack are dropped as returning would.
+ Address return_sp = frame->fp() +
+ StandardFrameConstants::kFixedFrameSizeAboveFp -
+ code.stack_slots() * kSystemPointerSize;
return FoundHandler(Context(), instruction_start, handler_offset,
- code.constant_pool(), frame->sp(), frame->fp());
+ code.constant_pool(), return_sp, frame->fp());
}
case StackFrame::WASM_COMPILED: {
diff --git a/deps/v8/test/mjsunit/regress/wasm/regress-crbug-1007608.js b/deps/v8/test/mjsunit/regress/wasm/regress-crbug-1007608.js
new file mode 100644
index 0000000000..37d5b2e4a2
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/wasm/regress-crbug-1007608.js
@@ -0,0 +1,26 @@
+// Copyright 2019 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.
+
+// Bug is in the C-to-Wasm entry, used e.g. by the Wasm interpreter.
+// Flags: --wasm-interpret-all
+
+load("test/mjsunit/wasm/wasm-module-builder.js");
+
+let argc = 7;
+let builder = new WasmModuleBuilder();
+let types = new Array(argc).fill(kWasmI32);
+let sig = makeSig(types, []);
+let body = [];
+for (let i = 0; i < argc; ++i) {
+ body.push(kExprGetLocal, i);
+}
+body.push(kExprCallFunction, 0);
+builder.addImport('', 'f', sig);
+builder.addFunction("main", sig).addBody(body).exportAs('main');
+let instance = builder.instantiate({
+ '': {
+ 'f': function() { throw "don't crash"; }
+ }
+});
+assertThrows(instance.exports.main);
diff --git a/deps/v8/tools/testrunner/base_runner.py b/deps/v8/tools/testrunner/base_runner.py
index 15c5335878..cb23366aa4 100644
--- a/deps/v8/tools/testrunner/base_runner.py
+++ b/deps/v8/tools/testrunner/base_runner.py
@@ -162,6 +162,7 @@ MODES = {
PROGRESS_INDICATORS = {
'verbose': progress.VerboseProgressIndicator,
+ 'ci': progress.CIProgressIndicator,
'dots': progress.DotsProgressIndicator,
'color': progress.ColorProgressIndicator,
'mono': progress.MonochromeProgressIndicator,
@@ -355,6 +356,10 @@ class BaseTestRunner(object):
parser.add_option("--exit-after-n-failures", type="int", default=100,
help="Exit after the first N failures instead of "
"running all tests. Pass 0 to disable this feature.")
+ parser.add_option("--ci-test-completion",
+ help="Path to a file for logging test completion in the "
+ "context of CI progress indicator. Ignored if "
+ "progress indicator is other than 'ci'.")
# Rerun
parser.add_option("--rerun-failures-count", default=0, type=int,
@@ -805,6 +810,9 @@ class BaseTestRunner(object):
self.mode_options.execution_mode))
for proc in procs:
+ proc.configure(options)
+
+ for proc in procs:
try:
proc.set_test_count(test_count)
except AttributeError:
diff --git a/deps/v8/tools/testrunner/testproc/progress.py b/deps/v8/tools/testrunner/testproc/progress.py
index edc88668b7..6957cdc423 100644
--- a/deps/v8/tools/testrunner/testproc/progress.py
+++ b/deps/v8/tools/testrunner/testproc/progress.py
@@ -57,9 +57,16 @@ class ResultsTracker(base.TestProcObserver):
class ProgressIndicator(base.TestProcObserver):
+ def __init__(self):
+ super(base.TestProcObserver, self).__init__()
+ self.options = None
+
def finished(self):
pass
+ def configure(self, options):
+ self.options = options
+
class SimpleProgressIndicator(ProgressIndicator):
def __init__(self):
@@ -114,8 +121,7 @@ class VerboseProgressIndicator(SimpleProgressIndicator):
sys.stdout.flush()
self._last_printed_time = time.time()
- def _on_result_for(self, test, result):
- super(VerboseProgressIndicator, self)._on_result_for(test, result)
+ def _message(self, test, result):
# TODO(majeski): Support for dummy/grouped results
if result.has_unexpected_output:
if result.output.HasCrashed():
@@ -124,9 +130,12 @@ class VerboseProgressIndicator(SimpleProgressIndicator):
outcome = 'FAIL'
else:
outcome = 'pass'
+ return 'Done running %s %s: %s' % (
+ test, test.variant or 'default', outcome)
- self._print('Done running %s %s: %s' % (
- test, test.variant or 'default', outcome))
+ def _on_result_for(self, test, result):
+ super(VerboseProgressIndicator, self)._on_result_for(test, result)
+ self._print(self._message(test, result))
# TODO(machenbach): Remove this platform specific hack and implement a proper
# feedback channel from the workers, providing which tests are currently run.
@@ -155,6 +164,14 @@ class VerboseProgressIndicator(SimpleProgressIndicator):
self._print_processes_linux()
+class CIProgressIndicator(VerboseProgressIndicator):
+ def _on_result_for(self, test, result):
+ super(VerboseProgressIndicator, self)._on_result_for(test, result)
+ if self.options.ci_test_completion:
+ with open(self.options.ci_test_completion, "a") as f:
+ f.write(self._message(test, result) + "\n")
+
+
class DotsProgressIndicator(SimpleProgressIndicator):
def __init__(self):
super(DotsProgressIndicator, self).__init__()