diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 6acdc49..0000000 --- a/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -/v8-3.0.0.1.tar.gz -/v8-3.5.1.tar.bz2 -/v8-3.3.10.tar.bz2 -/v8-3.8.9-20120127svn10526.tar.bz2 -/v8-3.7.12.tar.bz2 -/v8-3.10.8.tar.bz2 -/v8-3.13.7.5.tar.bz2 -/v8-3.14.5.7.tar.bz2 -/v8-3.14.5.8.tar.bz2 -/v8-3.14.5.10.tar.bz2 diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..d6ea8a4 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +extremely difficult to maintain, nothing uses it diff --git a/sources b/sources deleted file mode 100644 index 0ed3ff1..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -d4e3a038ad387fd7b75d40a89e231ef7 v8-3.14.5.10.tar.bz2 diff --git a/v8-2.5.9-ccflags.patch b/v8-2.5.9-ccflags.patch deleted file mode 100644 index 91c8a5b..0000000 --- a/v8-2.5.9-ccflags.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 9342a28b524c1679d6d664ed09b8db326ddbeb3e Mon Sep 17 00:00:00 2001 -From: Lubomir Rintel -Date: Sat, 4 Dec 2010 13:58:10 +0100 -Subject: [PATCH] Let environment variables override what would scons construct - -So that we can have control over CCFLAGS we use. ---- - SConstruct | 19 +++++++++++++++++-- - 1 files changed, 17 insertions(+), 2 deletions(-) - -Index: v8-3.5.1/SConstruct -=================================================================== ---- v8-3.5.1.orig/SConstruct -+++ v8-3.5.1/SConstruct -@@ -1190,6 +1190,13 @@ class BuildContext(object): - self.build_snapshot = (options['snapshot'] == 'on') - self.flags = None - -+ def OverrideFlags(self, initial, overrides): -+ result = initial.copy() -+ for key in initial.keys(): -+ if overrides.has_key(key): -+ result[key] = overrides[key]; -+ return result -+ - def AddRelevantFlags(self, initial, flags): - result = initial.copy() - toolchain = self.options['toolchain'] -@@ -1306,15 +1313,23 @@ def BuildSpecific(env, mode, env_overrid - except KeyError: - pass - -- library_flags = context.AddRelevantFlags(user_environ, LIBRARY_FLAGS) -+ library_flags = context.AddRelevantFlags({}, LIBRARY_FLAGS) - v8_flags = context.AddRelevantFlags(library_flags, V8_EXTRA_FLAGS) - mksnapshot_flags = context.AddRelevantFlags(library_flags, MKSNAPSHOT_EXTRA_FLAGS) - dtoa_flags = context.AddRelevantFlags(library_flags, DTOA_EXTRA_FLAGS) - cctest_flags = context.AddRelevantFlags(v8_flags, CCTEST_EXTRA_FLAGS) -- sample_flags = context.AddRelevantFlags(user_environ, SAMPLE_FLAGS) -- preparser_flags = context.AddRelevantFlags(user_environ, PREPARSER_FLAGS) -+ sample_flags = context.AddRelevantFlags({}, SAMPLE_FLAGS) -+ preparser_flags = context.AddRelevantFlags({}, PREPARSER_FLAGS) - d8_flags = context.AddRelevantFlags(library_flags, D8_FLAGS) - -+ library_flags = context.OverrideFlags(library_flags, user_environ) -+ v8_flags = context.OverrideFlags(v8_flags, user_environ) -+ mksnapshot_flags = context.OverrideFlags(mksnapshot_flags, user_environ) -+ dtoa_flags = context.OverrideFlags(dtoa_flags, user_environ) -+ cctest_flags = context.OverrideFlags(cctest_flags, user_environ) -+ sample_flags = context.OverrideFlags(sample_flags, user_environ) -+ d8_flags = context.OverrideFlags(d8_flags, user_environ) -+ - context.flags = { - 'v8': v8_flags, - 'mksnapshot': mksnapshot_flags, diff --git a/v8-2.5.9-shebangs.patch b/v8-2.5.9-shebangs.patch deleted file mode 100644 index a454d8a..0000000 --- a/v8-2.5.9-shebangs.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 503755a1addc229e917f837e212403e03e7bf243 Mon Sep 17 00:00:00 2001 -From: Lubomir Rintel -Date: Fri, 10 Dec 2010 16:13:42 +0100 -Subject: [PATCH] Drop shebang where they are useless - -jsmin.py is not an executable script and it infuriates rpmlint. -js2c.py is being called from a wrapper in %{_bindir} ---- - tools/js2c.py | 2 -- - tools/jsmin.py | 2 -- - 2 files changed, 0 insertions(+), 4 deletions(-) - -diff --git a/tools/js2c.py b/tools/js2c.py -index 2da132f..c0e014d 100755 ---- a/tools/js2c.py -+++ b/tools/js2c.py -@@ -1,5 +1,3 @@ --#!/usr/bin/env python --# - # Copyright 2006-2008 the V8 project authors. All rights reserved. - # Redistribution and use in source and binary forms, with or without - # modification, are permitted provided that the following conditions are -diff --git a/tools/jsmin.py b/tools/jsmin.py -index 646bf14..e2bb608 100644 ---- a/tools/jsmin.py -+++ b/tools/jsmin.py -@@ -1,5 +1,3 @@ --#!/usr/bin/python2.4 -- - # Copyright 2009 the V8 project authors. All rights reserved. - # Redistribution and use in source and binary forms, with or without - # modification, are permitted provided that the following conditions are --- -1.7.3.1 - diff --git a/v8-3.14.5.10-CVE-2013-2882.patch b/v8-3.14.5.10-CVE-2013-2882.patch deleted file mode 100644 index b14dbb5..0000000 --- a/v8-3.14.5.10-CVE-2013-2882.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 18e43f925d5d502b7531f40e4a1becba56089303 Mon Sep 17 00:00:00 2001 -From: "mstarzinger@chromium.org" -Date: Mon, 15 Jul 2013 11:41:41 +0000 -Subject: [PATCH] Use internal array as API function cache. - -R=yangguo@chromium.org -BUG=chromium:260106 -TEST=cctest/test-api/Regress260106 - -Review URL: https://codereview.chromium.org/19159003 - -git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@15665 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 ---- - src/apinatives.js | 2 +- - test/cctest/test-api.cc | 11 +++++++++++ - 2 files changed, 12 insertions(+), 1 deletion(-) - -diff --git a/src/apinatives.js b/src/apinatives.js -index 79b41dd..adefab6 100644 ---- a/src/apinatives.js -+++ b/src/apinatives.js -@@ -37,7 +37,7 @@ function CreateDate(time) { - } - - --var kApiFunctionCache = {}; -+var kApiFunctionCache = new InternalArray(); - var functionCache = kApiFunctionCache; - - -diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc -index 728a8f7..bcd28bd 100644 ---- a/test/cctest/test-api.cc -+++ b/test/cctest/test-api.cc -@@ -17707,6 +17707,17 @@ THREADED_TEST(Regress157124) { - } - - -+THREADED_TEST(Regress260106) { -+ LocalContext context; -+ v8::HandleScope scope(context->GetIsolate()); -+ Local templ = FunctionTemplate::New(DummyCallHandler); -+ CompileRun("for (var i = 0; i < 128; i++) Object.prototype[i] = 0;"); -+ Local function = templ->GetFunction(); -+ CHECK(!function.IsEmpty()); -+ CHECK(function->IsFunction()); -+} -+ -+ - #ifndef WIN32 - class ThreadInterruptTest { - public: --- -1.8.3.1 - diff --git a/v8-3.14.5.10-CVE-2013-6640.patch b/v8-3.14.5.10-CVE-2013-6640.patch deleted file mode 100644 index 1a2a420..0000000 --- a/v8-3.14.5.10-CVE-2013-6640.patch +++ /dev/null @@ -1,316 +0,0 @@ -From 520f94a1da96b0f1fd3d0e0c0b82e4d7c1e7d58f Mon Sep 17 00:00:00 2001 -From: "T.C. Hollingsworth" -Date: Fri, 13 Dec 2013 00:45:27 -0700 -Subject: [PATCH] Limit size of dehoistable array indices - -backported from upstream r17801 ---- - src/elements-kind.cc | 30 ++++++++++++++++ - src/elements-kind.h | 2 ++ - src/hydrogen-instructions.h | 9 +++++ - src/hydrogen.cc | 2 +- - src/lithium.cc | 30 ---------------- - src/lithium.h | 3 -- - test/mjsunit/regress/regress-crbug-319835.js | 51 ++++++++++++++++++++++++++++ - test/mjsunit/regress/regress-crbug-319860.js | 47 +++++++++++++++++++++++++ - 8 files changed, 140 insertions(+), 34 deletions(-) - create mode 100644 test/mjsunit/regress/regress-crbug-319835.js - create mode 100644 test/mjsunit/regress/regress-crbug-319860.js - -diff --git a/src/elements-kind.cc b/src/elements-kind.cc -index 655a23b..c93a602 100644 ---- a/src/elements-kind.cc -+++ b/src/elements-kind.cc -@@ -35,6 +35,36 @@ namespace v8 { - namespace internal { - - -+int ElementsKindToShiftSize(ElementsKind elements_kind) { -+ switch (elements_kind) { -+ case EXTERNAL_BYTE_ELEMENTS: -+ case EXTERNAL_PIXEL_ELEMENTS: -+ case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: -+ return 0; -+ case EXTERNAL_SHORT_ELEMENTS: -+ case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: -+ return 1; -+ case EXTERNAL_INT_ELEMENTS: -+ case EXTERNAL_UNSIGNED_INT_ELEMENTS: -+ case EXTERNAL_FLOAT_ELEMENTS: -+ return 2; -+ case EXTERNAL_DOUBLE_ELEMENTS: -+ case FAST_DOUBLE_ELEMENTS: -+ case FAST_HOLEY_DOUBLE_ELEMENTS: -+ return 3; -+ case FAST_SMI_ELEMENTS: -+ case FAST_ELEMENTS: -+ case FAST_HOLEY_SMI_ELEMENTS: -+ case FAST_HOLEY_ELEMENTS: -+ case DICTIONARY_ELEMENTS: -+ case NON_STRICT_ARGUMENTS_ELEMENTS: -+ return kPointerSizeLog2; -+ } -+ UNREACHABLE(); -+ return 0; -+} -+ -+ - void PrintElementsKind(FILE* out, ElementsKind kind) { - ElementsAccessor* accessor = ElementsAccessor::ForKind(kind); - PrintF(out, "%s", accessor->name()); -diff --git a/src/elements-kind.h b/src/elements-kind.h -index 3be7711..c5d9df8 100644 ---- a/src/elements-kind.h -+++ b/src/elements-kind.h -@@ -77,6 +77,8 @@ const int kElementsKindCount = LAST_ELEMENTS_KIND - FIRST_ELEMENTS_KIND + 1; - const int kFastElementsKindCount = LAST_FAST_ELEMENTS_KIND - - FIRST_FAST_ELEMENTS_KIND + 1; - -+int ElementsKindToShiftSize(ElementsKind elements_kind); -+ - void PrintElementsKind(FILE* out, ElementsKind kind); - - ElementsKind GetInitialFastElementsKind(); -diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h -index 015212d..a1e5b97 100644 ---- a/src/hydrogen-instructions.h -+++ b/src/hydrogen-instructions.h -@@ -4240,6 +4240,7 @@ class ArrayInstructionInterface { - virtual HValue* GetKey() = 0; - virtual void SetKey(HValue* key) = 0; - virtual void SetIndexOffset(uint32_t index_offset) = 0; -+ virtual int MaxIndexOffsetBits() = 0; - virtual bool IsDehoisted() = 0; - virtual void SetDehoisted(bool is_dehoisted) = 0; - virtual ~ArrayInstructionInterface() { }; -@@ -4274,6 +4275,7 @@ class HLoadKeyedFastElement - void SetIndexOffset(uint32_t index_offset) { - bit_field_ = IndexOffsetField::update(bit_field_, index_offset); - } -+ int MaxIndexOffsetBits() { return 25; } - HValue* GetKey() { return key(); } - void SetKey(HValue* key) { SetOperandAt(1, key); } - bool IsDehoisted() { return IsDehoistedField::decode(bit_field_); } -@@ -4343,6 +4345,7 @@ class HLoadKeyedFastDoubleElement - HValue* dependency() { return OperandAt(2); } - uint32_t index_offset() { return index_offset_; } - void SetIndexOffset(uint32_t index_offset) { index_offset_ = index_offset; } -+ int MaxIndexOffsetBits() { return 25; } - HValue* GetKey() { return key(); } - void SetKey(HValue* key) { SetOperandAt(1, key); } - bool IsDehoisted() { return is_dehoisted_; } -@@ -4420,6 +4423,7 @@ class HLoadKeyedSpecializedArrayElement - ElementsKind elements_kind() const { return elements_kind_; } - uint32_t index_offset() { return index_offset_; } - void SetIndexOffset(uint32_t index_offset) { index_offset_ = index_offset; } -+ int MaxIndexOffsetBits() { return 25; } - HValue* GetKey() { return key(); } - void SetKey(HValue* key) { SetOperandAt(1, key); } - bool IsDehoisted() { return is_dehoisted_; } -@@ -4595,6 +4599,7 @@ class HStoreKeyedFastElement - } - uint32_t index_offset() { return index_offset_; } - void SetIndexOffset(uint32_t index_offset) { index_offset_ = index_offset; } -+ int MaxIndexOffsetBits() { return 25; } - HValue* GetKey() { return key(); } - void SetKey(HValue* key) { SetOperandAt(1, key); } - bool IsDehoisted() { return is_dehoisted_; } -@@ -4648,6 +4653,7 @@ class HStoreKeyedFastDoubleElement - HValue* value() { return OperandAt(2); } - uint32_t index_offset() { return index_offset_; } - void SetIndexOffset(uint32_t index_offset) { index_offset_ = index_offset; } -+ int MaxIndexOffsetBits() { return 25; } - HValue* GetKey() { return key(); } - void SetKey(HValue* key) { SetOperandAt(1, key); } - bool IsDehoisted() { return is_dehoisted_; } -@@ -4706,6 +4712,9 @@ class HStoreKeyedSpecializedArrayElement - ElementsKind elements_kind() const { return elements_kind_; } - uint32_t index_offset() { return index_offset_; } - void SetIndexOffset(uint32_t index_offset) { index_offset_ = index_offset; } -+ int MaxIndexOffsetBits() { -+ return 31 - ElementsKindToShiftSize(elements_kind_); -+ } - HValue* GetKey() { return key(); } - void SetKey(HValue* key) { SetOperandAt(1, key); } - bool IsDehoisted() { return is_dehoisted_; } -diff --git a/src/hydrogen.cc b/src/hydrogen.cc -index 8393e51..e3f79ee 100644 ---- a/src/hydrogen.cc -+++ b/src/hydrogen.cc -@@ -3737,7 +3737,7 @@ static void DehoistArrayIndex(ArrayInstructionInterface* array_operation) { - int32_t value = constant->Integer32Value() * sign; - // We limit offset values to 30 bits because we want to avoid the risk of - // overflows when the offset is added to the object header size. -- if (value >= 1 << 30 || value < 0) return; -+ if (value >= 1 << array_operation->MaxIndexOffsetBits() || value < 0) return; - array_operation->SetKey(subexpression); - if (index->HasNoUses()) { - index->DeleteAndReplaceWith(NULL); -diff --git a/src/lithium.cc b/src/lithium.cc -index eb2198d..1232bf1 100644 ---- a/src/lithium.cc -+++ b/src/lithium.cc -@@ -227,36 +227,6 @@ void LPointerMap::PrintTo(StringStream* stream) { - } - - --int ElementsKindToShiftSize(ElementsKind elements_kind) { -- switch (elements_kind) { -- case EXTERNAL_BYTE_ELEMENTS: -- case EXTERNAL_PIXEL_ELEMENTS: -- case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: -- return 0; -- case EXTERNAL_SHORT_ELEMENTS: -- case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: -- return 1; -- case EXTERNAL_INT_ELEMENTS: -- case EXTERNAL_UNSIGNED_INT_ELEMENTS: -- case EXTERNAL_FLOAT_ELEMENTS: -- return 2; -- case EXTERNAL_DOUBLE_ELEMENTS: -- case FAST_DOUBLE_ELEMENTS: -- case FAST_HOLEY_DOUBLE_ELEMENTS: -- return 3; -- case FAST_SMI_ELEMENTS: -- case FAST_ELEMENTS: -- case FAST_HOLEY_SMI_ELEMENTS: -- case FAST_HOLEY_ELEMENTS: -- case DICTIONARY_ELEMENTS: -- case NON_STRICT_ARGUMENTS_ELEMENTS: -- return kPointerSizeLog2; -- } -- UNREACHABLE(); -- return 0; --} -- -- - LLabel* LChunk::GetLabel(int block_id) const { - HBasicBlock* block = graph_->blocks()->at(block_id); - int first_instruction = block->first_instruction_index(); -diff --git a/src/lithium.h b/src/lithium.h -index 089926e..a29d9d0 100644 ---- a/src/lithium.h -+++ b/src/lithium.h -@@ -704,9 +704,6 @@ class LChunk: public ZoneObject { - }; - - --int ElementsKindToShiftSize(ElementsKind elements_kind); -- -- - } } // namespace v8::internal - - #endif // V8_LITHIUM_H_ -diff --git a/test/mjsunit/regress/regress-crbug-319835.js b/test/mjsunit/regress/regress-crbug-319835.js -new file mode 100644 -index 0000000..48f871f ---- /dev/null -+++ b/test/mjsunit/regress/regress-crbug-319835.js -@@ -0,0 +1,51 @@ -+// Copyright 2013 the V8 project authors. All rights reserved. -+// Redistribution and use in source and binary forms, with or without -+// modification, are permitted provided that the following conditions are -+// met: -+// -+// * Redistributions of source code must retain the above copyright -+// notice, this list of conditions and the following disclaimer. -+// * Redistributions in binary form must reproduce the above -+// copyright notice, this list of conditions and the following -+// disclaimer in the documentation and/or other materials provided -+// with the distribution. -+// * Neither the name of Google Inc. nor the names of its -+// contributors may be used to endorse or promote products derived -+// from this software without specific prior written permission. -+// -+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+// (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 -+ -+try {} catch(e) {} // No need to optimize the top level. -+ -+var size = 0x20000; -+var a = new Float64Array(size); -+var training = new Float64Array(10); -+function store(a, index) { -+ var offset = 0x20000000; -+ for (var i = 0; i < 1; i++) { -+ a[index + offset] = 0xcc; -+ } -+} -+ -+store(training, -0x20000000); -+store(training, -0x20000000 + 1); -+store(training, -0x20000000); -+store(training, -0x20000000 + 1); -+%OptimizeFunctionOnNextCall(store); -+ -+// Segfault maybe? -+for (var i = -0x20000000; i < -0x20000000 + size; i++) { -+ store(a, i); -+} -diff --git a/test/mjsunit/regress/regress-crbug-319860.js b/test/mjsunit/regress/regress-crbug-319860.js -new file mode 100644 -index 0000000..b81fb85 ---- /dev/null -+++ b/test/mjsunit/regress/regress-crbug-319860.js -@@ -0,0 +1,47 @@ -+// Copyright 2013 the V8 project authors. All rights reserved. -+// Redistribution and use in source and binary forms, with or without -+// modification, are permitted provided that the following conditions are -+// met: -+// -+// * Redistributions of source code must retain the above copyright -+// notice, this list of conditions and the following disclaimer. -+// * Redistributions in binary form must reproduce the above -+// copyright notice, this list of conditions and the following -+// disclaimer in the documentation and/or other materials provided -+// with the distribution. -+// * Neither the name of Google Inc. nor the names of its -+// contributors may be used to endorse or promote products derived -+// from this software without specific prior written permission. -+// -+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+// (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 -+ -+function read(a, index) { -+ var offset = 0x2000000; -+ var result; -+ for (var i = 0; i < 1; i++) { -+ result = a[index + offset]; -+ } -+ return result; -+} -+ -+var a = new Int8Array(0x2000001); -+read(a, 0); -+read(a, 0); -+%OptimizeFunctionOnNextCall(read); -+ -+// Segfault maybe? -+for (var i = 0; i > -1000000; --i) { -+ read(a, i); -+} --- -1.8.4.2 - diff --git a/v8-3.14.5.10-CVE-2013-6650.patch b/v8-3.14.5.10-CVE-2013-6650.patch deleted file mode 100644 index d44811f..0000000 --- a/v8-3.14.5.10-CVE-2013-6650.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 3928813f014d3cdaed83fefc3a454078272f114b Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hr=C4=8Dka?= -Date: Tue, 18 Feb 2014 00:23:04 +0100 -Subject: [PATCH] Backport Fix for CVE-2013-6650 Original patch - https://code.google.com/p/v8/source/detail?r=18483 - -Resolve: rhbz#1059070 ---- - src/store-buffer.cc | 2 +- - test/mjsunit/regress/regress-331444.js | 45 ++++++++++++++++++++++++++++++++++ - 2 files changed, 46 insertions(+), 1 deletion(-) - create mode 100644 test/mjsunit/regress/regress-331444.js - -diff --git a/src/store-buffer.cc b/src/store-buffer.cc -index 66488ae..b9055f8 100644 ---- a/src/store-buffer.cc -+++ b/src/store-buffer.cc -@@ -242,7 +242,7 @@ void StoreBuffer::ExemptPopularPages(int prime_sample_step, int threshold) { - containing_chunk = MemoryChunk::FromAnyPointerAddress(addr); - } - int old_counter = containing_chunk->store_buffer_counter(); -- if (old_counter == threshold) { -+ if (old_counter >= threshold) { - containing_chunk->set_scan_on_scavenge(true); - created_new_scan_on_scavenge_pages = true; - } -diff --git a/test/mjsunit/regress/regress-331444.js b/test/mjsunit/regress/regress-331444.js -new file mode 100644 -index 0000000..3df0a08 ---- /dev/null -+++ b/test/mjsunit/regress/regress-331444.js -@@ -0,0 +1,45 @@ -+// Copyright 2014 the V8 project authors. All rights reserved. -+// Redistribution and use in source and binary forms, with or without -+// modification, are permitted provided that the following conditions are -+// met: -+// -+// * Redistributions of source code must retain the above copyright -+// notice, this list of conditions and the following disclaimer. -+// * Redistributions in binary form must reproduce the above -+// copyright notice, this list of conditions and the following -+// disclaimer in the documentation and/or other materials provided -+// with the distribution. -+// * Neither the name of Google Inc. nor the names of its -+// contributors may be used to endorse or promote products derived -+// from this software without specific prior written permission. -+// -+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+// (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: --expose-gc -+ -+ -+function boom() { -+ var args = []; -+ for (var i = 0; i < 125000; i++) -+ args.push(i); -+ return Array.apply(Array, args); -+} -+var array = boom(); -+function fib(n) { -+ var f0 = 0, f1 = 1; -+ for (; n > 0; n = n - 1) { -+ f0 + f1; -+ f0 = array; -+ } -+} -+fib(12); --- -1.8.3.1 - diff --git a/v8-3.14.5.10-CVE-2013-6668-segfault.patch b/v8-3.14.5.10-CVE-2013-6668-segfault.patch deleted file mode 100644 index 8e3d600..0000000 --- a/v8-3.14.5.10-CVE-2013-6668-segfault.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 3122e0eae64c5ab494b29d0a9cadef902d93f1f9 Mon Sep 17 00:00:00 2001 -From: Fedor Indutny -Date: Fri, 22 Aug 2014 03:59:35 +0400 -Subject: [PATCH] deps: fix up v8 after fd80a3 - -fd80a31e0697d6317ce8c2d289575399f4e06d21 has introduced a segfault -during redundant boundary check elimination (#8208). - -The problem consists of two parts: - - 1. Abscense of instruction iterator in - `EliminateRedundantBoundsChecks`. It was present in recent v8, but - wasn't considered important at the time of backport. However, since - the function is changing instructions order in block, it is - important to not rely at `i->next()` at the end of the loop. - 2. Too strict ASSERT in `MoveIndexIfNecessary`. It is essentially a - backport of a45c96ab from v8's upstream. See - https://github.com/v8/v8/commit/a45c96ab for details. - -fix #8208 ---- - src/hydrogen.cc | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - -diff --git a/src/hydrogen.cc b/src/hydrogen.cc -index 50d8e49..18a6b60 100644 ---- a/src/hydrogen.cc -+++ b/src/hydrogen.cc -@@ -3546,7 +3546,11 @@ class BoundsCheckBbData: public ZoneObject { - void MoveIndexIfNecessary(HValue* index_raw, - HBoundsCheck* insert_before, - HInstruction* end_of_scan_range) { -- ASSERT(index_raw->IsAdd() || index_raw->IsSub()); -+ if (!index_raw->IsAdd() && !index_raw->IsSub()) { -+ // index_raw can be HAdd(index_base, offset), HSub(index_base, offset), -+ // or index_base directly. In the latter case, no need to move anything. -+ return; -+ } - HBinaryOperation* index = - HArithmeticBinaryOperation::cast(index_raw); - HValue* left_input = index->left(); -@@ -3581,7 +3585,6 @@ class BoundsCheckBbData: public ZoneObject { - HBoundsCheck* tighter_check) { - ASSERT(original_check->length() == tighter_check->length()); - MoveIndexIfNecessary(tighter_check->index(), original_check, tighter_check); -- original_check->ReplaceAllUsesWith(original_check->index()); - original_check->SetOperandAt(0, tighter_check->index()); - } - }; -@@ -3624,7 +3627,9 @@ void HGraph::EliminateRedundantBoundsChecks(HBasicBlock* bb, - BoundsCheckTable* table) { - BoundsCheckBbData* bb_data_list = NULL; - -- for (HInstruction* i = bb->first(); i != NULL; i = i->next()) { -+ HInstruction* next; -+ for (HInstruction* i = bb->first(); i != NULL; i = next) { -+ next = i->next(); - if (!i->IsBoundsCheck()) continue; - - HBoundsCheck* check = HBoundsCheck::cast(i); diff --git a/v8-3.14.5.10-CVE-2013-6668.patch b/v8-3.14.5.10-CVE-2013-6668.patch deleted file mode 100644 index fe5cb6d..0000000 --- a/v8-3.14.5.10-CVE-2013-6668.patch +++ /dev/null @@ -1,186 +0,0 @@ -From fd80a31e0697d6317ce8c2d289575399f4e06d21 Mon Sep 17 00:00:00 2001 -From: Fedor Indutny -Date: Thu, 14 Aug 2014 19:29:28 +0400 -Subject: [PATCH] deps: backport 5f836c from v8 upstream - -Original commit message: - - Fix Hydrogen bounds check elimination - - When combining bounds checks, they must all be moved before the first load/store - that they are guarding. - - BUG=chromium:344186 - LOG=y - R=svenpanne@chromium.org - - Review URL: https://codereview.chromium.org/172093002 - - git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@19475 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 - -fix #8070 ---- - src/hydrogen.cc | 106 +++++++++++++++++++++++------------------------- - 1 file changed, 50 insertions(+), 56 deletions(-) - -diff --git a/src/hydrogen.cc b/src/hydrogen.cc -index e3f79ee..50d8e49 100644 ---- a/src/hydrogen.cc -+++ b/src/hydrogen.cc -@@ -3487,13 +3487,7 @@ class BoundsCheckBbData: public ZoneObject { - keep_new_check = true; - upper_check_ = new_check; - } else { -- BuildOffsetAdd(upper_check_, -- &added_upper_index_, -- &added_upper_offset_, -- Key()->IndexBase(), -- new_check->index()->representation(), -- new_offset); -- upper_check_->SetOperandAt(0, added_upper_index_); -+ TightenCheck(upper_check_, new_check); - } - } else if (new_offset < lower_offset_) { - lower_offset_ = new_offset; -@@ -3501,28 +3495,27 @@ class BoundsCheckBbData: public ZoneObject { - keep_new_check = true; - lower_check_ = new_check; - } else { -- BuildOffsetAdd(lower_check_, -- &added_lower_index_, -- &added_lower_offset_, -- Key()->IndexBase(), -- new_check->index()->representation(), -- new_offset); -- lower_check_->SetOperandAt(0, added_lower_index_); -+ TightenCheck(lower_check_, new_check); - } - } else { -- ASSERT(false); -+ // Should never have called CoverCheck() in this case. -+ UNREACHABLE(); - } - - if (!keep_new_check) { - new_check->DeleteAndReplaceWith(NULL); -+ } else { -+ HBoundsCheck* first_check = new_check == lower_check_ ? upper_check_ -+ : lower_check_; -+ // The length is guaranteed to be live at first_check. -+ ASSERT(new_check->length() == first_check->length()); -+ HInstruction* old_position = new_check->next(); -+ new_check->Unlink(); -+ new_check->InsertAfter(first_check); -+ MoveIndexIfNecessary(new_check->index(), new_check, old_position); - } - } - -- void RemoveZeroOperations() { -- RemoveZeroAdd(&added_lower_index_, &added_lower_offset_); -- RemoveZeroAdd(&added_upper_index_, &added_upper_offset_); -- } -- - BoundsCheckBbData(BoundsCheckKey* key, - int32_t lower_offset, - int32_t upper_offset, -@@ -3537,10 +3530,6 @@ class BoundsCheckBbData: public ZoneObject { - basic_block_(bb), - lower_check_(lower_check), - upper_check_(upper_check), -- added_lower_index_(NULL), -- added_lower_offset_(NULL), -- added_upper_index_(NULL), -- added_upper_offset_(NULL), - next_in_bb_(next_in_bb), - father_in_dt_(father_in_dt) { } - -@@ -3551,44 +3540,50 @@ class BoundsCheckBbData: public ZoneObject { - HBasicBlock* basic_block_; - HBoundsCheck* lower_check_; - HBoundsCheck* upper_check_; -- HAdd* added_lower_index_; -- HConstant* added_lower_offset_; -- HAdd* added_upper_index_; -- HConstant* added_upper_offset_; - BoundsCheckBbData* next_in_bb_; - BoundsCheckBbData* father_in_dt_; - -- void BuildOffsetAdd(HBoundsCheck* check, -- HAdd** add, -- HConstant** constant, -- HValue* original_value, -- Representation representation, -- int32_t new_offset) { -- HConstant* new_constant = new(BasicBlock()->zone()) -- HConstant(new_offset, Representation::Integer32()); -- if (*add == NULL) { -- new_constant->InsertBefore(check); -- // Because of the bounds checks elimination algorithm, the index is always -- // an HAdd or an HSub here, so we can safely cast to an HBinaryOperation. -- HValue* context = HBinaryOperation::cast(check->index())->context(); -- *add = new(BasicBlock()->zone()) HAdd(context, -- original_value, -- new_constant); -- (*add)->AssumeRepresentation(representation); -- (*add)->InsertBefore(check); -- } else { -- new_constant->InsertBefore(*add); -- (*constant)->DeleteAndReplaceWith(new_constant); -+ void MoveIndexIfNecessary(HValue* index_raw, -+ HBoundsCheck* insert_before, -+ HInstruction* end_of_scan_range) { -+ ASSERT(index_raw->IsAdd() || index_raw->IsSub()); -+ HBinaryOperation* index = -+ HArithmeticBinaryOperation::cast(index_raw); -+ HValue* left_input = index->left(); -+ HValue* right_input = index->right(); -+ bool must_move_index = false; -+ bool must_move_left_input = false; -+ bool must_move_right_input = false; -+ for (HInstruction* cursor = end_of_scan_range; cursor != insert_before;) { -+ if (cursor == left_input) must_move_left_input = true; -+ if (cursor == right_input) must_move_right_input = true; -+ if (cursor == index) must_move_index = true; -+ if (cursor->previous() == NULL) { -+ cursor = cursor->block()->dominator()->end(); -+ } else { -+ cursor = cursor->previous(); -+ } - } -- *constant = new_constant; -- } - -- void RemoveZeroAdd(HAdd** add, HConstant** constant) { -- if (*add != NULL && (*constant)->Integer32Value() == 0) { -- (*add)->DeleteAndReplaceWith((*add)->left()); -- (*constant)->DeleteAndReplaceWith(NULL); -+ // The BCE algorithm only selects mergeable bounds checks that share -+ // the same "index_base", so we'll only ever have to move constants. -+ if (must_move_left_input) { -+ HConstant::cast(left_input)->Unlink(); -+ HConstant::cast(left_input)->InsertBefore(index); -+ } -+ if (must_move_right_input) { -+ HConstant::cast(right_input)->Unlink(); -+ HConstant::cast(right_input)->InsertBefore(index); - } - } -+ -+ void TightenCheck(HBoundsCheck* original_check, -+ HBoundsCheck* tighter_check) { -+ ASSERT(original_check->length() == tighter_check->length()); -+ MoveIndexIfNecessary(tighter_check->index(), original_check, tighter_check); -+ original_check->ReplaceAllUsesWith(original_check->index()); -+ original_check->SetOperandAt(0, tighter_check->index()); -+ } - }; - - -@@ -3683,7 +3678,6 @@ void HGraph::EliminateRedundantBoundsChecks(HBasicBlock* bb, - for (BoundsCheckBbData* data = bb_data_list; - data != NULL; - data = data->NextInBasicBlock()) { -- data->RemoveZeroOperations(); - if (data->FatherInDominatorTree()) { - table->Insert(data->Key(), data->FatherInDominatorTree(), zone()); - } else { diff --git a/v8-3.14.5.10-CVE-2014-1704-1.patch b/v8-3.14.5.10-CVE-2014-1704-1.patch deleted file mode 100644 index 2df5230..0000000 --- a/v8-3.14.5.10-CVE-2014-1704-1.patch +++ /dev/null @@ -1,77 +0,0 @@ -From bf973073d98660edf35e01e6984029e46eb85368 Mon Sep 17 00:00:00 2001 -From: "dslomov@chromium.org" - -Date: Mon, 13 Jan 2014 13:00:09 +0000 -Subject: [PATCH] Use unsigned integer arithmetic in Zone::NewExpand. - - BUG=328202 - R=jkummerow@chromium.org - LOG=N - - Review URL: https://codereview.chromium.org/108783005 - - git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@18564 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 ---- - src/zone.cc | 29 +++++++++++++++++++---------- - 1 file changed, 19 insertions(+), 10 deletions(-) - -diff --git a/src/zone.cc b/src/zone.cc -index 51b8113..c12978f 100644 ---- a/src/zone.cc -+++ b/src/zone.cc -@@ -175,25 +175,31 @@ Address Zone::NewExpand(int size) { - // except that we employ a maximum segment size when we delete. This - // is to avoid excessive malloc() and free() overhead. - Segment* head = segment_head_; -- int old_size = (head == NULL) ? 0 : head->size(); -- static const int kSegmentOverhead = sizeof(Segment) + kAlignment; -- int new_size_no_overhead = size + (old_size << 1); -- int new_size = kSegmentOverhead + new_size_no_overhead; -+ const size_t old_size = (head == NULL) ? 0 : head->size(); -+ static const size_t kSegmentOverhead = sizeof(Segment) + kAlignment; -+ const size_t new_size_no_overhead = size + (old_size << 1); -+ size_t new_size = kSegmentOverhead + new_size_no_overhead; -+ const size_t min_new_size = kSegmentOverhead + static_cast(size); - // Guard against integer overflow. -- if (new_size_no_overhead < size || new_size < kSegmentOverhead) { -+ if (new_size_no_overhead < static_cast(size) || -+ new_size < static_cast(kSegmentOverhead)) { - V8::FatalProcessOutOfMemory("Zone"); - return NULL; - } -- if (new_size < kMinimumSegmentSize) { -+ if (new_size < static_cast(kMinimumSegmentSize)) { - new_size = kMinimumSegmentSize; -- } else if (new_size > kMaximumSegmentSize) { -+ } else if (new_size > static_cast(kMaximumSegmentSize)) { - // Limit the size of new segments to avoid growing the segment size - // exponentially, thus putting pressure on contiguous virtual address space. - // All the while making sure to allocate a segment large enough to hold the - // requested size. -- new_size = Max(kSegmentOverhead + size, kMaximumSegmentSize); -+ new_size = Max(min_new_size, static_cast(kMaximumSegmentSize)); - } -- Segment* segment = NewSegment(new_size); -+ if (new_size > INT_MAX) { -+ V8::FatalProcessOutOfMemory("Zone"); -+ return NULL; -+ } -+ Segment* segment = NewSegment(static_cast(new_size)); - if (segment == NULL) { - V8::FatalProcessOutOfMemory("Zone"); - return NULL; -@@ -203,7 +209,10 @@ Address Zone::NewExpand(int size) { - Address result = RoundUp(segment->start(), kAlignment); - position_ = result + size; - // Check for address overflow. -- if (position_ < result) { -+ // (Should not happen since the segment is guaranteed to accomodate -+ // size bytes + header and alignment padding) -+ if (reinterpret_cast(position_) -+ < reinterpret_cast(result)) { - V8::FatalProcessOutOfMemory("Zone"); - return NULL; - } --- -1.8.5.3 - diff --git a/v8-3.14.5.10-abort-uncaught-exception.patch b/v8-3.14.5.10-abort-uncaught-exception.patch deleted file mode 100644 index b2f2a08..0000000 --- a/v8-3.14.5.10-abort-uncaught-exception.patch +++ /dev/null @@ -1,139 +0,0 @@ -From fbff7054a47551387a99244e2cf0631f30406798 Mon Sep 17 00:00:00 2001 -From: Trevor Norris -Date: Tue, 18 Nov 2014 16:37:54 -0800 -Subject: [PATCH] v8: add api for aborting on uncaught exception - -Add v8::Isolate::SetAbortOnUncaughtException() so the user can be -notified when an uncaught exception has bubbled. - -PR-URL: https://github.com/joyent/node/pull/8666 -Reviewed-by: Trevor Norris ---- - include/v8.h | 11 +++++++++++ - src/api.cc | 5 +++++ - src/isolate.cc | 33 +++++++++++++++++++++++---------- - src/isolate.h | 5 +++++ - 4 files changed, 44 insertions(+), 10 deletions(-) - -diff --git a/include/v8.h b/include/v8.h -index 71a0d01..e229ed9 100644 ---- a/include/v8.h -+++ b/include/v8.h -@@ -2842,6 +2842,17 @@ class V8EXPORT Isolate { - static Isolate* GetCurrent(); - - /** -+ * Custom callback used by embedders to help V8 determine if it should abort -+ * when it throws and no internal handler can catch the exception. -+ * If FLAG_abort_on_uncaught_exception is true, then V8 will abort if either: -+ * - no custom callback is set. -+ * - the custom callback set returns true. -+ * Otherwise it won't abort. -+ */ -+ typedef bool (*abort_on_uncaught_exception_t)(); -+ void SetAbortOnUncaughtException(abort_on_uncaught_exception_t callback); -+ -+ /** - * Methods below this point require holding a lock (using Locker) in - * a multi-threaded environment. - */ -diff --git a/src/api.cc b/src/api.cc -index 96d564f..4b1aa67 100644 ---- a/src/api.cc -+++ b/src/api.cc -@@ -5550,6 +5550,11 @@ void Isolate::Enter() { - isolate->Enter(); - } - -+void Isolate::SetAbortOnUncaughtException( -+ abort_on_uncaught_exception_t callback) { -+ i::Isolate* isolate = reinterpret_cast(this); -+ isolate->SetAbortOnUncaughtException(callback); -+} - - void Isolate::Exit() { - i::Isolate* isolate = reinterpret_cast(this); -diff --git a/src/isolate.cc b/src/isolate.cc -index 5a5293e..0b38616 100644 ---- a/src/isolate.cc -+++ b/src/isolate.cc -@@ -1152,18 +1152,26 @@ void Isolate::DoThrow(Object* exception, MessageLocation* location) { - thread_local_top()->pending_message_end_pos_ = location->end_pos(); - } - -- // If the abort-on-uncaught-exception flag is specified, abort on any -- // exception not caught by JavaScript, even when an external handler is -- // present. This flag is intended for use by JavaScript developers, so -- // print a user-friendly stack trace (not an internal one). -+ // If the abort-on-uncaught-exception flag is specified, and if the -+ // exception is not caught by JavaScript (even when an external handler is -+ // present). - if (fatal_exception_depth == 0 && - FLAG_abort_on_uncaught_exception && - (report_exception || can_be_caught_externally)) { -- fatal_exception_depth++; -- fprintf(stderr, "%s\n\nFROM\n", -- *MessageHandler::GetLocalizedMessage(message_obj)); -- PrintCurrentStackTrace(stderr); -- OS::Abort(); -+ // If the embedder didn't specify a custom uncaught exception callback, -+ // or if the custom callback determined that V8 should abort, then -+ // abort -+ bool should_abort = !abort_on_uncaught_exception_callback_ || -+ abort_on_uncaught_exception_callback_(); -+ if (should_abort) { -+ fatal_exception_depth++; -+ // This flag is intended for use by JavaScript developers, so -+ // print a user-friendly stack trace (not an internal one). -+ fprintf(stderr, "%s\n\nFROM\n", -+ *MessageHandler::GetLocalizedMessage(message_obj)); -+ PrintCurrentStackTrace(stderr); -+ OS::Abort(); -+ } - } - } else if (location != NULL && !location->script().is_null()) { - // We are bootstrapping and caught an error where the location is set -@@ -1339,6 +1347,10 @@ void Isolate::SetCaptureStackTraceForUncaughtExceptions( - stack_trace_for_uncaught_exceptions_options_ = options; - } - -+void Isolate::SetAbortOnUncaughtException( -+ v8::Isolate::abort_on_uncaught_exception_t callback) { -+ abort_on_uncaught_exception_callback_ = callback; -+} - - bool Isolate::is_out_of_memory() { - if (has_pending_exception()) { -@@ -1534,7 +1546,8 @@ Isolate::Isolate() - date_cache_(NULL), - context_exit_happened_(false), - deferred_handles_head_(NULL), -- optimizing_compiler_thread_(this) { -+ optimizing_compiler_thread_(this), -+ abort_on_uncaught_exception_callback_(NULL) { - TRACE_ISOLATE(constructor); - - memset(isolate_addresses_, 0, -diff --git a/src/isolate.h b/src/isolate.h -index 2769ca7..8719aa1 100644 ---- a/src/isolate.h -+++ b/src/isolate.h -@@ -692,6 +692,9 @@ class Isolate { - int frame_limit, - StackTrace::StackTraceOptions options); - -+ typedef bool (*abort_on_uncaught_exception_t)(); -+ void SetAbortOnUncaughtException(abort_on_uncaught_exception_t callback); -+ - // Tells whether the current context has experienced an out of memory - // exception. - bool is_out_of_memory(); -@@ -1292,6 +1295,8 @@ class Isolate { - DeferredHandles* deferred_handles_head_; - OptimizingCompilerThread optimizing_compiler_thread_; - -+ abort_on_uncaught_exception_t abort_on_uncaught_exception_callback_; -+ - friend class ExecutionAccess; - friend class HandleScopeImplementer; - friend class IsolateInitializer; diff --git a/v8-3.14.5.10-busy-loop.patch b/v8-3.14.5.10-busy-loop.patch deleted file mode 100644 index fcc906c..0000000 --- a/v8-3.14.5.10-busy-loop.patch +++ /dev/null @@ -1,137 +0,0 @@ -From 6ebd85e10535dfaa9181842fe73834e51d4d3e6c Mon Sep 17 00:00:00 2001 -From: Ben Noordhuis -Date: Thu, 27 Nov 2014 07:15:54 +0100 -Subject: [PATCH] v8: don't busy loop in cpu profiler thread - -Reduce the overhead of the CPU profiler by replacing sched_yield() with -nanosleep() in V8's tick event processor thread. The former only yields -the CPU when there is another process scheduled on the same CPU. - -Before this commit, the thread would effectively busy loop and consume -100% CPU time. By forcing a one nanosecond sleep period rounded up to -the task scheduler's granularity (about 50 us on Linux), CPU usage for -the processor thread now hovers around 10-20% for a busy application. - -PR-URL: https://github.com/joyent/node/pull/8789 -Ref: https://github.com/strongloop/strong-agent/issues/3 -Reviewed-by: Trevor Norris ---- - src/platform-freebsd.cc | 5 ----- - src/platform-linux.cc | 5 ----- - src/platform-macos.cc | 5 ----- - src/platform-openbsd.cc | 5 ----- - src/platform-posix.cc | 6 ++++++ - src/platform-solaris.cc | 5 ----- - tools/gyp/v8.gyp | 2 +- - 7 files changed, 7 insertions(+), 26 deletions(-) - -diff --git a/src/platform-freebsd.cc b/src/platform-freebsd.cc -index 511759c..5c90c6b 100644 ---- a/src/platform-freebsd.cc -+++ b/src/platform-freebsd.cc -@@ -539,11 +539,6 @@ void Thread::SetThreadLocal(LocalStorageKey key, void* value) { - } - - --void Thread::YieldCPU() { -- sched_yield(); --} -- -- - class FreeBSDMutex : public Mutex { - public: - FreeBSDMutex() { -diff --git a/src/platform-linux.cc b/src/platform-linux.cc -index beb2cce..3d6b304 100644 ---- a/src/platform-linux.cc -+++ b/src/platform-linux.cc -@@ -812,11 +812,6 @@ void Thread::SetThreadLocal(LocalStorageKey key, void* value) { - } - - --void Thread::YieldCPU() { -- sched_yield(); --} -- -- - class LinuxMutex : public Mutex { - public: - LinuxMutex() { -diff --git a/src/platform-macos.cc b/src/platform-macos.cc -index a216f6e..e54e3e4 100644 ---- a/src/platform-macos.cc -+++ b/src/platform-macos.cc -@@ -640,11 +640,6 @@ void Thread::SetThreadLocal(LocalStorageKey key, void* value) { - } - - --void Thread::YieldCPU() { -- sched_yield(); --} -- -- - class MacOSMutex : public Mutex { - public: - MacOSMutex() { -diff --git a/src/platform-openbsd.cc b/src/platform-openbsd.cc -index 408d4dc..72167de 100644 ---- a/src/platform-openbsd.cc -+++ b/src/platform-openbsd.cc -@@ -593,11 +593,6 @@ void Thread::SetThreadLocal(LocalStorageKey key, void* value) { - } - - --void Thread::YieldCPU() { -- sched_yield(); --} -- -- - class OpenBSDMutex : public Mutex { - public: - OpenBSDMutex() { -diff --git a/src/platform-posix.cc b/src/platform-posix.cc -index 5c3529d..8aecd56 100644 ---- a/src/platform-posix.cc -+++ b/src/platform-posix.cc -@@ -392,6 +392,12 @@ void OS::StrNCpy(Vector dest, const char* src, size_t n) { - } - - -+void Thread::YieldCPU() { -+ const timespec delay = { 0, 1 }; -+ nanosleep(&delay, NULL); -+} -+ -+ - // ---------------------------------------------------------------------------- - // POSIX socket support. - // -diff --git a/src/platform-solaris.cc b/src/platform-solaris.cc -index 07718fe..4e95ecc 100644 ---- a/src/platform-solaris.cc -+++ b/src/platform-solaris.cc -@@ -527,11 +527,6 @@ void Thread::SetThreadLocal(LocalStorageKey key, void* value) { - } - - --void Thread::YieldCPU() { -- sched_yield(); --} -- -- - class SolarisMutex : public Mutex { - public: - SolarisMutex() { -diff --git a/tools/gyp/v8.gyp b/tools/gyp/v8.gyp -index 71cf366..c304925 100644 ---- a/tools/gyp/v8.gyp -+++ b/tools/gyp/v8.gyp -@@ -715,7 +715,7 @@ - ['OS=="solaris"', { - 'link_settings': { - 'libraries': [ -- '-lsocket -lnsl', -+ '-lsocket -lnsl -lrt', - ]}, - 'sources': [ - '../../src/platform-solaris.cc', diff --git a/v8-3.14.5.10-enumeration.patch b/v8-3.14.5.10-enumeration.patch deleted file mode 100644 index 4dea2a5..0000000 --- a/v8-3.14.5.10-enumeration.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 196184d332ba2d2defc56ad0b37653659a7d3ec0 Mon Sep 17 00:00:00 2001 -From: "svenpanne@chromium.org" -Date: Fri, 9 Nov 2012 11:30:05 +0000 -Subject: [PATCH] v8: backport codereview.chromium.org/11362182 - -Keep the number of descriptors below -DescriptorArray::kMaxNumberOfDescriptors even for accessors - -Review URL: https://codereview.chromium.org/11362182 ---- - src/objects.cc | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/objects.cc b/src/objects.cc ---- a/src/objects.cc -+++ b/src/objects.cc -@@ -4453,7 +4453,9 @@ MaybeObject* JSObject::DefinePropertyAccessor(String* name, - // to do a lookup, which seems to be a bit of overkill. - Heap* heap = GetHeap(); - bool only_attribute_changes = getter->IsNull() && setter->IsNull(); -- if (HasFastProperties() && !only_attribute_changes) { -+ if (HasFastProperties() && !only_attribute_changes && -+ (map()->NumberOfOwnDescriptors() < -+ DescriptorArray::kMaxNumberOfDescriptors)) { - MaybeObject* getterOk = heap->undefined_value(); - if (!getter->IsNull()) { - getterOk = DefineFastAccessor(name, ACCESSOR_GETTER, getter, attributes); --- -1.8.5.1 - diff --git a/v8-3.14.5.10-interrupts-stack-overflow.patch b/v8-3.14.5.10-interrupts-stack-overflow.patch deleted file mode 100644 index 049b4df..0000000 --- a/v8-3.14.5.10-interrupts-stack-overflow.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 530af9cb8e700e7596b3ec812bad123c9fa06356 Mon Sep 17 00:00:00 2001 -From: Fedor Indutny -Date: Wed, 30 Jul 2014 15:33:52 -0700 -Subject: [PATCH] v8: Interrupts must not mask stack overflow. - -Backport of https://codereview.chromium.org/339883002 ---- - src/isolate.h | 9 ++------- - 1 file changed, 2 insertions(+), 7 deletions(-) - -diff --git a/src/isolate.h b/src/isolate.h -index b90191d..2769ca7 100644 ---- a/src/isolate.h -+++ b/src/isolate.h -@@ -1392,14 +1392,9 @@ class StackLimitCheck BASE_EMBEDDED { - public: - explicit StackLimitCheck(Isolate* isolate) : isolate_(isolate) { } - -- bool HasOverflowed() const { -+ inline bool HasOverflowed() const { - StackGuard* stack_guard = isolate_->stack_guard(); -- // Stack has overflowed in C++ code only if stack pointer exceeds the C++ -- // stack guard and the limits are not set to interrupt values. -- // TODO(214): Stack overflows are ignored if a interrupt is pending. This -- // code should probably always use the initial C++ limit. -- return (reinterpret_cast(this) < stack_guard->climit()) && -- stack_guard->IsStackOverflow(); -+ return reinterpret_cast(this) < stack_guard->real_climit(); - } - private: - Isolate* isolate_; diff --git a/v8-3.14.5.10-mem-corruption-stack-overflow.patch b/v8-3.14.5.10-mem-corruption-stack-overflow.patch deleted file mode 100644 index 452464b..0000000 --- a/v8-3.14.5.10-mem-corruption-stack-overflow.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 530af9cb8e700e7596b3ec812bad123c9fa06356 Mon Sep 17 00:00:00 2001 -From: Fedor Indutny -Date: Wed, 30 Jul 2014 15:33:52 -0700 -Subject: [PATCH] v8: Interrupts must not mask stack overflow. - -Backport of https://codereview.chromium.org/339883002 ---- - src/isolate.h | 9 ++------- - 1 file changed, 2 insertions(+), 7 deletions(-) - -diff --git a/src/isolate.h b/src/isolate.h -index b90191d..2769ca7 100644 ---- a/src/isolate.h -+++ b/src/isolate.h -@@ -1392,14 +1392,9 @@ class StackLimitCheck BASE_EMBEDDED { - public: - explicit StackLimitCheck(Isolate* isolate) : isolate_(isolate) { } - -- bool HasOverflowed() const { -+ inline bool HasOverflowed() const { - StackGuard* stack_guard = isolate_->stack_guard(); -- // Stack has overflowed in C++ code only if stack pointer exceeds the C++ -- // stack guard and the limits are not set to interrupt values. -- // TODO(214): Stack overflows are ignored if a interrupt is pending. This -- // code should probably always use the initial C++ limit. -- return (reinterpret_cast(this) < stack_guard->climit()) && -- stack_guard->IsStackOverflow(); -+ return reinterpret_cast(this) < stack_guard->real_climit(); - } - private: - Isolate* isolate_; --- -2.0.3 diff --git a/v8-3.14.5.10-profiler-log.patch b/v8-3.14.5.10-profiler-log.patch deleted file mode 100644 index 2530e54..0000000 --- a/v8-3.14.5.10-profiler-log.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 431eb172f97434a3b0868a610bc14d8ff7d9efd9 Mon Sep 17 00:00:00 2001 -From: Ben Noordhuis -Date: Fri, 16 Jan 2015 13:44:42 +0100 -Subject: [PATCH] deps: log V8 version in profiler log file - -Patch from issue 800293002 authored by ben@strongloop.com - -Review URL: https://codereview.chromium.org/806143002 - -PR-URL: https://github.com/joyent/node/pull/9043 -Reviewed-by: Trevor Norris -Reviewed-By: Timothy J Fontaine ---- - src/log-utils.cc | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/src/log-utils.cc b/src/log-utils.cc -index 5e607da..622cc51 100644 ---- a/src/log-utils.cc -+++ b/src/log-utils.cc -@@ -29,6 +29,7 @@ - - #include "log-utils.h" - #include "string-stream.h" -+#include "version.h" - - namespace v8 { - namespace internal { -@@ -136,6 +137,14 @@ void Log::Initialize() { - } - } - } -+ -+ if (output_handle_ != NULL) { -+ LogMessageBuilder msg(logger_); -+ msg.Append("v8-version,%d,%d,%d,%d,%d\n", Version::GetMajor(), -+ Version::GetMinor(), Version::GetBuild(), Version::GetPatch(), -+ Version::IsCandidate()); -+ msg.WriteToLogFile(); -+ } - } - - diff --git a/v8-3.14.5.10-system-valgrind.patch b/v8-3.14.5.10-system-valgrind.patch deleted file mode 100644 index 1e5b0cb..0000000 --- a/v8-3.14.5.10-system-valgrind.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff -up v8-3.14.5.10/src/ia32/cpu-ia32.cc.system-valgrind v8-3.14.5.10/src/ia32/cpu-ia32.cc ---- v8-3.14.5.10/src/ia32/cpu-ia32.cc.system-valgrind 2012-01-16 06:42:08.000000000 -0500 -+++ v8-3.14.5.10/src/ia32/cpu-ia32.cc 2014-12-02 15:15:07.819525430 -0500 -@@ -28,7 +28,7 @@ - // CPU specific code for ia32 independent of OS goes here. - - #ifdef __GNUC__ --#include "third_party/valgrind/valgrind.h" -+#include - #endif - - #include "v8.h" -@@ -67,8 +67,7 @@ void CPU::FlushICache(void* start, size_ - // solution is to run valgrind with --smc-check=all, but this comes at a big - // performance cost. We can notify valgrind to invalidate its cache. - #ifdef VALGRIND_DISCARD_TRANSLATIONS -- unsigned res = VALGRIND_DISCARD_TRANSLATIONS(start, size); -- USE(res); -+ VALGRIND_DISCARD_TRANSLATIONS(start, size); - #endif - } - -diff -up v8-3.14.5.10/src/x64/cpu-x64.cc.system-valgrind v8-3.14.5.10/src/x64/cpu-x64.cc ---- v8-3.14.5.10/src/x64/cpu-x64.cc.system-valgrind 2012-02-23 03:45:21.000000000 -0500 -+++ v8-3.14.5.10/src/x64/cpu-x64.cc 2014-12-02 15:14:51.289621074 -0500 -@@ -28,7 +28,7 @@ - // CPU specific code for x64 independent of OS goes here. - - #if defined(__GNUC__) && !defined(__MINGW64__) --#include "third_party/valgrind/valgrind.h" -+#include - #endif - - #include "v8.h" -@@ -67,8 +67,7 @@ void CPU::FlushICache(void* start, size_ - // solution is to run valgrind with --smc-check=all, but this comes at a big - // performance cost. We can notify valgrind to invalidate its cache. - #ifdef VALGRIND_DISCARD_TRANSLATIONS -- unsigned res = VALGRIND_DISCARD_TRANSLATIONS(start, size); -- USE(res); -+ VALGRIND_DISCARD_TRANSLATIONS(start, size); - #endif - } - diff --git a/v8-3.14.5.10-unhandled-ReferenceError.patch b/v8-3.14.5.10-unhandled-ReferenceError.patch deleted file mode 100644 index 7762fa8..0000000 --- a/v8-3.14.5.10-unhandled-ReferenceError.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 0ff51c6e063e3eea9e4d9ea68edc82d935626fc7 Mon Sep 17 00:00:00 2001 -From: Julien Gilli -Date: Fri, 28 Nov 2014 15:33:35 -0800 -Subject: [PATCH] deps: backport 2ad2237 from v8 upstream - -Original commit message: - -Fix Unhandled ReferenceError in debug-debugger.js - -This fixes following exception in Sky on attempt to set a breakpoint -"Unhandled: Uncaught ReferenceError: break_point is not defined" -I think this happens in Sky but not in Chrome because Sky scripts are executed in strict mode. - -BUG=None -LOG=N -R=yangguo@chromium.org - -Review URL: https://codereview.chromium.org/741683002 - -Cr-Commit-Position: refs/heads/master@{#25415} ---- - src/debug-debugger.js | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/debug-debugger.js b/src/debug-debugger.js -index dfad902..a27961f 100644 ---- a/src/debug-debugger.js -+++ b/src/debug-debugger.js -@@ -442,7 +442,7 @@ ScriptBreakPoint.prototype.set = function (script) { - if (position === null) return; - - // Create a break point object and set the break point. -- break_point = MakeBreakPoint(position, this); -+ var break_point = MakeBreakPoint(position, this); - break_point.setIgnoreCount(this.ignoreCount()); - var actual_position = %SetScriptBreakPoint(script, position, break_point); - if (IS_UNDEFINED(actual_position)) { diff --git a/v8-3.14.5.10-unused-local-typedefs.patch b/v8-3.14.5.10-unused-local-typedefs.patch deleted file mode 100644 index c168875..0000000 --- a/v8-3.14.5.10-unused-local-typedefs.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 53b4accb6e5747b156be91a2b90f42607e33a7cc Mon Sep 17 00:00:00 2001 -From: Timothy J Fontaine -Date: Mon, 4 Aug 2014 13:43:50 -0700 -Subject: [PATCH] v8: Fix compliation with GCC 4.8 - -Supresses a very loud warning from GCC 4.8 about unused typedefs - -Original url https://codereview.chromium.org/69413002 ---- - src/checks.h | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/src/checks.h b/src/checks.h -index d0a0c2b..4396ada 100644 ---- a/src/checks.h -+++ b/src/checks.h -@@ -230,6 +230,13 @@ inline void CheckNonEqualsHelper(const char* file, - #define CHECK_LE(a, b) CHECK((a) <= (b)) - - -+#if defined(__clang__) || defined(__GNUC__) -+# define V8_UNUSED __attribute__((unused)) -+#else -+# define V8_UNUSED -+#endif -+ -+ - // This is inspired by the static assertion facility in boost. This - // is pretty magical. If it causes you trouble on a platform you may - // find a fix in the boost code. -@@ -248,7 +255,7 @@ template class StaticAssertionHelper { }; - #define STATIC_CHECK(test) \ - typedef \ - StaticAssertionHelper((test))>)> \ -- SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) -+ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) V8_UNUSED - - - extern bool FLAG_enable_slow_asserts; diff --git a/v8-3.14.5.10-use-clock_gettime.patch b/v8-3.14.5.10-use-clock_gettime.patch deleted file mode 100644 index cb25591..0000000 --- a/v8-3.14.5.10-use-clock_gettime.patch +++ /dev/null @@ -1,122 +0,0 @@ -From f9ced08de30c37838756e8227bd091f80ad9cafa Mon Sep 17 00:00:00 2001 -From: Ben Noordhuis -Date: Thu, 24 Apr 2014 04:27:40 +0200 -Subject: [PATCH] deps: make v8 use CLOCK_REALTIME_COARSE - -Date.now() indirectly calls gettimeofday() on Linux and that's a system -call that is extremely expensive on virtualized systems when the host -operating system has to emulate access to the hardware clock. - -Case in point: output from `perf record -c 10000 -e cycles:u -g -i` -for a benchmark/http_simple bytes/8 benchmark with a light load of -50 concurrent clients: - - 53.69% node node [.] v8::internal::OS::TimeCurrentMillis() - | - --- v8::internal::OS::TimeCurrentMillis() - | - |--99.77%-- v8::internal::Runtime_DateCurrentTime(v8::internal::Arguments, v8::internal::Isolate*) - | 0x23587880618e - -That's right - over half of user time spent inside the V8 function that -calls gettimeofday(). - -Notably, nearly all system time gets attributed to acpi_pm_read(), the -kernel function that reads the ACPI power management timer: - - 32.49% node [kernel.kallsyms] [k] acpi_pm_read - | - --- acpi_pm_read - | - |--98.40%-- __getnstimeofday - | getnstimeofday - | | - | |--71.61%-- do_gettimeofday - | | sys_gettimeofday - | | system_call_fastpath - | | 0x7fffbbaf6dbc - | | | - | | |--98.72%-- v8::internal::OS::TimeCurrentMillis() - -The cost of the gettimeofday() system call is normally measured in -nanoseconds but we were seeing 100 us averages and spikes >= 1000 us. -The numbers were so bad, my initial hunch was that the node process was -continuously getting rescheduled inside the system call... - -v8::internal::OS::TimeCurrentMillis()'s most frequent caller is -v8::internal::Runtime_DateCurrentTime(), the V8 run-time function -that's behind Date.now(). The timeout handling logic in lib/http.js -and lib/net.js calls into lib/timers.js and that module will happily -call Date.now() hundreds or even thousands of times per second. -If you saw exports._unrefActive() show up in --prof output a lot, -now you know why. - -That's why this commit makes V8 switch over to clock_gettime() on Linux. -In particular, it checks if CLOCK_REALTIME_COARSE is available and has -a resolution <= 1 ms because in that case the clock_gettime() call can -be fully serviced from the vDSO. - -It speeds up the aforementioned benchmark by about 100% on the affected -systems and should go a long way toward addressing the latency issues -that StrongLoop customers have been reporting. - -This patch will be upstreamed as a CR against V8 3.26. I'm sending it -as a pull request for v0.10 first because that's what our users are -running and because the delta between 3.26 and 3.14 is too big to -reasonably back-port the patch. I'll open a pull request for the -master branch once the CR lands upstream. - -Signed-off-by: Trevor Norris -Signed-off-by: Fedor Indutny ---- - src/platform-posix.cc | 26 ++++++++++++++++++++++---- - 1 file changed, 22 insertions(+), 4 deletions(-) - -diff --git a/src/platform-posix.cc b/src/platform-posix.cc -index ad74eba..3c86868 100644 ---- a/src/platform-posix.cc -+++ b/src/platform-posix.cc -@@ -188,19 +188,37 @@ int OS::GetUserTime(uint32_t* secs, uint32_t* usecs) { - - - double OS::TimeCurrentMillis() { -- struct timeval tv; -- if (gettimeofday(&tv, NULL) < 0) return 0.0; -- return (static_cast(tv.tv_sec) * 1000) + -- (static_cast(tv.tv_usec) / 1000); -+ return static_cast(Ticks()) / 1000; - } - - - int64_t OS::Ticks() { -+#if defined(__linux__) -+ static clockid_t clock_id = static_cast(-1); -+ struct timespec spec; -+ if (clock_id == static_cast(-1)) { -+ // CLOCK_REALTIME_COARSE may not be defined by the system headers but -+ // might still be supported by the kernel so use the clock id directly. -+ // Only use CLOCK_REALTIME_COARSE when its granularity <= 1 ms. -+ const clockid_t clock_realtime_coarse = 5; -+ if (clock_getres(clock_realtime_coarse, &spec) == 0 && -+ spec.tv_nsec <= 1000 * 1000) { -+ clock_id = clock_realtime_coarse; -+ } else { -+ clock_id = CLOCK_REALTIME; -+ } -+ } -+ if (clock_gettime(clock_id, &spec) != 0) { -+ return 0; // Not really possible. -+ } -+ return static_cast(spec.tv_sec) * 1000000 + (spec.tv_nsec / 1000); -+#else - // gettimeofday has microsecond resolution. - struct timeval tv; - if (gettimeofday(&tv, NULL) < 0) - return 0; - return (static_cast(tv.tv_sec) * 1000000) + tv.tv_usec; -+#endif - } - - --- -1.9.1 diff --git a/v8-3.14.5.10-x64-MathMinMax.patch b/v8-3.14.5.10-x64-MathMinMax.patch deleted file mode 100644 index e7b167d..0000000 --- a/v8-3.14.5.10-x64-MathMinMax.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 3530fa9cd09f8db8101c4649cab03bcdf760c434 Mon Sep 17 00:00:00 2001 -From: Fedor Indutny -Date: Fri, 21 Dec 2012 17:52:00 +0000 -Subject: [PATCH] deps: backport 4ed5fde4f from v8 upstream - -Original commit message: - - Fix x64 MathMinMax for negative untagged int32 arguments. - - An untagged int32 has zeros in the upper half even if it is negative. - Using cmpq to compare such numbers will incorrectly ignore the sign. - - BUG=164442 - R=mvstanton@chromium.org - - Review URL: https://chromiumcodereview.appspot.com/11665007 - - git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@13273 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 - -Signed-off-by: Fedor Indutny ---- - src/x64/lithium-codegen-x64.cc | 6 ++-- - test/mjsunit/regress/regress-164442.js | 45 ++++++++++++++++++++++++++ - 2 files changed, 48 insertions(+), 3 deletions(-) - create mode 100644 test/mjsunit/regress/regress-164442.js - -diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc -index b461e62..ff01f44 100644 ---- a/src/x64/lithium-codegen-x64.cc -+++ b/src/x64/lithium-codegen-x64.cc -@@ -1457,17 +1457,17 @@ void LCodeGen::DoMathMinMax(LMathMinMax* instr) { - if (right->IsConstantOperand()) { - Immediate right_imm = - Immediate(ToInteger32(LConstantOperand::cast(right))); -- __ cmpq(left_reg, right_imm); -+ __ cmpl(left_reg, right_imm); - __ j(condition, &return_left, Label::kNear); - __ movq(left_reg, right_imm); - } else if (right->IsRegister()) { - Register right_reg = ToRegister(right); -- __ cmpq(left_reg, right_reg); -+ __ cmpl(left_reg, right_reg); - __ j(condition, &return_left, Label::kNear); - __ movq(left_reg, right_reg); - } else { - Operand right_op = ToOperand(right); -- __ cmpq(left_reg, right_op); -+ __ cmpl(left_reg, right_op); - __ j(condition, &return_left, Label::kNear); - __ movq(left_reg, right_op); - } -diff --git a/test/mjsunit/regress/regress-164442.js b/test/mjsunit/regress/regress-164442.js -new file mode 100644 -index 0000000..1160d87 ---- /dev/null -+++ b/test/mjsunit/regress/regress-164442.js -@@ -0,0 +1,45 @@ -+// Copyright 2012 the V8 project authors. All rights reserved. -+// Redistribution and use in source and binary forms, with or without -+// modification, are permitted provided that the following conditions are -+// met: -+// -+// * Redistributions of source code must retain the above copyright -+// notice, this list of conditions and the following disclaimer. -+// * Redistributions in binary form must reproduce the above -+// copyright notice, this list of conditions and the following -+// disclaimer in the documentation and/or other materials provided -+// with the distribution. -+// * Neither the name of Google Inc. nor the names of its -+// contributors may be used to endorse or promote products derived -+// from this software without specific prior written permission. -+// -+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+// (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 -+ -+// Should not take a very long time (n^2 algorithms are bad) -+ -+ -+function ensureNotNegative(x) { -+ return Math.max(0, x | 0); -+} -+ -+ -+ensureNotNegative(1); -+ensureNotNegative(2); -+ -+%OptimizeFunctionOnNextCall(ensureNotNegative); -+ -+var r = ensureNotNegative(-1); -+ -+assertEquals(0, r); --- -2.0.3 - diff --git a/v8-3.14.5.10-x64-compare-stubs.patch b/v8-3.14.5.10-x64-compare-stubs.patch deleted file mode 100644 index bf7c542..0000000 --- a/v8-3.14.5.10-x64-compare-stubs.patch +++ /dev/null @@ -1,116 +0,0 @@ -From a960d1707a0038bfa5546c669b5b63c35bdb75c5 Mon Sep 17 00:00:00 2001 -From: Fedor Indutny -Date: Fri, 2 May 2014 22:44:45 +0400 -Subject: [PATCH] deps: backport 23f2736a from v8 upstream - -Original text: - - Fix corner case in x64 compare stubs. - - BUG=v8:2416 - - Review URL: https://codereview.chromium.org/11413087 - -fix #7528 ---- - src/x64/code-stubs-x64.cc | 2 +- - test/mjsunit/regress/regress-2416.js | 75 ++++++++++++++++++++++++++++ - 2 files changed, 76 insertions(+), 1 deletion(-) - create mode 100644 test/mjsunit/regress/regress-2416.js - -diff --git a/src/x64/code-stubs-x64.cc b/deps/v8/src/x64/code-stubs-x64.cc -index f0f9c5d..9ad0167 100644 ---- a/src/x64/code-stubs-x64.cc -+++ b/src/x64/code-stubs-x64.cc -@@ -5580,7 +5580,7 @@ void ICCompareStub::GenerateSmis(MacroAssembler* masm) { - __ subq(rdx, rax); - __ j(no_overflow, &done, Label::kNear); - // Correct sign of result in case of overflow. -- __ SmiNot(rdx, rdx); -+ __ not_(rdx); - __ bind(&done); - __ movq(rax, rdx); - } -diff --git a/test/mjsunit/regress/regress-2416.js b/deps/v8/test/mjsunit/regress/regress-2416.js -new file mode 100644 -index 0000000..02afeb9 ---- /dev/null -+++ b/test/mjsunit/regress/regress-2416.js -@@ -0,0 +1,75 @@ -+// Copyright 2012 the V8 project authors. All rights reserved. -+// Redistribution and use in source and binary forms, with or without -+// modification, are permitted provided that the following conditions are -+// met: -+// -+// * Redistributions of source code must retain the above copyright -+// notice, this list of conditions and the following disclaimer. -+// * Redistributions in binary form must reproduce the above -+// copyright notice, this list of conditions and the following -+// disclaimer in the documentation and/or other materials provided -+// with the distribution. -+// * Neither the name of Google Inc. nor the names of its -+// contributors may be used to endorse or promote products derived -+// from this software without specific prior written permission. -+// -+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ -+assertFalse(2147483647 < -2147483648) -+assertFalse(2147483647 <= -2147483648) -+assertFalse(2147483647 == -2147483648) -+assertTrue(2147483647 >= -2147483648) -+assertTrue(2147483647 > -2147483648) -+ -+assertTrue(-2147483648 < 2147483647) -+assertTrue(-2147483648 <= 2147483647) -+assertFalse(-2147483648 == 2147483647) -+assertFalse(-2147483648 >= 2147483647) -+assertFalse(-2147483648 > 2147483647) -+ -+assertFalse(2147483647 < 2147483647) -+assertTrue(2147483647 <= 2147483647) -+assertTrue(2147483647 == 2147483647) -+assertTrue(2147483647 >= 2147483647) -+assertFalse(2147483647 > 2147483647) -+ -+assertFalse(-2147483648 < -2147483648) -+assertTrue(-2147483648 <= -2147483648) -+assertTrue(-2147483648 == -2147483648) -+assertTrue(-2147483648 >= -2147483648) -+assertFalse(-2147483648 > -2147483648) -+ -+ -+assertFalse(1073741823 < -1073741824) -+assertFalse(1073741823 <= -1073741824) -+assertFalse(1073741823 == -1073741824) -+assertTrue(1073741823 >= -1073741824) -+assertTrue(1073741823 > -1073741824) -+ -+assertTrue(-1073741824 < 1073741823) -+assertTrue(-1073741824 <= 1073741823) -+assertFalse(-1073741824 == 1073741823) -+assertFalse(-1073741824 >= 1073741823) -+assertFalse(-1073741824 > 1073741823) -+ -+assertFalse(1073741823 < 1073741823) -+assertTrue(1073741823 <= 1073741823) -+assertTrue(1073741823 == 1073741823) -+assertTrue(1073741823 >= 1073741823) -+assertFalse(1073741823 > 1073741823) -+ -+assertFalse(-1073741824 < -1073741824) -+assertTrue(-1073741824 <= -1073741824) -+assertTrue(-1073741824 == -1073741824) -+assertTrue(-1073741824 >= -1073741824) -+assertFalse(-1073741824 > -1073741824) --- -1.9.3 diff --git a/v8-3.14.5.8-CVE-2013-2634.patch b/v8-3.14.5.8-CVE-2013-2634.patch deleted file mode 100644 index 6fdafce..0000000 --- a/v8-3.14.5.8-CVE-2013-2634.patch +++ /dev/null @@ -1,134 +0,0 @@ -From 5b1d2144ebd47ea768ca5b3cfcda830433c88efe Mon Sep 17 00:00:00 2001 -From: "T.C. Hollingsworth" -Date: Thu, 21 Mar 2013 17:34:19 -0700 -Subject: [PATCH] backport fix for CVE-2013-2632 from SVN r13964 - ---- - src/objects-inl.h | 3 ++- - src/objects.h | 7 +++++-- - src/parser.cc | 4 ++-- - src/parser.h | 5 ----- - src/stub-cache.cc | 8 ++++---- - 5 files changed, 13 insertions(+), 14 deletions(-) - -diff --git a/src/objects-inl.h b/src/objects-inl.h -index ea5a93f..4834fa6 100644 ---- a/src/objects-inl.h -+++ b/src/objects-inl.h -@@ -3500,8 +3500,9 @@ Code::Flags Code::ComputeFlags(Kind kind, - kind == CALL_IC || - kind == STORE_IC || - kind == KEYED_STORE_IC); -+ ASSERT(argc <= Code::kMaxArguments); - // Compute the bit mask. -- int bits = KindField::encode(kind) -+ unsigned int bits = KindField::encode(kind) - | ICStateField::encode(ic_state) - | TypeField::encode(type) - | ExtraICStateField::encode(extra_ic_state) -diff --git a/src/objects.h b/src/objects.h -index 755dd42..47d7757 100644 ---- a/src/objects.h -+++ b/src/objects.h -@@ -4180,8 +4180,8 @@ class Code: public HeapObject { - // FLAGS_MIN_VALUE and FLAGS_MAX_VALUE are specified to ensure that - // enumeration type has correct value range (see Issue 830 for more details). - enum Flags { -- FLAGS_MIN_VALUE = kMinInt, -- FLAGS_MAX_VALUE = kMaxInt -+ FLAGS_MIN_VALUE = 0, -+ FLAGS_MAX_VALUE = kMaxUInt32 - }; - - #define CODE_KIND_LIST(V) \ -@@ -4644,6 +4644,9 @@ class Code: public HeapObject { - // Signed field cannot be encoded using the BitField class. - static const int kArgumentsCountShift = 14; - static const int kArgumentsCountMask = ~((1 << kArgumentsCountShift) - 1); -+ static const int kArgumentsBits = -+ PlatformSmiTagging::kSmiValueSize - Code::kArgumentsCountShift + 1; -+ static const int kMaxArguments = (1 << kArgumentsBits) - 1; - - // This constant should be encodable in an ARM instruction. - static const int kFlagsNotUsedInLookup = -diff --git a/src/parser.cc b/src/parser.cc -index 03e4b03..6da414a 100644 ---- a/src/parser.cc -+++ b/src/parser.cc -@@ -4243,7 +4243,7 @@ ZoneList* Parser::ParseArguments(bool* ok) { - while (!done) { - Expression* argument = ParseAssignmentExpression(true, CHECK_OK); - result->Add(argument, zone()); -- if (result->length() > kMaxNumFunctionParameters) { -+ if (result->length() > Code::kMaxArguments) { - ReportMessageAt(scanner().location(), "too_many_arguments", - Vector::empty()); - *ok = false; -@@ -4420,7 +4420,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral(Handle function_name, - - top_scope_->DeclareParameter(param_name, VAR); - num_parameters++; -- if (num_parameters > kMaxNumFunctionParameters) { -+ if (num_parameters > Code::kMaxArguments) { - ReportMessageAt(scanner().location(), "too_many_parameters", - Vector::empty()); - *ok = false; -diff --git a/src/parser.h b/src/parser.h -index 93fd1b8..e36a9b3 100644 ---- a/src/parser.h -+++ b/src/parser.h -@@ -449,11 +449,6 @@ class Parser { - Vector > args); - - private: -- // Limit on number of function parameters is chosen arbitrarily. -- // Code::Flags uses only the low 17 bits of num-parameters to -- // construct a hashable id, so if more than 2^17 are allowed, this -- // should be checked. -- static const int kMaxNumFunctionParameters = 32766; - static const int kMaxNumFunctionLocals = 131071; // 2^17-1 - - enum Mode { -diff --git a/src/stub-cache.cc b/src/stub-cache.cc -index 4119147..8490c7e 100644 ---- a/src/stub-cache.cc -+++ b/src/stub-cache.cc -@@ -617,7 +617,7 @@ Handle StubCache::ComputeCallConstant(int argc, - Handle code = - compiler.CompileCallConstant(object, holder, function, name, check); - code->set_check_type(check); -- ASSERT_EQ(flags, code->flags()); -+ ASSERT(flags == code->flags()); - PROFILE(isolate_, - CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_IC_TAG), *code, *name)); - GDBJIT(AddCode(GDBJITInterface::CALL_IC, *name, *code)); -@@ -655,7 +655,7 @@ Handle StubCache::ComputeCallField(int argc, - Handle code = - compiler.CompileCallField(Handle::cast(object), - holder, index, name); -- ASSERT_EQ(flags, code->flags()); -+ ASSERT(flags == code->flags()); - PROFILE(isolate_, - CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_IC_TAG), *code, *name)); - GDBJIT(AddCode(GDBJITInterface::CALL_IC, *name, *code)); -@@ -692,7 +692,7 @@ Handle StubCache::ComputeCallInterceptor(int argc, - Handle code = - compiler.CompileCallInterceptor(Handle::cast(object), - holder, name); -- ASSERT_EQ(flags, code->flags()); -+ ASSERT(flags == code->flags()); - PROFILE(isolate(), - CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_IC_TAG), *code, *name)); - GDBJIT(AddCode(GDBJITInterface::CALL_IC, *name, *code)); -@@ -721,7 +721,7 @@ Handle StubCache::ComputeCallGlobal(int argc, - CallStubCompiler compiler(isolate(), argc, kind, extra_state, cache_holder); - Handle code = - compiler.CompileCallGlobal(receiver, holder, cell, function, name); -- ASSERT_EQ(flags, code->flags()); -+ ASSERT(flags == code->flags()); - PROFILE(isolate(), - CodeCreateEvent(CALL_LOGGER_TAG(kind, CALL_IC_TAG), *code, *name)); - GDBJIT(AddCode(GDBJITInterface::CALL_IC, *name, *code)); --- -1.8.1.4 - diff --git a/v8-3.3.10-enable-experimental.patch b/v8-3.3.10-enable-experimental.patch deleted file mode 100644 index 1b14815..0000000 --- a/v8-3.3.10-enable-experimental.patch +++ /dev/null @@ -1,59 +0,0 @@ -diff -up v8-3.3.10/src/SConscript.experimental v8-3.3.10/src/SConscript ---- v8-3.3.10/src/SConscript.experimental 2011-08-10 11:55:38.000000000 -0400 -+++ v8-3.3.10/src/SConscript 2011-08-10 12:07:47.975380113 -0400 -@@ -133,6 +133,12 @@ SOURCES = { - zone.cc - extensions/gc-extension.cc - extensions/externalize-string-extension.cc -+ extensions/experimental/break-iterator.cc -+ extensions/experimental/collator.cc -+ extensions/experimental/i18n-extension.cc -+ extensions/experimental/i18n-locale.cc -+ extensions/experimental/i18n-utils.cc -+ extensions/experimental/language-matcher.cc - """), - 'arch:arm': Split(""" - arm/builtins-arm.cc -@@ -301,6 +307,10 @@ proxy.js - '''.split() - - -+I18N_LIBRARY_FILES = ''' -+extensions/experimental/i18n.js -+'''.split() -+ - def Abort(message): - print message - sys.exit(1) -@@ -328,6 +338,13 @@ def ConfigureObjectFiles(): - ['libraries.cc'], library_files, **BuildJS2CEnv('CORE')) - libraries_obj = context.ConfigureObject(env, libraries_src, CPPPATH=['.']) - -+ # Combine the experimental I18N JavaScript library files into a C++ file -+ # and compile it. -+ i18n_library_files = [ s for s in I18N_LIBRARY_FILES ] -+ i18n_library_files.append('macros.py') -+ i18n_libraries_src = env.JS2C(['i18n-libraries.cc'], i18n_library_files, TYPE='I18N') -+ i18n_libraries_obj = context.ConfigureObject(env, i18n_libraries_src, CPPPATH=['.']) -+ - # Combine the experimental JavaScript library files into a C++ file - # and compile it. - experimental_library_files = [ s for s in EXPERIMENTAL_LIBRARY_FILES ] -@@ -351,7 +368,7 @@ def ConfigureObjectFiles(): - mksnapshot_env = env.Copy() - mksnapshot_env.Replace(**context.flags['mksnapshot']) - mksnapshot_src = 'mksnapshot.cc' -- mksnapshot = mksnapshot_env.Program('mksnapshot', [mksnapshot_src, libraries_obj, experimental_libraries_obj, non_snapshot_files, empty_snapshot_obj], PDB='mksnapshot.exe.pdb') -+ mksnapshot = mksnapshot_env.Program('mksnapshot', [mksnapshot_src, libraries_obj, i18n_libraries_obj, experimental_libraries_obj, non_snapshot_files, empty_snapshot_obj], PDB='mksnapshot.exe.pdb') - if context.use_snapshot: - if context.build_snapshot: - snapshot_cc = env.Snapshot('snapshot.cc', mksnapshot, LOGFILE=File('snapshot.log').abspath) -@@ -360,7 +377,7 @@ def ConfigureObjectFiles(): - snapshot_obj = context.ConfigureObject(env, snapshot_cc, CPPPATH=['.']) - else: - snapshot_obj = empty_snapshot_obj -- library_objs = [non_snapshot_files, libraries_obj, experimental_libraries_obj, snapshot_obj] -+ library_objs = [non_snapshot_files, libraries_obj, i18n_libraries_obj, experimental_libraries_obj, snapshot_obj] - return (library_objs, d8_objs, [mksnapshot], preparser_objs) - - diff --git a/v8-3.3.10-language-matcher-fix.patch b/v8-3.3.10-language-matcher-fix.patch deleted file mode 100644 index 85500c1..0000000 --- a/v8-3.3.10-language-matcher-fix.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up v8-3.3.10/src/extensions/experimental/language-matcher.cc.fix v8-3.3.10/src/extensions/experimental/language-matcher.cc ---- v8-3.3.10/src/extensions/experimental/language-matcher.cc.fix 2011-08-10 12:12:39.257368098 -0400 -+++ v8-3.3.10/src/extensions/experimental/language-matcher.cc 2011-08-10 12:12:47.150362828 -0400 -@@ -42,7 +42,7 @@ namespace internal { - const unsigned int LanguageMatcher::kLanguageWeight = 75; - const unsigned int LanguageMatcher::kScriptWeight = 20; - const unsigned int LanguageMatcher::kRegionWeight = 5; --const unsigned int LanguageMatcher::kThreshold = 50; -+const int LanguageMatcher::kThreshold = 50; - const unsigned int LanguageMatcher::kPositionBonus = 1; - const char* const LanguageMatcher::kDefaultLocale = "root"; - -diff -up v8-3.3.10/src/extensions/experimental/language-matcher.h.fix v8-3.3.10/src/extensions/experimental/language-matcher.h ---- v8-3.3.10/src/extensions/experimental/language-matcher.h.fix 2011-08-10 12:13:15.147621253 -0400 -+++ v8-3.3.10/src/extensions/experimental/language-matcher.h 2011-08-10 12:13:24.311742395 -0400 -@@ -76,7 +76,7 @@ class LanguageMatcher { - static const unsigned int kRegionWeight; - - // LocaleID match score has to be over this number to accept the match. -- static const unsigned int kThreshold; -+ static const int kThreshold; - - // For breaking ties in priority queue. - static const unsigned int kPositionBonus; diff --git a/v8-3.4.14-CVE-2014-3152.patch b/v8-3.4.14-CVE-2014-3152.patch deleted file mode 100644 index a399c79..0000000 --- a/v8-3.4.14-CVE-2014-3152.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up v8-3.14.5.10/src/arm/lithium-codegen-arm.cc.cve20143152 v8-3.14.5.10/src/arm/lithium-codegen-arm.cc ---- v8-3.14.5.10/src/arm/lithium-codegen-arm.cc.cve20143152 2015-04-23 14:51:20.095648219 -0400 -+++ v8-3.14.5.10/src/arm/lithium-codegen-arm.cc 2015-04-23 14:53:28.834149299 -0400 -@@ -3034,7 +3034,8 @@ MemOperand LCodeGen::PrepareKeyedOperand - return MemOperand(base, scratch0(), LSL, shift_size); - } else { - ASSERT_EQ(-1, shift_size); -- return MemOperand(base, scratch0(), LSR, 1); -+ // key can be negative, so using ASR here. -+ return MemOperand(base, scratch0(), ASR, 1); - } - } - diff --git a/v8-3.4.14-enable-experimental.patch b/v8-3.4.14-enable-experimental.patch deleted file mode 100644 index 9a7b805..0000000 --- a/v8-3.4.14-enable-experimental.patch +++ /dev/null @@ -1,61 +0,0 @@ -diff -up v8-3.4.14-20110721svn8716/src/SConscript.experimental v8-3.4.14-20110721svn8716/src/SConscript ---- v8-3.4.14-20110721svn8716/src/SConscript.experimental 2011-07-21 11:02:27.000000000 -0400 -+++ v8-3.4.14-20110721svn8716/src/SConscript 2011-07-21 13:13:52.678543506 -0400 -@@ -134,6 +134,14 @@ SOURCES = { - zone.cc - extensions/gc-extension.cc - extensions/externalize-string-extension.cc -+ extensions/experimental/break-iterator.cc -+ extensions/experimental/collator.cc -+ extensions/experimental/datetime-format.cc -+ extensions/experimental/i18n-extension.cc -+ extensions/experimental/i18n-locale.cc -+ extensions/experimental/i18n-utils.cc -+ extensions/experimental/language-matcher.cc -+ extensions/experimental/number-format.cc - """), - 'arch:arm': Split(""" - arm/builtins-arm.cc -@@ -310,6 +318,10 @@ proxy.js - '''.split() - - -+I18N_LIBRARY_FILES = ''' -+extensions/experimental/i18n.js -+'''.split() -+ - def Abort(message): - print message - sys.exit(1) -@@ -348,6 +360,13 @@ def ConfigureObjectFiles(): - ['libraries.cc'], library_files, **BuildJS2CEnv('CORE')) - libraries_obj = context.ConfigureObject(env, libraries_src, CPPPATH=['.']) - -+ # Combine the experimental I18N JavaScript library files into a C++ file -+ # and compile it. -+ i18n_library_files = [ s for s in I18N_LIBRARY_FILES ] -+ i18n_library_files.append('macros.py') -+ i18n_libraries_src = env.JS2C(['i18n-libraries.cc'], i18n_library_files, **BuildJS2CEnv('I18N')) -+ i18n_libraries_obj = context.ConfigureObject(env, i18n_libraries_src, CPPPATH=['.']) -+ - # Combine the experimental JavaScript library files into a C++ file - # and compile it. - experimental_library_files = [ s for s in EXPERIMENTAL_LIBRARY_FILES ] -@@ -373,7 +392,7 @@ def ConfigureObjectFiles(): - mksnapshot_env = env.Copy() - mksnapshot_env.Replace(**context.flags['mksnapshot']) - mksnapshot_src = 'mksnapshot.cc' -- mksnapshot = mksnapshot_env.Program('mksnapshot', [mksnapshot_src, libraries_obj, experimental_libraries_obj, non_snapshot_files, empty_snapshot_obj], PDB='mksnapshot.exe.pdb') -+ mksnapshot = mksnapshot_env.Program('mksnapshot', [mksnapshot_src, libraries_obj, i18n_libraries_obj, experimental_libraries_obj, non_snapshot_files, empty_snapshot_obj], PDB='mksnapshot.exe.pdb') - if context.use_snapshot: - if context.build_snapshot: - snapshot_cc = env.Snapshot('snapshot.cc', mksnapshot, LOGFILE=File('snapshot.log').abspath) -@@ -382,7 +401,7 @@ def ConfigureObjectFiles(): - snapshot_obj = context.ConfigureObject(env, snapshot_cc, CPPPATH=['.']) - else: - snapshot_obj = empty_snapshot_obj -- library_objs = [non_snapshot_files, libraries_obj, experimental_libraries_obj, snapshot_obj] -+ library_objs = [non_snapshot_files, libraries_obj, i18n_libraries_obj, experimental_libraries_obj, snapshot_obj] - return (library_objs, d8_objs, [mksnapshot], preparser_objs) - - diff --git a/v8-3.4.14-fix-experimental-compile.patch b/v8-3.4.14-fix-experimental-compile.patch deleted file mode 100644 index 5a85fd9..0000000 --- a/v8-3.4.14-fix-experimental-compile.patch +++ /dev/null @@ -1,243 +0,0 @@ -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/break-iterator.cc.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/break-iterator.cc ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/break-iterator.cc.BAD 2011-07-21 12:36:38.117525896 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/break-iterator.cc 2011-07-21 12:36:44.663541775 -0400 -@@ -25,7 +25,7 @@ - // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --#include "src/extensions/experimental/break-iterator.h" -+#include "extensions/experimental/break-iterator.h" - - #include - -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/break-iterator.h.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/break-iterator.h ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/break-iterator.h.BAD 2011-07-21 12:37:39.989539464 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/break-iterator.h 2011-07-21 12:37:47.271546557 -0400 -@@ -28,7 +28,7 @@ - #ifndef V8_EXTENSIONS_EXPERIMENTAL_BREAK_ITERATOR_H_ - #define V8_EXTENSIONS_EXPERIMENTAL_BREAK_ITERATOR_H_ - --#include "include/v8.h" -+#include "v8.h" - - #include "unicode/uversion.h" - -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/collator.cc.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/collator.cc ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/collator.cc.BAD 2011-07-21 12:38:32.892541085 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/collator.cc 2011-07-21 12:38:42.536540200 -0400 -@@ -25,7 +25,7 @@ - // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --#include "src/extensions/experimental/collator.h" -+#include "extensions/experimental/collator.h" - - #include "unicode/coll.h" - #include "unicode/locid.h" -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/collator.h.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/collator.h ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/collator.h.BAD 2011-07-21 12:40:38.695553065 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/collator.h 2011-07-21 12:40:46.604287238 -0400 -@@ -28,7 +28,7 @@ - #ifndef V8_EXTENSIONS_EXPERIMENTAL_COLLATOR_H - #define V8_EXTENSIONS_EXPERIMENTAL_COLLATOR_H_ - --#include "include/v8.h" -+#include "v8.h" - - #include "unicode/uversion.h" - -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/datetime-format.cc.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/datetime-format.cc ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/datetime-format.cc.BAD 2011-07-21 12:42:32.070546811 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/datetime-format.cc 2011-07-21 12:42:43.429540019 -0400 -@@ -25,11 +25,11 @@ - // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --#include "src/extensions/experimental/datetime-format.h" -+#include "extensions/experimental/datetime-format.h" - - #include - --#include "src/extensions/experimental/i18n-utils.h" -+#include "extensions/experimental/i18n-utils.h" - #include "unicode/dtfmtsym.h" - #include "unicode/dtptngen.h" - #include "unicode/locid.h" -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/datetime-format.h.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/datetime-format.h ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/datetime-format.h.BAD 2011-07-21 12:40:53.229295468 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/datetime-format.h 2011-07-21 12:41:00.279541337 -0400 -@@ -28,7 +28,7 @@ - #ifndef V8_EXTENSIONS_EXPERIMENTAL_DATETIME_FORMAT_H_ - #define V8_EXTENSIONS_EXPERIMENTAL_DATETIME_FORMAT_H_ - --#include "include/v8.h" -+#include "v8.h" - - #include "unicode/uversion.h" - -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-extension.cc.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-extension.cc ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-extension.cc.BAD 2011-07-21 12:42:51.682535397 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-extension.cc 2011-07-21 12:43:10.905542088 -0400 -@@ -25,14 +25,14 @@ - // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --#include "src/extensions/experimental/i18n-extension.h" -+#include "extensions/experimental/i18n-extension.h" - --#include "src/extensions/experimental/break-iterator.h" --#include "src/extensions/experimental/collator.h" --#include "src/extensions/experimental/datetime-format.h" --#include "src/extensions/experimental/i18n-locale.h" --#include "src/extensions/experimental/i18n-natives.h" --#include "src/extensions/experimental/number-format.h" -+#include "extensions/experimental/break-iterator.h" -+#include "extensions/experimental/collator.h" -+#include "extensions/experimental/datetime-format.h" -+#include "extensions/experimental/i18n-locale.h" -+#include "extensions/experimental/i18n-natives.h" -+#include "extensions/experimental/number-format.h" - - namespace v8 { - namespace internal { -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-extension.h.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-extension.h ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-extension.h.BAD 2011-07-21 12:41:13.170538335 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-extension.h 2011-07-21 12:41:20.023540712 -0400 -@@ -28,7 +28,7 @@ - #ifndef V8_EXTENSIONS_EXPERIMENTAL_I18N_EXTENSION_H_ - #define V8_EXTENSIONS_EXPERIMENTAL_I18N_EXTENSION_H_ - --#include "include/v8.h" -+#include "v8.h" - - namespace v8 { - namespace internal { -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-locale.cc.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-locale.cc ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-locale.cc.BAD 2011-07-21 12:43:18.896539148 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-locale.cc 2011-07-21 12:43:32.626538677 -0400 -@@ -25,10 +25,10 @@ - // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --#include "src/extensions/experimental/i18n-locale.h" -+#include "extensions/experimental/i18n-locale.h" - --#include "src/extensions/experimental/i18n-utils.h" --#include "src/extensions/experimental/language-matcher.h" -+#include "extensions/experimental/i18n-utils.h" -+#include "extensions/experimental/language-matcher.h" - #include "unicode/locid.h" - #include "unicode/uloc.h" - -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-locale.h.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-locale.h ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-locale.h.BAD 2011-07-21 12:41:28.401292703 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-locale.h 2011-07-21 12:41:34.887302839 -0400 -@@ -28,7 +28,7 @@ - #ifndef V8_EXTENSIONS_EXPERIMENTAL_I18N_LOCALE_H_ - #define V8_EXTENSIONS_EXPERIMENTAL_I18N_LOCALE_H_ - --#include "include/v8.h" -+#include "v8.h" - - namespace v8 { - namespace internal { -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-utils.cc.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-utils.cc ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-utils.cc.BAD 2011-07-21 12:43:40.641540032 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-utils.cc 2011-07-21 12:43:47.258552856 -0400 -@@ -25,7 +25,7 @@ - // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --#include "src/extensions/experimental/i18n-utils.h" -+#include "extensions/experimental/i18n-utils.h" - - #include - -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-utils.h.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-utils.h ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-utils.h.BAD 2011-07-21 12:41:47.436545325 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-utils.h 2011-07-21 12:41:53.749539656 -0400 -@@ -28,7 +28,7 @@ - #ifndef V8_EXTENSIONS_EXPERIMENTAL_I18N_UTILS_H_ - #define V8_EXTENSIONS_EXPERIMENTAL_I18N_UTILS_H_ - --#include "include/v8.h" -+#include "v8.h" - - #include "unicode/uversion.h" - -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/language-matcher.cc.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/language-matcher.cc ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/language-matcher.cc.BAD 2011-07-21 12:43:55.484291257 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/language-matcher.cc 2011-07-21 12:47:31.316288453 -0400 -@@ -28,11 +28,11 @@ - // TODO(cira): Remove LanguageMatcher from v8 when ICU implements - // language matching API. - --#include "src/extensions/experimental/language-matcher.h" -+#include "extensions/experimental/language-matcher.h" - - #include - --#include "src/extensions/experimental/i18n-utils.h" -+#include "extensions/experimental/i18n-utils.h" - #include "unicode/datefmt.h" // For getAvailableLocales - #include "unicode/locid.h" - #include "unicode/uloc.h" -@@ -43,7 +43,7 @@ namespace internal { - const unsigned int LanguageMatcher::kLanguageWeight = 75; - const unsigned int LanguageMatcher::kScriptWeight = 20; - const unsigned int LanguageMatcher::kRegionWeight = 5; --const unsigned int LanguageMatcher::kThreshold = 50; -+const int LanguageMatcher::kThreshold = 50; - const unsigned int LanguageMatcher::kPositionBonus = 1; - const char* const LanguageMatcher::kDefaultLocale = "root"; - -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/language-matcher.h.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/language-matcher.h ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/language-matcher.h.BAD 2011-07-21 12:42:00.374537754 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/language-matcher.h 2011-07-21 12:47:59.556286069 -0400 -@@ -28,7 +28,7 @@ - #ifndef V8_EXTENSIONS_EXPERIMENTAL_LANGUAGE_MATCHER_H_ - #define V8_EXTENSIONS_EXPERIMENTAL_LANGUAGE_MATCHER_H_ - --#include "include/v8.h" -+#include "v8.h" - - #include "unicode/uloc.h" - -@@ -76,7 +76,7 @@ class LanguageMatcher { - static const unsigned int kRegionWeight; - - // LocaleID match score has to be over this number to accept the match. -- static const unsigned int kThreshold; -+ static const int kThreshold; - - // For breaking ties in priority queue. - static const unsigned int kPositionBonus; -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/number-format.cc.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/number-format.cc ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/number-format.cc.BAD 2011-07-21 12:44:13.227297121 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/number-format.cc 2011-07-21 12:44:23.119292346 -0400 -@@ -25,11 +25,11 @@ - // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --#include "src/extensions/experimental/number-format.h" -+#include "extensions/experimental/number-format.h" - - #include - --#include "src/extensions/experimental/i18n-utils.h" -+#include "extensions/experimental/i18n-utils.h" - #include "unicode/dcfmtsym.h" - #include "unicode/decimfmt.h" - #include "unicode/locid.h" -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/number-format.h.BAD v8-3.4.14-20110721svn8716/src/extensions/experimental/number-format.h ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/number-format.h.BAD 2011-07-21 12:42:15.678549139 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/number-format.h 2011-07-21 12:42:22.940543222 -0400 -@@ -28,7 +28,7 @@ - #ifndef V8_EXTENSIONS_EXPERIMENTAL_NUMBER_FORMAT_H_ - #define V8_EXTENSIONS_EXPERIMENTAL_NUMBER_FORMAT_H_ - --#include "include/v8.h" -+#include "v8.h" - - #include "unicode/uversion.h" - diff --git a/v8-3.4.14-i18n-js2c.patch b/v8-3.4.14-i18n-js2c.patch deleted file mode 100644 index 4665fff..0000000 --- a/v8-3.4.14-i18n-js2c.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff -up v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-js2c.py.i18n-js2c v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-js2c.py ---- v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-js2c.py.i18n-js2c 2011-07-21 14:39:22.402295140 -0400 -+++ v8-3.4.14-20110721svn8716/src/extensions/experimental/i18n-js2c.py 2011-07-21 14:39:28.328285018 -0400 -@@ -85,7 +85,7 @@ HEADER_TEMPLATE = """\ - // want to make changes to this file you should either change the - // javascript source files or the i18n-js2c.py script. - --#include "src/extensions/experimental/i18n-natives.h" -+#include "extensions/experimental/i18n-natives.h" - - namespace v8 { - namespace internal { -diff -up v8-3.4.14-20110721svn8716/src/SConscript.i18n-js2c v8-3.4.14-20110721svn8716/src/SConscript ---- v8-3.4.14-20110721svn8716/src/SConscript.i18n-js2c 2011-07-21 14:38:49.828400947 -0400 -+++ v8-3.4.14-20110721svn8716/src/SConscript 2011-07-21 14:38:49.869408897 -0400 -@@ -318,10 +318,6 @@ proxy.js - '''.split() - - --I18N_LIBRARY_FILES = ''' --extensions/experimental/i18n.js --'''.split() -- - def Abort(message): - print message - sys.exit(1) -@@ -360,11 +356,8 @@ def ConfigureObjectFiles(): - ['libraries.cc'], library_files, **BuildJS2CEnv('CORE')) - libraries_obj = context.ConfigureObject(env, libraries_src, CPPPATH=['.']) - -- # Combine the experimental I18N JavaScript library files into a C++ file -- # and compile it. -- i18n_library_files = [ s for s in I18N_LIBRARY_FILES ] -- i18n_library_files.append('macros.py') -- i18n_libraries_src = env.JS2C(['i18n-libraries.cc'], i18n_library_files, **BuildJS2CEnv('I18N')) -+ # Compile the experimental I18N JavaScript C++ file we generated outside. -+ i18n_libraries_src = 'i18n-libraries.cc' - i18n_libraries_obj = context.ConfigureObject(env, i18n_libraries_src, CPPPATH=['.']) - - # Combine the experimental JavaScript library files into a C++ file diff --git a/v8-3.5.1-versioned-v8.patch b/v8-3.5.1-versioned-v8.patch deleted file mode 100644 index 25417ee..0000000 --- a/v8-3.5.1-versioned-v8.patch +++ /dev/null @@ -1,14 +0,0 @@ -Index: v8-3.5.1/SConstruct -=================================================================== ---- v8-3.5.1.orig/SConstruct -+++ v8-3.5.1/SConstruct -@@ -1350,6 +1350,9 @@ def BuildSpecific(env, mode, env_overrid - # When building shared object with SONAME version the library name. - library_name += '-' + version - -+ # Fedora patch: link d8 against versioned v8 -+ d8_flags['LIBS'][d8_flags['LIBS'].index('v8')] += '-' + version -+ print "BuildSpecific: d8_flags = %s" % d8_flags - # Generate library SONAME if required by the build. - if context.options['soname'] == 'on': - soname = GetSpecificSONAME() diff --git a/v8-daily-tarball.sh b/v8-daily-tarball.sh deleted file mode 100644 index ea4a7b6..0000000 --- a/v8-daily-tarball.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/bin/bash - -# This script checks out v8 source from svn. - -LOCALDIR=`pwd` -TODAYSDATE=`date +%Y%m%d` -USAGE="Usage: v8-daily-tarball.sh [-hrv]" -VERBOSE=false - -while getopts "hv" opt; do - case $opt in - h ) printf "$USAGE\n" - printf "\nAvailable command line options:\n" - printf "%b\t-h\t\tthis help\n" - printf "%b\t-v\t\tverbose output\n\n" - exit 1 ;; - v ) VERBOSE=true - printf "[VERBOSE]: Enabled\n" ;; - \? ) printf "$USAGE\n" - exit 1 ;; - esac -done - -# If the directory is there, just nuke it and continue. -if [ -d v8-$TODAYSDATE ]; then - if [ "$VERBOSE" = "true" ]; then - printf "[VERBOSE]: Conflicting directory found, removing v8-$TODAYSDATE/\n" - fi - rm -rf v8-$TODAYSDATE/ - if [ "$VERBOSE" = "true" ]; then - printf "[VERBOSE]: Removed conflicting directory: v8-$TODAYSDATE/\n" - fi -fi - -printf "Checking out the source tree. This will take some time.\n" - -if [ "$VERBOSE" = "true" ]; then - svn checkout http://v8.googlecode.com/svn/trunk/ v8-$TODAYSDATE -else - svn --quiet checkout http://v8.googlecode.com/svn/trunk v8-$TODAYSDATE -fi - -# Determine SVN rev and Version of v8 -cd v8-$TODAYSDATE/ -SVNREV=`svnversion` -V8_VERSION=`head -n1 ChangeLog |cut -f2 -d: |sed 's| Version ||g'` -cd .. - -printf "V8 ($V8_VERSION) svn$SVNREV [$TODAYSDATE] checked out\n" - -FULLVER=`echo ${V8_VERSION}-${TODAYSDATE}svn${SVNREV}` - -# Get rid of .svn bits to save space -if [ "$VERBOSE" = "true" ]; then - printf "[VERBOSE]: Removing unnecessary .svn bits\n" -fi -find v8-$TODAYSDATE -depth -name .svn -type d -exec rm -rf {} \; - -# Now, lets look for the final target directory, without svnrev. -if [ -d v8-$FULLVER ]; then - if [ "$VERBOSE" = "true" ]; then - printf "[VERBOSE]: Removing conflicting directory: v8-$FULLVER/\n" - fi - rm -rf v8-$FULLVER/ - if [ "$VERBOSE" = "true" ]; then - printf "[VERBOSE]: Removed conflicting directory: v8-$FULLVER/\n" - fi -fi - -# At this point, we know the v8 target directory does not exist, time to rename the checkout -if [ "$VERBOSE" = "true" ]; then - printf "[VERBOSE]: Renaming checkout directory from: v8-$TODAYSDATE/ to: v8-$FULLVER/\n" -fi -mv v8-$TODAYSDATE/ v8-$FULLVER/ - -# Now, lets look for the tarball. -if [ -f v8-$FULLVER.tar.bz2 ]; then - if [ "$VERBOSE" = "true" ]; then - printf "[VERBOSE]: Found existing tarball matching v8-$FULLVER.tar.bz2, removing.\n" - fi - rm -f v8-$FULLVER.tar.bz2 - if [ "$VERBOSE" = "true" ]; then - printf "[VERBOSE]: Removed conflicting file: v8-$FULLVER.tar.bz2\n" - fi -fi - -if [ "$VERBOSE" = "true" ]; then - printf "[VERBOSE]: Creating tarball: v8-$FULLVER.tar.bz2\n" -fi -tar cfj v8-$FULLVER.tar.bz2 v8-$FULLVER - -# All done. -printf "Daily v8 source processed and ready: v8-$FULLVER.tar.bz2\n" -exit 0 diff --git a/v8-js2c b/v8-js2c deleted file mode 100644 index 6d76060..0000000 --- a/v8-js2c +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/python - -import js2c -js2c.main () diff --git a/v8.spec b/v8.spec deleted file mode 100644 index eb77fb1..0000000 --- a/v8.spec +++ /dev/null @@ -1,698 +0,0 @@ -# Hi Googlers! If you're looking in here for patches, nifty. -# You (and everyone else) are welcome to use any of my Chromium spec files and -# patches under the terms of the GPLv2 or later. -# You (and everyone else) are welcome to use any of my V8-specific spec files -# and patches under the terms of the BSD license. -# You (and everyone else) may NOT use my spec files or patches under any other -# terms. -# I hate to be a party-pooper here, but I really don't want to help Google -# make a proprietary browser. There are enough of those already. -# All copyrightable work in these spec files and patches is Copyright 2011 -# Tom Callaway - -# For the 1.2 branch, we use 0s here -# For 1.3+, we use the three digit versions -# Hey, now there are four digits. What do they mean? Popsicle. -%global somajor 3 -%global sominor 14 -%global sobuild 5 -%global sotiny 10 -%global sover %{somajor}.%{sominor}.%{sobuild} - -# %%global svnver 20110721svn8716 - -Name: v8 -Version: %{somajor}.%{sominor}.%{sobuild}.%{sotiny} -Release: 18%{?dist} -Epoch: 1 -Summary: JavaScript Engine -Group: System Environment/Libraries -License: BSD -URL: http://code.google.com/p/v8 -Source0: http://commondatastorage.googleapis.com/chromium-browser-official/v8-%{version}.tar.bz2 -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -ExclusiveArch: %{ix86} x86_64 %{arm} -BuildRequires: scons, readline-devel, libicu-devel -BuildRequires: valgrind-devel - -#backport fix for CVE-2013-2634 (RHBZ#924495) -Patch1: v8-3.14.5.8-CVE-2013-2634.patch - -#backport fix for CVE-2013-2882 (RHBZ#991116) -Patch2: v8-3.14.5.10-CVE-2013-2882.patch - -#backport fix for CVE-2013-6640 (RHBZ#1039889) -Patch3: v8-3.14.5.10-CVE-2013-6640.patch - -#backport fix for enumeration for objects with lots of properties -# https://codereview.chromium.org/11362182 -Patch4: v8-3.14.5.10-enumeration.patch - -#backport fix for CVE-2013-6640 (RHBZ#1059070) -Patch5: v8-3.14.5.10-CVE-2013-6650.patch - -#backport only applicable fix for CVE-2014-1704 (RHBZ#1077136) -#the other two patches don't affect this version of v8 -Patch6: v8-3.14.5.10-CVE-2014-1704-1.patch - -# use clock_gettime() instead of gettimeofday(), which increases performance -# dramatically on virtual machines -# https://github.com/joyent/node/commit/f9ced08de30c37838756e8227bd091f80ad9cafa -# see above link or head of patch for complete rationale -Patch7: v8-3.14.5.10-use-clock_gettime.patch - -# fix corner case in x64 compare stubs -# fixes bug resulting in an incorrect result when comparing certain integers -# (e.g. 2147483647 > -2147483648 is false instead of true) -# https://code.google.com/p/v8/issues/detail?id=2416 -# https://github.com/joyent/node/issues/7528 -Patch8: v8-3.14.5.10-x64-compare-stubs.patch - -# backport security fix for memory corruption/stack overflow (RHBZ#1125464) -# https://groups.google.com/d/msg/nodejs/-siJEObdp10/2xcqqmTHiEMJ -# https://github.com/joyent/node/commit/530af9cb8e700e7596b3ec812bad123c9fa06356 -Patch9: v8-3.14.5.10-mem-corruption-stack-overflow.patch - -# backport bugfix for x64 MathMinMax: -# Fix x64 MathMinMax for negative untagged int32 arguments. -# An untagged int32 has zeros in the upper half even if it is negative. -# Using cmpq to compare such numbers will incorrectly ignore the sign. -# https://github.com/joyent/node/commit/3530fa9cd09f8db8101c4649cab03bcdf760c434 -Patch10: v8-3.14.5.10-x64-MathMinMax.patch - -# backport bugfix that eliminates unused-local-typedefs warning -# https://github.com/joyent/node/commit/53b4accb6e5747b156be91a2b90f42607e33a7cc -Patch11: v8-3.14.5.10-unused-local-typedefs.patch - -# backport security fix: Fix Hydrogen bounds check elimination -# resolves CVE-2013-6668 (RHBZ#1086120) -# https://github.com/joyent/node/commit/fd80a31e0697d6317ce8c2d289575399f4e06d21 -Patch12: v8-3.14.5.10-CVE-2013-6668.patch - -# backport fix to segfault caused by the above patch -# https://github.com/joyent/node/commit/3122e0eae64c5ab494b29d0a9cadef902d93f1f9 -Patch13: v8-3.14.5.10-CVE-2013-6668-segfault.patch - -# Use system valgrind header -# https://bugzilla.redhat.com/show_bug.cgi?id=1141483 -Patch14: v8-3.14.5.10-system-valgrind.patch - -# Fix issues with abort on uncaught exception -# https://github.com/joyent/node/pull/8666 -# https://github.com/joyent/node/issues/8631 -# https://github.com/joyent/node/issues/8630 -Patch15: v8-3.14.5.10-abort-uncaught-exception.patch - -# Fix unhandled ReferenceError in debug-debugger.js -# https://github.com/joyent/node/commit/0ff51c6e063e3eea9e4d9ea68edc82d935626fc7 -# https://codereview.chromium.org/741683002 -Patch16: v8-3.14.5.10-unhandled-ReferenceError.patch - -# Don't busy loop in CPU profiler thread -# https://github.com/joyent/node/pull/8789 -Patch17: v8-3.14.5.10-busy-loop.patch - -# Log V8 version in profiler log file -# (needed for compatibility with profiler tools) -# https://github.com/joyent/node/pull/9043 -# https://codereview.chromium.org/806143002 -Patch18: v8-3.14.5.10-profiler-log.patch - -# Fix CVE in ARM code -# https://bugzilla.redhat.com/show_bug.cgi?id=1101057 -# https://codereview.chromium.org/219473002 -Patch19: v8-3.4.14-CVE-2014-3152.patch - -%description -V8 is Google's open source JavaScript engine. V8 is written in C++ and is used -in Google Chrome, the open source browser from Google. V8 implements ECMAScript -as specified in ECMA-262, 3rd edition. - -%package devel -Group: Development/Libraries -Summary: Development headers and libraries for v8 -Requires: %{name} = %{epoch}:%{version}-%{release} - -%description devel -Development headers and libraries for v8. - -%prep -%setup -q -n %{name}-%{version} -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -b .system-valgrind -%patch15 -p1 -b .abort-uncaught-exception -%patch16 -p1 -b .unhandled-ReferenceError -%patch17 -p1 -b .busy-loop -%patch18 -p1 -b .profiler-log -%patch19 -p1 -b .cve20143152 - -# Do not need this lying about. -rm -rf src/third_party/valgrind - -#Patch7 needs -lrt on glibc < 2.17 (RHEL <= 6) -%if (0%{?rhel} > 6 || 0%{?fedora} > 18) -%global lrt %{nil} -%else -%global lrt -lrt -%endif - -# -fno-strict-aliasing is needed with gcc 4.4 to get past some ugly code -PARSED_OPT_FLAGS=`echo \'$RPM_OPT_FLAGS %{lrt} -fPIC -fno-strict-aliasing -Wno-unused-parameter -Wno-error=strict-overflow -Wno-unused-but-set-variable\'| sed "s/ /',/g" | sed "s/',/', '/g"` -sed -i "s|'-O3',|$PARSED_OPT_FLAGS,|g" SConstruct - -# clear spurious executable bits -find . \( -name \*.cc -o -name \*.h -o -name \*.py \) -a -executable \ - |while read FILE ; do - echo $FILE - chmod -x $FILE - done - -%build -mkdir -p obj/release/ -export GCC_VERSION="44" - -# SCons is going away, but for now build with -# I_know_I_should_build_with_GYP=yes -scons library=shared snapshots=on \ -%ifarch x86_64 -arch=x64 \ -%endif -%ifarch armv7hl armv7hnl -armeabi=hard \ -%endif -%ifarch armv5tel armv6l armv7l -armeabi=soft \ -%endif -visibility=default \ -env=CCFLAGS:"-fPIC" \ -I_know_I_should_build_with_GYP=yes - -%if 0%{?fedora} >= 16 -export ICU_LINK_FLAGS=`pkg-config --libs-only-l icu-i18n` -%else -export ICU_LINK_FLAGS=`pkg-config --libs-only-l icu` -%endif - -# When will people learn to create versioned shared libraries by default? -# first, lets get rid of the old .so file -rm -rf libv8.so libv8preparser.so -# Now, lets make it right. -g++ $RPM_OPT_FLAGS -fPIC -o libv8preparser.so.%{sover} -shared -Wl,-soname,libv8preparser.so.%{somajor} \ - obj/release/allocation.os \ - obj/release/bignum.os \ - obj/release/bignum-dtoa.os \ - obj/release/cached-powers.os \ - obj/release/diy-fp.os \ - obj/release/dtoa.os \ - obj/release/fast-dtoa.os \ - obj/release/fixed-dtoa.os \ - obj/release/preparse-data.os \ - obj/release/preparser-api.os \ - obj/release/preparser.os \ - obj/release/scanner.os \ - obj/release/strtod.os \ - obj/release/token.os \ - obj/release/unicode.os \ - obj/release/utils.os - -# "obj/release/preparser-api.os" should not be included in the libv8.so file. -export RELEASE_BUILD_OBJS=`echo obj/release/*.os | sed 's|obj/release/preparser-api.os||g'` - -%ifarch %{arm} -g++ $RPM_OPT_FLAGS -fPIC -o libv8.so.%{sover} -shared -Wl,-soname,libv8.so.%{somajor} $RELEASE_BUILD_OBJS obj/release/extensions/*.os obj/release/arm/*.os $ICU_LINK_FLAGS -%endif -%ifarch %{ix86} -g++ $RPM_OPT_FLAGS -fPIC -o libv8.so.%{sover} -shared -Wl,-soname,libv8.so.%{somajor} $RELEASE_BUILD_OBJS obj/release/extensions/*.os obj/release/ia32/*.os $ICU_LINK_FLAGS -%endif -%ifarch x86_64 -g++ $RPM_OPT_FLAGS -fPIC -o libv8.so.%{sover} -shared -Wl,-soname,libv8.so.%{somajor} $RELEASE_BUILD_OBJS obj/release/extensions/*.os obj/release/x64/*.os $ICU_LINK_FLAGS -%endif - -# We need to do this so d8 can link against it. -ln -sf libv8.so.%{sover} libv8.so -ln -sf libv8preparser.so.%{sover} libv8preparser.so - -# This will fail to link d8 because it doesn't use the icu libs. -# Don't build d8 shared. Stupid Google. Hate. -# SCons is going away, but for now build with -# I_know_I_should_build_with_GYP=yes -scons d8 \ -I_know_I_should_build_with_GYP=yes \ -%ifarch x86_64 -arch=x64 \ -%endif -%ifarch armv7hl armv7hnl -armeabi=hard \ -%endif -%ifarch armv5tel armv6l armv7l -armeabi=soft \ -%endif -snapshots=on console=readline visibility=default || : -# library=shared snapshots=on console=readline visibility=default || : - -# Sigh. I f*****g hate scons. -# But gyp is worse. -# rm -rf d8 - -# g++ $RPM_OPT_FLAGS -o d8 obj/release/d8.os -lreadline -lpthread -L. -lv8 $ICU_LINK_FLAGS - -%install -rm -rf %{buildroot} -mkdir -p %{buildroot}%{_includedir} -mkdir -p %{buildroot}%{_libdir} -install -p include/*.h %{buildroot}%{_includedir} -install -p libv8.so.%{sover} %{buildroot}%{_libdir} -install -p libv8preparser.so.%{sover} %{buildroot}%{_libdir} -mkdir -p %{buildroot}%{_bindir} -install -p -m0755 d8 %{buildroot}%{_bindir} - -pushd %{buildroot}%{_libdir} -ln -sf libv8.so.%{sover} libv8.so -ln -sf libv8.so.%{sover} libv8.so.%{somajor} -ln -sf libv8.so.%{sover} libv8.so.%{somajor}.%{sominor} -ln -sf libv8preparser.so.%{sover} libv8preparser.so -ln -sf libv8preparser.so.%{sover} libv8preparser.so.%{somajor} -ln -sf libv8preparser.so.%{sover} libv8preparser.so.%{somajor}.%{sominor} -popd - -chmod -x %{buildroot}%{_includedir}/v8*.h - -mkdir -p %{buildroot}%{_includedir}/v8/extensions/ -install -p src/extensions/*.h %{buildroot}%{_includedir}/v8/extensions/ - -chmod -x %{buildroot}%{_includedir}/v8/extensions/*.h - -# install Python JS minifier scripts for nodejs -install -d %{buildroot}%{python_sitelib} -sed -i 's|/usr/bin/python2.4|/usr/bin/env python|g' tools/jsmin.py -sed -i 's|/usr/bin/python2.4|/usr/bin/env python|g' tools/js2c.py -install -p -m0744 tools/jsmin.py %{buildroot}%{python_sitelib}/ -install -p -m0744 tools/js2c.py %{buildroot}%{python_sitelib}/ -chmod -R -x %{buildroot}%{python_sitelib}/*.py* - -%clean -rm -rf %{buildroot} - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%files -%defattr(-,root,root,-) -%doc AUTHORS ChangeLog LICENSE -%{_bindir}/d8 -%{_libdir}/*.so.* - -%files devel -%defattr(-,root,root,-) -%{_includedir}/*.h -%dir %{_includedir}/v8/ -%{_includedir}/v8/extensions/ -%{_libdir}/*.so -%{python_sitelib}/j*.py* - -%changelog -* Thu Apr 23 2015 Tom Callaway - 1:3.14.5.10-18 -- backport security fix for ARM - CVE-2014-3152 - -* Thu Feb 19 2015 T.C. Hollingsworth - 1:3.14.5.10-17 -- backports for nodejs 0.10.36 - -* Mon Jan 26 2015 David Tardon - 1:3.14.5.10-16 -- rebuild for ICU 54.1 - -* Tue Dec 2 2014 Tom Callaway - 1:3.14.5.10-15 -- use system valgrind header (bz1141483) - -* Wed Sep 17 2014 T.C. Hollingsworth - 1:3.14.5.10-14 -- backport bugfix that eliminates unused-local-typedefs warning -- backport security fix: Fix Hydrogen bounds check elimination (CVE-2013-6668; RHBZ#1086120) -- backport fix to segfault caused by the above patch - -* Tue Aug 26 2014 David Tardon - 1:3.14.5.10-13 -- rebuild for ICU 53.1 - -* Mon Aug 18 2014 Fedora Release Engineering - 1:3.14.5.10-12 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Thu Jul 31 2014 T.C. Hollingsworth - 1:3.14.5.10-11 -- backport security fix for memory corruption and stack overflow (RHBZ#1125464) - https://groups.google.com/d/msg/nodejs/-siJEObdp10/2xcqqmTHiEMJ -- backport bug fix for x64 MathMinMax for negative untagged int32 arguments. - https://github.com/joyent/node/commit/3530fa9cd09f8db8101c4649cab03bcdf760c434 - -* Thu Jun 19 2014 T.C. Hollingsworth - 1:3.14.5.10-10 -- fix corner case in integer comparisons (v8 bug#2416; nodejs bug#7528) - -* Sun Jun 08 2014 Fedora Release Engineering - 1:3.14.5.10-9 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Sat May 03 2014 T.C. Hollingsworth - 1:3.14.5.10-8 -- use clock_gettime() instead of gettimeofday(), which increases V8 performance - dramatically on virtual machines - -* Tue Mar 18 2014 T.C. Hollingsworth - 1:3.14.5.10-7 -- backport fix for unsigned integer arithmetic (RHBZ#1077136; CVE-2014-1704) - -* Mon Feb 24 2014 Tomas Hrcka - 1:3.14.5.10-6 -- Backport fix for incorrect handling of popular pages (RHBZ#1059070; CVE-2013-6640) - -* Fri Feb 14 2014 T.C. Hollingsworth - 1:3.14.5.10-5 -- rebuild for icu-52 - -* Mon Jan 27 2014 T.C. Hollingsworth - 1:3.14.5.10-4 -- backport fix for enumeration for objects with lots of properties - -* Fri Dec 13 2013 T.C. Hollingsworth - 1:3.14.5.10-3 -- backport fix for out-of-bounds read DoS (RHBZ#1039889; CVE-2013-6640) - -* Fri Aug 02 2013 T.C. Hollingsworth - 1:3.14.5.10-2 -- backport fix for remote DoS or unspecified other impact via type confusion - (RHBZ#991116; CVE-2013-2882) - -* Wed May 29 2013 T.C. Hollingsworth - 1:3.14.5.10-1 -- new upstream release 3.14.5.10 - -* Mon May 06 2013 Stanislav Ochotnicky - 1:3.14.5.8-2 -- Fix ownership of include directory (#958729) - -* Fri Mar 22 2013 T.C. Hollingsworth - 1:3.14.5.8-1 -- new upstream release 3.14.5.8 -- backport security fix for remote DoS via crafted javascript (RHBZ#924495; CVE-2013-2632) - -* Mon Mar 11 2013 Stephen Gallagher - 1:3.14.5.7-3 -- Update to v8 3.14.5.7 for Node.js 0.10.0 - -* Sat Jan 26 2013 T.C. Hollingsworth - 1:3.13.7.5-2 -- rebuild for icu-50 -- ignore new GCC 4.8 warning - -* Tue Dec 4 2012 Tom Callaway - 1:3.13.7.5-1 -- update to 3.13.7.5 (needed for chromium 23) -- Resolves multiple security issues (CVE-2012-5120, CVE-2012-5128) -- d8 is now using a static libv8, resolves bz 881973) - -* Sun Jul 22 2012 Fedora Release Engineering - 1:3.10.8-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Fri Jul 6 2012 Tom Callaway 1:3.10.8-1 -- update to 3.10.8 (chromium 20) - -* Tue Jun 12 2012 Tom Callaway 1:3.9.24-1 -- update to 3.9.24 (chromium 19) - -* Mon Apr 23 2012 Thomas Spura 1:3.7.12.6 -- rebuild for icu-49 - -* Fri Mar 30 2012 Dennis Gilmore 1:3.7.12-5 -- make sure the right arm abi is used in the second call of scons - -* Thu Mar 29 2012 Dennis Gilmore 1:3.7.12-4 -- use correct arm macros -- use the correct abis for hard and soft float - -* Tue Mar 20 2012 Tom Callaway 3.7.12-3 -- merge changes from Fedora spec file, sync, add epoch - -* Fri Feb 17 2012 Tom Callaway 3.7.12-2 -- add -Wno-error=strict-overflow for gcc 4.7 (hack, hack, hack) - -* Mon Feb 13 2012 Tom Callaway 3.7.12-1 -- update to 3.7.12 - -* Thu Nov 3 2011 Tom Callaway 3.5.10-1 -- update to 3.5.10 - -* Mon Sep 26 2011 Tom Callaway 3.4.14-2 -- final 3.4.14 tag -- include JavaScript minifier scripts in -devel - -* Fri Jun 10 2011 Tom Callaway 3.2.10-1 -- tag 3.2.10 - -* Thu Apr 28 2011 Tom Callaway 3.1.8-1 -- "stable" v8 match for "stable" chromium (tag 3.1.8) - -* Tue Feb 22 2011 Tom Callaway 3.1.5-1.20110222svn6902 -- update to 3.1.5 -- enable experimental i18n icu stuff for chromium - -* Tue Jan 11 2011 Tom Callaway 3.0.7-1.20110111svn6276 -- update to 3.0.7 - -* Tue Dec 14 2010 Tom "spot" Callaway 3.0.0-2.20101209svn5957 -- fix sloppy code where NULL is used - -* Thu Dec 9 2010 Tom "spot" Callaway 3.0.0-1.20101209svn5957 -- update to 3.0.0 - -* Fri Oct 22 2010 Tom "spot" Callaway 2.5.1-1.20101022svn5692 -- update to 2.5.1 -- fix another fwrite with no return checking case - -* Thu Oct 14 2010 Tom "spot" Callaway 2.5.0-1.20101014svn5625 -- update to 2.5.0 - -* Mon Oct 4 2010 Tom "spot" Callaway 2.4.8-1.20101004svn5585 -- update to 2.4.8 - -* Tue Sep 14 2010 Tom "spot" Callaway 2.4.3-1.20100914svn5450 -- update to 2.4.3 - -* Tue Aug 31 2010 Tom "spot" Callaway 2.3.11-1.20100831svn5385 -- update to svn5385 - -* Fri Aug 27 2010 Tom "spot" Callaway 2.3.11-1.20100827svn5365 -- update to 2.3.11, svn5365 - -* Tue Aug 24 2010 Tom "spot" Callaway 2.3.10-1.20100824svn5332 -- update to 2.3.10, svn5332 - -* Thu Aug 18 2010 Tom "spot" Callaway 2.3.9-1.20100819svn5308 -- update to 2.3.9, svn5308 - -* Thu Aug 11 2010 Tom "spot" Callaway 2.3.7-1.20100812svn5251 -- update to svn5251 - -* Wed Aug 11 2010 Tom "spot" Callaway 2.3.7-1.20100811svn5248 -- update to 2.3.7, svn5248 - -* Mon Aug 10 2010 Tom "spot" Callaway 2.3.6-1.20100809svn5217 -- update to 2.3.6, svn5217 - -* Fri Aug 6 2010 Tom "spot" Callaway 2.3.5-1.20100806svn5198 -- update to 2.3.5, svn5198 - -* Mon Jul 26 2010 Tom "spot" Callaway 2.3.3-1.20100726svn5134 -- update to 2.3.3, svn5134 - -* Fri Jul 16 2010 Tom "spot" Callaway 2.3.0-1.20100716svn5088 -- update to 2.3.0, svn5088 - -* Tue Jul 6 2010 Tom "spot" Callaway 2.2.22-1.20100706svn5023 -- update to 2.2.22, svn5023 - -* Fri Jul 2 2010 Tom "spot" Callaway 2.2.21-1.20100702svn5010 -- update to svn5010 - -* Wed Jun 30 2010 Tom "spot" Callaway 2.2.21-1.20100630svn4993 -- update to 2.2.21, svn4993 -- include checkout script - -* Thu Jun 3 2010 Tom "spot" Callaway 2.2.14-1.20100603svn4792 -- update to 2.2.14, svn4792 - -* Tue Jun 1 2010 Tom "spot" Callaway 2.2.13-1.20100601svn4772 -- update to 2.2.13, svn4772 - -* Thu May 27 2010 Tom "spot" Callaway 2.2.12-1.20100527svn4747 -- update to 2.2.12, svn4747 - -* Tue May 25 2010 Tom "spot" Callaway 2.2.11-1.20100525svn4718 -- update to 2.2.11, svn4718 - -* Thu May 20 2010 Tom "spot" Callaway 2.2.10-1.20100520svn4684 -- update to svn4684 - -* Mon May 17 2010 Tom "spot" Callaway 2.2.10-1.20100517svn4664 -- update to 2.2.10, svn4664 - -* Thu May 13 2010 Tom "spot" Callaway 2.2.9-1.20100513svn4653 -- update to svn4653 - -* Mon May 10 2010 Tom "spot" Callaway 2.2.9-1.20100510svn4636 -- update to 2.2.9, svn4636 - -* Tue May 4 2010 Tom "spot" Callaway 2.2.7-1.20100504svn4581 -- update to 2.2.7, svn4581 - -* Mon Apr 19 2010 Tom "spot" Callaway 2.2.3-1.20100419svn4440 -- update to 2.2.3, svn4440 - -* Tue Apr 13 2010 Tom "spot" Callaway 2.2.2-1.20100413svn4397 -- update to 2.2.2, svn4397 - -* Thu Apr 8 2010 Tom "spot" Callaway 2.2.1-1.20100408svn4359 -- update to 2.2.1, svn4359 - -* Mon Mar 29 2010 Tom "spot" Callaway 2.2.0-1.20100329svn4309 -- update to 2.2.0, svn4309 - -* Thu Mar 25 2010 Tom "spot" Callaway 2.1.8-1.20100325svn4273 -- update to 2.1.8, svn4273 - -* Mon Mar 22 2010 Tom "spot" Callaway 2.1.5-1.20100322svn4204 -- update to 2.1.5, svn4204 - -* Mon Mar 15 2010 Tom "spot" Callaway 2.1.4-1.20100315svn4129 -- update to 2.1.4, svn4129 - -* Wed Mar 10 2010 Tom "spot" Callaway 2.1.0-1.20100310svn4088 -- update to 2.1.3, svn4088 - -* Thu Feb 18 2010 Tom "spot" Callaway 2.1.0-1.20100218svn3902 -- update to 2.1.0, svn3902 - -* Fri Jan 22 2010 Tom "spot" Callaway 2.0.6-1.20100122svn3681 -- update to 2.0.6, svn3681 - -* Tue Dec 29 2009 Tom "spot" Callaway 2.0.5-1.20091229svn3528 -- svn3528 - -* Mon Dec 21 2009 Tom "spot" Callaway 2.0.5-1.20091221svn3511 -- update to 2.0.5, svn3511 - -* Wed Dec 9 2009 Tom "spot" Callaway 2.0.3-1.20091209svn3443 -- update to 2.0.3, svn3443 - -* Tue Nov 24 2009 Tom "spot" Callaway 2.0.2-1.20091124svn3353 -- update to 2.0.2, svn3353 - -* Wed Nov 18 2009 Tom "spot" Callaway 2.0.0-1.20091118svn3334 -- update to 2.0.0, svn3334 - -* Tue Oct 27 2009 Tom "spot" Callaway 1.3.16-1.20091027svn3152 -- update to 1.3.16, svn3152 - -* Tue Oct 13 2009 Tom "spot" Callaway 1.3.15-1.20091013svn3058 -- update to svn3058 - -* Thu Oct 8 2009 Tom "spot" Callaway 1.3.15-1.20091008svn3036 -- update to 1.3.15, svn3036 - -* Tue Sep 29 2009 Tom "spot" Callaway 1.3.13-1.20090929svn2985 -- update to svn2985 -- drop unused parameter patch, figured out how to work around it with optflag mangling -- have I mentioned lately that scons is garbage? - -* Mon Sep 28 2009 Tom "spot" Callaway 1.3.13-1.20090928svn2980 -- update to 1.3.13, svn2980 - -* Wed Sep 16 2009 Tom "spot" Callaway 1.3.11-1.20090916svn2903 -- update to 1.3.11, svn2903 - -* Wed Sep 9 2009 Tom "spot" Callaway 1.3.9-1.20090909svn2862 -- update to 1.3.9, svn2862 - -* Thu Aug 27 2009 Tom "spot" Callaway 1.3.8-1.20090827svn2777 -- update to 1.3.8, svn2777 - -* Mon Aug 24 2009 Tom "spot" Callaway 1.3.6-1.20090824svn2747 -- update to 1.3.6, svn2747 - -* Tue Aug 18 2009 Tom "spot" Callaway 1.3.4-1.20090818svn2708 -- update to svn2708, build and package d8 - -* Fri Aug 14 2009 Tom "spot" Callaway 1.3.4-1.20090814svn2692 -- update to 1.3.4, svn2692 - -* Wed Aug 12 2009 Tom "spot" Callaway 1.3.3-1.20090812svn2669 -- update to 1.3.3, svn2669 - -* Mon Aug 10 2009 Tom "spot" Callaway 1.3.2-1.20090810svn2658 -- update to svn2658 - -* Fri Aug 7 2009 Tom "spot" Callaway 1.3.2-1.20090807svn2653 -- update to svn2653 - -* Wed Aug 5 2009 Tom "spot" Callaway 1.3.2-1.20090805svn2628 -- update to 1.3.2, svn2628 - -* Mon Aug 3 2009 Tom "spot" Callaway 1.3.1-1.20090803svn2607 -- update to svn2607 - -* Fri Jul 31 2009 Tom "spot" Callaway 1.3.1-1.20090731svn2602 -- update to svn2602 - -* Thu Jul 30 2009 Tom "spot" Callaway 1.3.1-1.20090730svn2592 -- update to 1.3.1, svn 2592 - -* Mon Jul 27 2009 Tom "spot" Callaway 1.3.0-1.20090727svn2543 -- update to 1.3.0, svn 2543 - -* Fri Jul 24 2009 Tom "spot" Callaway 1.2.14-1.20090724svn2534 -- update to svn2534 - -* Mon Jul 20 2009 Tom "spot" Callaway 1.2.14-1.20090720svn2510 -- update to svn2510 - -* Thu Jul 16 2009 Tom "spot" Callaway 1.2.14-1.20090716svn2488 -- update to svn2488 - -* Wed Jul 15 2009 Tom "spot" Callaway 1.2.14-1.20090715svn2477 -- update to 1.2.14, svn2477 - -* Mon Jul 13 2009 Tom "spot" Callaway 1.2.13-1.20090713svn2434 -- update to svn2434 - -* Sat Jul 11 2009 Tom "spot" Callaway 1.2.13-1.20090711svn2430 -- update to 1.2.13, svn2430 - -* Wed Jul 8 2009 Tom "spot" Callaway 1.2.12-1.20090708svn2391 -- update to 1.2.12, svn2391 - -* Sat Jul 4 2009 Tom "spot" Callaway 1.2.11-1.20090704svn2356 -- update to 1.2.11, svn2356 - -* Fri Jun 26 2009 Tom "spot" Callaway 1.2.9-1.20090626svn2284 -- update to svn2284 - -* Wed Jun 24 2009 Tom "spot" Callaway 1.2.9-1.20090624svn2262 -- update to 1.2.9, svn2262 - -* Thu Jun 18 2009 Tom "spot" Callaway 1.2.7-2.20090618svn2219 -- fix unused-parameter patch - -* Thu Jun 18 2009 Tom "spot" Callaway 1.2.7-1.20090618svn2219 -- update to 1.2.8, svn2219 - -* Mon Jun 8 2009 Tom "spot" Callaway 1.2.7-2.20090608svn2123 -- fix gcc44 compile for Fedora 11 - -* Mon Jun 8 2009 Tom "spot" Callaway 1.2.7-1.20090608svn2123 -- update to 1.2.7, svn2123 - -* Thu May 28 2009 Tom "spot" Callaway 1.2.5-1.20090528svn2072 -- update to newer svn checkout - -* Sun Feb 22 2009 Tom "spot" Callaway 1.0.1-1.20090222svn1332 -- update to newer svn checkout - -* Sun Sep 14 2008 Tom "spot" Callaway 0.2-2.20080914svn300 -- make a versioned shared library properly - -* Sun Sep 14 2008 Tom "spot" Callaway 0.2-1.20080914svn300 -- Initial package for Fedora -