From 7d469e82e274d334c7d03d81b10d225c59d30798 Mon Sep 17 00:00:00 2001 From: David McFarland Date: Sat, 25 May 2013 22:54:44 -0300 Subject: Fix and test for assert/crash in v8 inlining of local functions in qml mode When v8 tries to inline a local function which has been flagged is_qml_global, the assert "CHECK(location_ != __null)" fails. This happens because of the early out in RecordTypeFeedback for is_qml_global. I've limited the early out to UNALLOCATED variables with is_qml_global. bug: https://bugreports.qt-project.org/browse/QTBUG-31366 Change-Id: I360ef1a05a970589159686cf3100cb70de9ae29d Reviewed-by: Alan Alpert Reviewed-by: Lars Knoll --- src/3rdparty/v8/src/ast.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/3rdparty/v8/src/ast.cc b/src/3rdparty/v8/src/ast.cc index 3015b1e..5d7baf2 100644 --- a/src/3rdparty/v8/src/ast.cc +++ b/src/3rdparty/v8/src/ast.cc @@ -566,7 +566,7 @@ void Call::RecordTypeFeedback(TypeFeedbackOracle* oracle, Property* property = expression()->AsProperty(); if (property == NULL) { if (VariableProxy *proxy = expression()->AsVariableProxy()) { - if (proxy->var()->is_qml_global()) + if (proxy->var()->IsUnallocated() && proxy->var()->is_qml_global()) return; } -- cgit v1.2.1 From ca1ac7634f00b845ded92b5fabfa0d1c53197b01 Mon Sep 17 00:00:00 2001 From: Peter Varga Date: Tue, 25 Jun 2013 15:53:03 +0200 Subject: [V8] Fix stack alignment corruption for MinGW32 build BUG: https://bugreports.qt-project.org/browse/QTBUG-31396 Change-Id: If9b236f24ed82f4b6b19a2af938b422c68e5eab8 Reviewed-by: Thiago Macieira Reviewed-by: Lars Knoll (cherry picked from commit 91f936a862644c7ca7a1762ad05cc91d263b808e) Reviewed-by: Peter Varga Reviewed-by: Liang Qi --- src/3rdparty/v8/src/platform-win32.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/3rdparty/v8/src/platform-win32.cc b/src/3rdparty/v8/src/platform-win32.cc index 76e35f5..ae9ab2a 100644 --- a/src/3rdparty/v8/src/platform-win32.cc +++ b/src/3rdparty/v8/src/platform-win32.cc @@ -1523,9 +1523,12 @@ double OS::nan_value() { int OS::ActivationFrameAlignment() { #ifdef _WIN64 return 16; // Windows 64-bit ABI requires the stack to be 16-byte aligned. -#else - return 8; // Floating-point math runs faster with 8-byte alignment. +#elif defined(__MINGW32__) + // With gcc 4.4 the tree vectorization optimizer can generate code + // that requires 16 byte alignment such as movdqa on x86. + return 16; #endif + return 8; // Floating-point math runs faster with 8-byte alignment. } -- cgit v1.2.1