Compare commits
58 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0bee89231a | ||
|
|
0c04b3fd1d | ||
| d27c852231 | |||
|
2743eb7f00 |
|||
|
|
778e2e2656 | ||
|
|
6ee2d66a85 | ||
|
|
352b2d6fa7 | ||
|
|
54f35ffafe | ||
|
|
e761db14fb | ||
|
|
1d10652fdf | ||
| c6c75a4d10 | |||
|
|
635f6696af | ||
|
|
5671b844eb | ||
| 596c60665a | |||
|
|
3c880f4ed0 | ||
|
|
a9c7ab9c26 | ||
|
|
7881bbcddc | ||
|
|
6fbf9a9fbf | ||
|
|
c294b122ff | ||
|
|
93d511b5e9 | ||
|
|
b4c0cf2c42 | ||
|
|
de0cf1e11f | ||
|
|
f9123b4180 | ||
| 12974b749a | |||
|
|
e1c1ef71a0 | ||
|
|
5dd4dfc508 | ||
| 267f0d30fa | |||
| 2658cd3404 | |||
|
|
22eda50fa1 | ||
|
|
d9d42c9fee | ||
|
|
bbc0e064fe | ||
|
|
6449a12573 | ||
|
|
3c8bd8a5cb | ||
|
|
c2d01be922 | ||
|
|
b1057bfbd2 | ||
|
|
f79d2b6081 | ||
|
|
edda7cb1fb | ||
|
|
2aa9f0835f | ||
|
|
d4b53bd3f6 | ||
|
|
cea19c4e93 | ||
|
|
bce8a87f55 | ||
|
|
60eff070bd | ||
|
|
cfe7ca2a76 | ||
|
|
09b6c75672 | ||
|
|
c9f9d6a6cc | ||
|
|
0c7060e97b | ||
|
|
5d3a24c1f4 | ||
|
|
8af37ed85a | ||
|
|
d649778318 | ||
|
|
3f77d2b135 | ||
|
|
c219b322d4 | ||
|
|
16aab537a0 | ||
|
|
d9db6a5db8 | ||
|
|
ef6678d5fd | ||
|
|
23ce95dd8a | ||
|
|
8aeaf438e8 | ||
|
|
0ae0a878fc | ||
|
|
3875347460 |
35 changed files with 1 additions and 3358 deletions
10
.gitignore
vendored
10
.gitignore
vendored
|
|
@ -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
|
||||
1
dead.package
Normal file
1
dead.package
Normal file
|
|
@ -0,0 +1 @@
|
|||
extremely difficult to maintain, nothing uses it
|
||||
1
sources
1
sources
|
|
@ -1 +0,0 @@
|
|||
d4e3a038ad387fd7b75d40a89e231ef7 v8-3.14.5.10.tar.bz2
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
From 9342a28b524c1679d6d664ed09b8db326ddbeb3e Mon Sep 17 00:00:00 2001
|
||||
From: Lubomir Rintel <lkundrak@v3.sk>
|
||||
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,
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
From 503755a1addc229e917f837e212403e03e7bf243 Mon Sep 17 00:00:00 2001
|
||||
From: Lubomir Rintel <lkundrak@v3.sk>
|
||||
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
|
||||
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
From 18e43f925d5d502b7531f40e4a1becba56089303 Mon Sep 17 00:00:00 2001
|
||||
From: "mstarzinger@chromium.org" <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<FunctionTemplate> templ = FunctionTemplate::New(DummyCallHandler);
|
||||
+ CompileRun("for (var i = 0; i < 128; i++) Object.prototype[i] = 0;");
|
||||
+ Local<Function> function = templ->GetFunction();
|
||||
+ CHECK(!function.IsEmpty());
|
||||
+ CHECK(function->IsFunction());
|
||||
+}
|
||||
+
|
||||
+
|
||||
#ifndef WIN32
|
||||
class ThreadInterruptTest {
|
||||
public:
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
|
@ -1,316 +0,0 @@
|
|||
From 520f94a1da96b0f1fd3d0e0c0b82e4d7c1e7d58f Mon Sep 17 00:00:00 2001
|
||||
From: "T.C. Hollingsworth" <tchollingsworth@gmail.com>
|
||||
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
|
||||
|
||||
|
|
@ -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?= <thrcka@redhat.com>
|
||||
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
|
||||
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
From 3122e0eae64c5ab494b29d0a9cadef902d93f1f9 Mon Sep 17 00:00:00 2001
|
||||
From: Fedor Indutny <fedor@indutny.com>
|
||||
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);
|
||||
|
|
@ -1,186 +0,0 @@
|
|||
From fd80a31e0697d6317ce8c2d289575399f4e06d21 Mon Sep 17 00:00:00 2001
|
||||
From: Fedor Indutny <fedor@indutny.com>
|
||||
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 {
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
From bf973073d98660edf35e01e6984029e46eb85368 Mon Sep 17 00:00:00 2001
|
||||
From: "dslomov@chromium.org"
|
||||
<dslomov@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
|
||||
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_t>(size);
|
||||
// Guard against integer overflow.
|
||||
- if (new_size_no_overhead < size || new_size < kSegmentOverhead) {
|
||||
+ if (new_size_no_overhead < static_cast<size_t>(size) ||
|
||||
+ new_size < static_cast<size_t>(kSegmentOverhead)) {
|
||||
V8::FatalProcessOutOfMemory("Zone");
|
||||
return NULL;
|
||||
}
|
||||
- if (new_size < kMinimumSegmentSize) {
|
||||
+ if (new_size < static_cast<size_t>(kMinimumSegmentSize)) {
|
||||
new_size = kMinimumSegmentSize;
|
||||
- } else if (new_size > kMaximumSegmentSize) {
|
||||
+ } else if (new_size > static_cast<size_t>(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<size_t>(kMaximumSegmentSize));
|
||||
}
|
||||
- Segment* segment = NewSegment(new_size);
|
||||
+ if (new_size > INT_MAX) {
|
||||
+ V8::FatalProcessOutOfMemory("Zone");
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ Segment* segment = NewSegment(static_cast<int>(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<uintptr_t>(position_)
|
||||
+ < reinterpret_cast<uintptr_t>(result)) {
|
||||
V8::FatalProcessOutOfMemory("Zone");
|
||||
return NULL;
|
||||
}
|
||||
--
|
||||
1.8.5.3
|
||||
|
||||
|
|
@ -1,195 +0,0 @@
|
|||
diff -up v8-3.14.5.10/include/v8.h.riu v8-3.14.5.10/include/v8.h
|
||||
--- v8-3.14.5.10/include/v8.h.riu 2015-09-21 13:31:44.871068685 -0400
|
||||
+++ v8-3.14.5.10/include/v8.h 2015-09-21 13:32:08.884868178 -0400
|
||||
@@ -1076,7 +1076,11 @@ class String : public Primitive {
|
||||
NO_OPTIONS = 0,
|
||||
HINT_MANY_WRITES_EXPECTED = 1,
|
||||
NO_NULL_TERMINATION = 2,
|
||||
- PRESERVE_ASCII_NULL = 4
|
||||
+ PRESERVE_ASCII_NULL = 4,
|
||||
+ // Used by WriteUtf8 to replace orphan surrogate code units with the
|
||||
+ // unicode replacement character. Needs to be set to guarantee valid UTF-8
|
||||
+ // output.
|
||||
+ REPLACE_INVALID_UTF8 = 8
|
||||
};
|
||||
|
||||
// 16-bit character codes.
|
||||
diff -up v8-3.14.5.10/src/api.cc.riu v8-3.14.5.10/src/api.cc
|
||||
--- v8-3.14.5.10/src/api.cc.riu 2015-09-21 13:33:24.604235945 -0400
|
||||
+++ v8-3.14.5.10/src/api.cc 2015-09-21 13:37:21.428258540 -0400
|
||||
@@ -3759,7 +3759,8 @@ static int RecursivelySerializeToUtf8(i:
|
||||
int end,
|
||||
int recursion_budget,
|
||||
int32_t previous_character,
|
||||
- int32_t* last_character) {
|
||||
+ int32_t* last_character,
|
||||
+ bool replace_invalid_utf8) {
|
||||
int utf8_bytes = 0;
|
||||
while (true) {
|
||||
if (string->IsAsciiRepresentation()) {
|
||||
@@ -3775,7 +3776,10 @@ static int RecursivelySerializeToUtf8(i:
|
||||
for (int i = start; i < end; i++) {
|
||||
uint16_t character = data[i];
|
||||
current +=
|
||||
- unibrow::Utf8::Encode(current, character, previous_character);
|
||||
+ unibrow::Utf8::Encode(current,
|
||||
+ character,
|
||||
+ previous_character,
|
||||
+ replace_invalid_utf8);
|
||||
previous_character = character;
|
||||
}
|
||||
*last_character = previous_character;
|
||||
@@ -3788,7 +3792,10 @@ static int RecursivelySerializeToUtf8(i:
|
||||
for (int i = start; i < end; i++) {
|
||||
uint16_t character = data[i];
|
||||
current +=
|
||||
- unibrow::Utf8::Encode(current, character, previous_character);
|
||||
+ unibrow::Utf8::Encode(current,
|
||||
+ character,
|
||||
+ previous_character,
|
||||
+ replace_invalid_utf8);
|
||||
previous_character = character;
|
||||
}
|
||||
*last_character = previous_character;
|
||||
@@ -3824,7 +3831,8 @@ static int RecursivelySerializeToUtf8(i:
|
||||
boundary,
|
||||
recursion_budget - 1,
|
||||
previous_character,
|
||||
- &previous_character);
|
||||
+ &previous_character,
|
||||
+ replace_invalid_utf8);
|
||||
if (extra_utf8_bytes < 0) return extra_utf8_bytes;
|
||||
buffer += extra_utf8_bytes;
|
||||
utf8_bytes += extra_utf8_bytes;
|
||||
@@ -3879,7 +3887,10 @@ int String::WriteUtf8(char* buffer,
|
||||
return len;
|
||||
}
|
||||
|
||||
- if (capacity == -1 || capacity / 3 >= string_length) {
|
||||
+ bool replace_invalid_utf8 = (options & REPLACE_INVALID_UTF8);
|
||||
+ int max16BitCodeUnitSize = unibrow::Utf8::kMax16BitCodeUnitSize;
|
||||
+
|
||||
+ if (capacity == -1 || capacity / max16BitCodeUnitSize >= string_length) {
|
||||
int32_t previous = unibrow::Utf16::kNoPreviousCharacter;
|
||||
const int kMaxRecursion = 100;
|
||||
int utf8_bytes =
|
||||
@@ -3889,7 +3900,8 @@ int String::WriteUtf8(char* buffer,
|
||||
string_length,
|
||||
kMaxRecursion,
|
||||
previous,
|
||||
- &previous);
|
||||
+ &previous,
|
||||
+ replace_invalid_utf8);
|
||||
if (utf8_bytes >= 0) {
|
||||
// Success serializing with recursion.
|
||||
if ((options & NO_NULL_TERMINATION) == 0 &&
|
||||
@@ -3942,14 +3954,16 @@ int String::WriteUtf8(char* buffer,
|
||||
char intermediate[unibrow::Utf8::kMaxEncodedSize];
|
||||
for (; i < len && pos < capacity; i++) {
|
||||
i::uc32 c = write_input_buffer.GetNext();
|
||||
- if (unibrow::Utf16::IsTrailSurrogate(c) &&
|
||||
- unibrow::Utf16::IsLeadSurrogate(previous)) {
|
||||
+ if (unibrow::Utf16::IsSurrogatePair(previous, c)) {
|
||||
// We can't use the intermediate buffer here because the encoding
|
||||
// of surrogate pairs is done under assumption that you can step
|
||||
// back and fix the UTF8 stream. Luckily we only need space for one
|
||||
// more byte, so there is always space.
|
||||
ASSERT(pos < capacity);
|
||||
- int written = unibrow::Utf8::Encode(buffer + pos, c, previous);
|
||||
+ int written = unibrow::Utf8::Encode(buffer + pos,
|
||||
+ c,
|
||||
+ previous,
|
||||
+ replace_invalid_utf8);
|
||||
ASSERT(written == 1);
|
||||
pos += written;
|
||||
nchars++;
|
||||
@@ -3957,7 +3971,8 @@ int String::WriteUtf8(char* buffer,
|
||||
int written =
|
||||
unibrow::Utf8::Encode(intermediate,
|
||||
c,
|
||||
- unibrow::Utf16::kNoPreviousCharacter);
|
||||
+ unibrow::Utf16::kNoPreviousCharacter,
|
||||
+ replace_invalid_utf8);
|
||||
if (pos + written <= capacity) {
|
||||
for (int j = 0; j < written; j++) {
|
||||
buffer[pos + j] = intermediate[j];
|
||||
diff -up v8-3.14.5.10/src/unicode.h.riu v8-3.14.5.10/src/unicode.h
|
||||
--- v8-3.14.5.10/src/unicode.h.riu 2015-09-21 13:38:50.617513839 -0400
|
||||
+++ v8-3.14.5.10/src/unicode.h 2015-09-21 13:40:32.019667163 -0400
|
||||
@@ -117,6 +117,9 @@ class Buffer {
|
||||
|
||||
class Utf16 {
|
||||
public:
|
||||
+ static inline bool IsSurrogatePair(int lead, int trail) {
|
||||
+ return IsLeadSurrogate(lead) && IsTrailSurrogate(trail);
|
||||
+ }
|
||||
static inline bool IsLeadSurrogate(int code) {
|
||||
if (code == kNoPreviousCharacter) return false;
|
||||
return (code & 0xfc00) == 0xd800;
|
||||
@@ -152,13 +155,19 @@ class Utf16 {
|
||||
class Utf8 {
|
||||
public:
|
||||
static inline uchar Length(uchar chr, int previous);
|
||||
- static inline unsigned Encode(
|
||||
- char* out, uchar c, int previous);
|
||||
+ static inline unsigned Encode(char* out,
|
||||
+ uchar c,
|
||||
+ int previous,
|
||||
+ bool replace_invalid = false);
|
||||
static const byte* ReadBlock(Buffer<const char*> str, byte* buffer,
|
||||
unsigned capacity, unsigned* chars_read, unsigned* offset);
|
||||
static uchar CalculateValue(const byte* str,
|
||||
unsigned length,
|
||||
unsigned* cursor);
|
||||
+
|
||||
+
|
||||
+ // The unicode replacement character, used to signal invalid unicode
|
||||
+ // sequences (e.g. an orphan surrogate) when converting to a UTF-8 encoding.
|
||||
static const uchar kBadChar = 0xFFFD;
|
||||
static const unsigned kMaxEncodedSize = 4;
|
||||
static const unsigned kMaxOneByteChar = 0x7f;
|
||||
@@ -170,6 +179,9 @@ class Utf8 {
|
||||
// that match are coded as a 4 byte UTF-8 sequence.
|
||||
static const unsigned kBytesSavedByCombiningSurrogates = 2;
|
||||
static const unsigned kSizeOfUnmatchedSurrogate = 3;
|
||||
+ // The maximum size a single UTF-16 code unit may take up when encoded as
|
||||
+ // UTF-8.
|
||||
+ static const unsigned kMax16BitCodeUnitSize = 3;
|
||||
|
||||
private:
|
||||
template <unsigned s> friend class Utf8InputBuffer;
|
||||
diff -up v8-3.14.5.10/src/unicode-inl.h.riu v8-3.14.5.10/src/unicode-inl.h
|
||||
--- v8-3.14.5.10/src/unicode-inl.h.riu 2015-09-21 13:37:36.002136853 -0400
|
||||
+++ v8-3.14.5.10/src/unicode-inl.h 2015-09-21 13:38:41.566589411 -0400
|
||||
@@ -79,7 +79,10 @@ template <class T, int s> int Mapping<T,
|
||||
}
|
||||
|
||||
|
||||
-unsigned Utf8::Encode(char* str, uchar c, int previous) {
|
||||
+unsigned Utf8::Encode(char* str,
|
||||
+ uchar c,
|
||||
+ int previous,
|
||||
+ bool replace_invalid) {
|
||||
static const int kMask = ~(1 << 6);
|
||||
if (c <= kMaxOneByteChar) {
|
||||
str[0] = c;
|
||||
@@ -89,12 +92,16 @@ unsigned Utf8::Encode(char* str, uchar c
|
||||
str[1] = 0x80 | (c & kMask);
|
||||
return 2;
|
||||
} else if (c <= kMaxThreeByteChar) {
|
||||
- if (Utf16::IsTrailSurrogate(c) &&
|
||||
- Utf16::IsLeadSurrogate(previous)) {
|
||||
+ if (Utf16::IsSurrogatePair(previous, c)) {
|
||||
const int kUnmatchedSize = kSizeOfUnmatchedSurrogate;
|
||||
return Encode(str - kUnmatchedSize,
|
||||
Utf16::CombineSurrogatePair(previous, c),
|
||||
- Utf16::kNoPreviousCharacter) - kUnmatchedSize;
|
||||
+ Utf16::kNoPreviousCharacter,
|
||||
+ replace_invalid) - kUnmatchedSize;
|
||||
+ } else if (replace_invalid &&
|
||||
+ (Utf16::IsLeadSurrogate(c) ||
|
||||
+ Utf16::IsTrailSurrogate(c))) {
|
||||
+ c = kBadChar;
|
||||
}
|
||||
str[0] = 0xE0 | (c >> 12);
|
||||
str[1] = 0x80 | ((c >> 6) & kMask);
|
||||
|
|
@ -1,139 +0,0 @@
|
|||
From fbff7054a47551387a99244e2cf0631f30406798 Mon Sep 17 00:00:00 2001
|
||||
From: Trevor Norris <trev.norris@gmail.com>
|
||||
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 <trev.norris@gmail.com>
|
||||
---
|
||||
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<i::Isolate*>(this);
|
||||
+ isolate->SetAbortOnUncaughtException(callback);
|
||||
+}
|
||||
|
||||
void Isolate::Exit() {
|
||||
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(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;
|
||||
|
|
@ -1,137 +0,0 @@
|
|||
From 6ebd85e10535dfaa9181842fe73834e51d4d3e6c Mon Sep 17 00:00:00 2001
|
||||
From: Ben Noordhuis <info@bnoordhuis.nl>
|
||||
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 <trev.norris@gmail.com>
|
||||
---
|
||||
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<char> 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',
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
From 196184d332ba2d2defc56ad0b37653659a7d3ec0 Mon Sep 17 00:00:00 2001
|
||||
From: "svenpanne@chromium.org" <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
|
||||
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
From 530af9cb8e700e7596b3ec812bad123c9fa06356 Mon Sep 17 00:00:00 2001
|
||||
From: Fedor Indutny <fedor@indutny.com>
|
||||
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<uintptr_t>(this) < stack_guard->climit()) &&
|
||||
- stack_guard->IsStackOverflow();
|
||||
+ return reinterpret_cast<uintptr_t>(this) < stack_guard->real_climit();
|
||||
}
|
||||
private:
|
||||
Isolate* isolate_;
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
From 530af9cb8e700e7596b3ec812bad123c9fa06356 Mon Sep 17 00:00:00 2001
|
||||
From: Fedor Indutny <fedor@indutny.com>
|
||||
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<uintptr_t>(this) < stack_guard->climit()) &&
|
||||
- stack_guard->IsStackOverflow();
|
||||
+ return reinterpret_cast<uintptr_t>(this) < stack_guard->real_climit();
|
||||
}
|
||||
private:
|
||||
Isolate* isolate_;
|
||||
--
|
||||
2.0.3
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
From 431eb172f97434a3b0868a610bc14d8ff7d9efd9 Mon Sep 17 00:00:00 2001
|
||||
From: Ben Noordhuis <info@bnoordhuis.nl>
|
||||
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 <trev.norris@gmail.com>
|
||||
Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
|
||||
---
|
||||
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();
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -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 <valgrind/valgrind.h>
|
||||
#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 <valgrind/valgrind.h>
|
||||
#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
|
||||
}
|
||||
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
From 0ff51c6e063e3eea9e4d9ea68edc82d935626fc7 Mon Sep 17 00:00:00 2001
|
||||
From: Julien Gilli <julien.gilli@joyent.com>
|
||||
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)) {
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
From 53b4accb6e5747b156be91a2b90f42607e33a7cc Mon Sep 17 00:00:00 2001
|
||||
From: Timothy J Fontaine <tjfontaine@gmail.com>
|
||||
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 <int> class StaticAssertionHelper { };
|
||||
#define STATIC_CHECK(test) \
|
||||
typedef \
|
||||
StaticAssertionHelper<sizeof(StaticAssertion<static_cast<bool>((test))>)> \
|
||||
- SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__)
|
||||
+ SEMI_STATIC_JOIN(__StaticAssertTypedef__, __LINE__) V8_UNUSED
|
||||
|
||||
|
||||
extern bool FLAG_enable_slow_asserts;
|
||||
|
|
@ -1,122 +0,0 @@
|
|||
From f9ced08de30c37838756e8227bd091f80ad9cafa Mon Sep 17 00:00:00 2001
|
||||
From: Ben Noordhuis <ben@strongloop.com>
|
||||
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 <trev.norris@gmail.com>
|
||||
Signed-off-by: Fedor Indutny <fedor@indutny.com>
|
||||
---
|
||||
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<double>(tv.tv_sec) * 1000) +
|
||||
- (static_cast<double>(tv.tv_usec) / 1000);
|
||||
+ return static_cast<double>(Ticks()) / 1000;
|
||||
}
|
||||
|
||||
|
||||
int64_t OS::Ticks() {
|
||||
+#if defined(__linux__)
|
||||
+ static clockid_t clock_id = static_cast<clockid_t>(-1);
|
||||
+ struct timespec spec;
|
||||
+ if (clock_id == static_cast<clockid_t>(-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<int64_t>(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<int64_t>(tv.tv_sec) * 1000000) + tv.tv_usec;
|
||||
+#endif
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
1.9.1
|
||||
|
|
@ -1,105 +0,0 @@
|
|||
From 3530fa9cd09f8db8101c4649cab03bcdf760c434 Mon Sep 17 00:00:00 2001
|
||||
From: Fedor Indutny <fedor@indutny.com>
|
||||
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 <fedor@indutny.com>
|
||||
---
|
||||
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
|
||||
|
||||
|
|
@ -1,116 +0,0 @@
|
|||
From a960d1707a0038bfa5546c669b5b63c35bdb75c5 Mon Sep 17 00:00:00 2001
|
||||
From: Fedor Indutny <fedor@indutny.com>
|
||||
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
|
||||
|
|
@ -1,134 +0,0 @@
|
|||
From 5b1d2144ebd47ea768ca5b3cfcda830433c88efe Mon Sep 17 00:00:00 2001
|
||||
From: "T.C. Hollingsworth" <tchollingsworth@gmail.com>
|
||||
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<Expression*>* 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<const char*>::empty());
|
||||
*ok = false;
|
||||
@@ -4420,7 +4420,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral(Handle<String> 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<const char*>::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<Handle<String> > 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<Code> StubCache::ComputeCallConstant(int argc,
|
||||
Handle<Code> 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<Code> StubCache::ComputeCallField(int argc,
|
||||
Handle<Code> code =
|
||||
compiler.CompileCallField(Handle<JSObject>::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<Code> StubCache::ComputeCallInterceptor(int argc,
|
||||
Handle<Code> code =
|
||||
compiler.CompileCallInterceptor(Handle<JSObject>::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<Code> StubCache::ComputeCallGlobal(int argc,
|
||||
CallStubCompiler compiler(isolate(), argc, kind, extra_state, cache_holder);
|
||||
Handle<Code> 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
|
||||
|
||||
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
@ -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;
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
@ -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 <string.h>
|
||||
|
||||
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 <string.h>
|
||||
|
||||
-#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 <string.h>
|
||||
|
||||
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 <string.h>
|
||||
|
||||
-#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 <string.h>
|
||||
|
||||
-#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"
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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()
|
||||
|
|
@ -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
|
||||
4
v8-js2c
4
v8-js2c
|
|
@ -1,4 +0,0 @@
|
|||
#!/usr/bin/python
|
||||
|
||||
import js2c
|
||||
js2c.main ()
|
||||
726
v8.spec
726
v8.spec
|
|
@ -1,726 +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 <spot@fedoraproject.org>
|
||||
|
||||
# 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: 23%{?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
|
||||
|
||||
# Add REPLACE_INVALID_UTF8 handling that nodejs needs
|
||||
Patch20: v8-3.14.5.10-REPLACE_INVALID_UTF8.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.
|
||||
|
||||
%package python
|
||||
Summary: Python libraries from v8
|
||||
Requires: %{name} = %{epoch}:%{version}-%{release}
|
||||
|
||||
%description python
|
||||
Python libraries from 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
|
||||
%patch20 -p1 -b .riu
|
||||
|
||||
# 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
|
||||
|
||||
%files python
|
||||
%{python_sitelib}/j*.py*
|
||||
|
||||
%changelog
|
||||
* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1:3.14.5.10-23
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Wed Oct 28 2015 David Tardon <dtardon@redhat.com> - 1:3.14.5.10-22
|
||||
- rebuild for ICU 56.1
|
||||
|
||||
* Mon Sep 21 2015 Tom Callaway <spot@fedoraproject.org> - 1:3.14.5.10-21
|
||||
- add REPLACE_INVALID_UTF8 code needed for nodejs
|
||||
|
||||
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:3.14.5.10-20
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Mon Jun 8 2015 Tom Callaway <spot@fedoraproject.org> - 1:3.14.5.10-19
|
||||
- split off python subpackage (bz 959145)
|
||||
|
||||
* Thu Apr 23 2015 Tom Callaway <spot@fedoraproject.org> - 1:3.14.5.10-18
|
||||
- backport security fix for ARM - CVE-2014-3152
|
||||
|
||||
* Thu Feb 19 2015 T.C. Hollingsworth <tchollingsworth@gmail.com> - 1:3.14.5.10-17
|
||||
- backports for nodejs 0.10.36
|
||||
|
||||
* Mon Jan 26 2015 David Tardon <dtardon@redhat.com> - 1:3.14.5.10-16
|
||||
- rebuild for ICU 54.1
|
||||
|
||||
* Tue Dec 2 2014 Tom Callaway <spot@fedoraproject.org> - 1:3.14.5.10-15
|
||||
- use system valgrind header (bz1141483)
|
||||
|
||||
* Wed Sep 17 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <dtardon@redhat.com> - 1:3.14.5.10-13
|
||||
- rebuild for ICU 53.1
|
||||
|
||||
* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:3.14.5.10-12
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Thu Jul 31 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <rel-eng@lists.fedoraproject.org> - 1:3.14.5.10-9
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Sat May 03 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 1:3.14.5.10-7
|
||||
- backport fix for unsigned integer arithmetic (RHBZ#1077136; CVE-2014-1704)
|
||||
|
||||
* Mon Feb 24 2014 Tomas Hrcka <thrcka@redhat.com> - 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 <tchollingsworth@gmail.com> - 1:3.14.5.10-5
|
||||
- rebuild for icu-52
|
||||
|
||||
* Mon Jan 27 2014 T.C. Hollingsworth <tchollingsworth@gmail.com> - 1:3.14.5.10-4
|
||||
- backport fix for enumeration for objects with lots of properties
|
||||
|
||||
* Fri Dec 13 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 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 <tchollingsworth@gmail.com> - 1:3.14.5.10-1
|
||||
- new upstream release 3.14.5.10
|
||||
|
||||
* Mon May 06 2013 Stanislav Ochotnicky <sochotnicky@redhat.com> - 1:3.14.5.8-2
|
||||
- Fix ownership of include directory (#958729)
|
||||
|
||||
* Fri Mar 22 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 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 <sgallagh@redhat.com> - 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 <tchollingsworth@gmail.com> - 1:3.13.7.5-2
|
||||
- rebuild for icu-50
|
||||
- ignore new GCC 4.8 warning
|
||||
|
||||
* Tue Dec 4 2012 Tom Callaway <spot@fedoraproject.org> - 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 <rel-eng@lists.fedoraproject.org> - 1:3.10.8-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
* Fri Jul 6 2012 Tom Callaway <spot@fedoraproject.org> 1:3.10.8-1
|
||||
- update to 3.10.8 (chromium 20)
|
||||
|
||||
* Tue Jun 12 2012 Tom Callaway <spot@fedoraproject.org> 1:3.9.24-1
|
||||
- update to 3.9.24 (chromium 19)
|
||||
|
||||
* Mon Apr 23 2012 Thomas Spura <tomspur@fedoraproject.org> 1:3.7.12.6
|
||||
- rebuild for icu-49
|
||||
|
||||
* Fri Mar 30 2012 Dennis Gilmore <dennis@ausil.us> 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 <dennis@ausil.us> 1:3.7.12-4
|
||||
- use correct arm macros
|
||||
- use the correct abis for hard and soft float
|
||||
|
||||
* Tue Mar 20 2012 Tom Callaway <spot@fedoraproject.org> 3.7.12-3
|
||||
- merge changes from Fedora spec file, sync, add epoch
|
||||
|
||||
* Fri Feb 17 2012 Tom Callaway <spot@fedoraproject.org> 3.7.12-2
|
||||
- add -Wno-error=strict-overflow for gcc 4.7 (hack, hack, hack)
|
||||
|
||||
* Mon Feb 13 2012 Tom Callaway <spot@fedoraproject.org> 3.7.12-1
|
||||
- update to 3.7.12
|
||||
|
||||
* Thu Nov 3 2011 Tom Callaway <spot@fedoraproject.org> 3.5.10-1
|
||||
- update to 3.5.10
|
||||
|
||||
* Mon Sep 26 2011 Tom Callaway <spot@fedoraproject.org> 3.4.14-2
|
||||
- final 3.4.14 tag
|
||||
- include JavaScript minifier scripts in -devel
|
||||
|
||||
* Fri Jun 10 2011 Tom Callaway <spot@fedoraproject.org> 3.2.10-1
|
||||
- tag 3.2.10
|
||||
|
||||
* Thu Apr 28 2011 Tom Callaway <spot@fedoraproject.org> 3.1.8-1
|
||||
- "stable" v8 match for "stable" chromium (tag 3.1.8)
|
||||
|
||||
* Tue Feb 22 2011 Tom Callaway <spot@fedoraproject.org> 3.1.5-1.20110222svn6902
|
||||
- update to 3.1.5
|
||||
- enable experimental i18n icu stuff for chromium
|
||||
|
||||
* Tue Jan 11 2011 Tom Callaway <spot@fedoraproject.org> 3.0.7-1.20110111svn6276
|
||||
- update to 3.0.7
|
||||
|
||||
* Tue Dec 14 2010 Tom "spot" Callaway <tcallawa@redhat.com> 3.0.0-2.20101209svn5957
|
||||
- fix sloppy code where NULL is used
|
||||
|
||||
* Thu Dec 9 2010 Tom "spot" Callaway <tcallawa@redhat.com> 3.0.0-1.20101209svn5957
|
||||
- update to 3.0.0
|
||||
|
||||
* Fri Oct 22 2010 Tom "spot" Callaway <tcallawa@redhat.com> 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 <tcallawa@redhat.com> 2.5.0-1.20101014svn5625
|
||||
- update to 2.5.0
|
||||
|
||||
* Mon Oct 4 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.4.8-1.20101004svn5585
|
||||
- update to 2.4.8
|
||||
|
||||
* Tue Sep 14 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.4.3-1.20100914svn5450
|
||||
- update to 2.4.3
|
||||
|
||||
* Tue Aug 31 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.3.11-1.20100831svn5385
|
||||
- update to svn5385
|
||||
|
||||
* Fri Aug 27 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.3.11-1.20100827svn5365
|
||||
- update to 2.3.11, svn5365
|
||||
|
||||
* Tue Aug 24 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.3.10-1.20100824svn5332
|
||||
- update to 2.3.10, svn5332
|
||||
|
||||
* Thu Aug 18 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.3.9-1.20100819svn5308
|
||||
- update to 2.3.9, svn5308
|
||||
|
||||
* Thu Aug 11 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.3.7-1.20100812svn5251
|
||||
- update to svn5251
|
||||
|
||||
* Wed Aug 11 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.3.7-1.20100811svn5248
|
||||
- update to 2.3.7, svn5248
|
||||
|
||||
* Mon Aug 10 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.3.6-1.20100809svn5217
|
||||
- update to 2.3.6, svn5217
|
||||
|
||||
* Fri Aug 6 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.3.5-1.20100806svn5198
|
||||
- update to 2.3.5, svn5198
|
||||
|
||||
* Mon Jul 26 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.3.3-1.20100726svn5134
|
||||
- update to 2.3.3, svn5134
|
||||
|
||||
* Fri Jul 16 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.3.0-1.20100716svn5088
|
||||
- update to 2.3.0, svn5088
|
||||
|
||||
* Tue Jul 6 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.22-1.20100706svn5023
|
||||
- update to 2.2.22, svn5023
|
||||
|
||||
* Fri Jul 2 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.21-1.20100702svn5010
|
||||
- update to svn5010
|
||||
|
||||
* Wed Jun 30 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.21-1.20100630svn4993
|
||||
- update to 2.2.21, svn4993
|
||||
- include checkout script
|
||||
|
||||
* Thu Jun 3 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.14-1.20100603svn4792
|
||||
- update to 2.2.14, svn4792
|
||||
|
||||
* Tue Jun 1 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.13-1.20100601svn4772
|
||||
- update to 2.2.13, svn4772
|
||||
|
||||
* Thu May 27 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.12-1.20100527svn4747
|
||||
- update to 2.2.12, svn4747
|
||||
|
||||
* Tue May 25 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.11-1.20100525svn4718
|
||||
- update to 2.2.11, svn4718
|
||||
|
||||
* Thu May 20 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.10-1.20100520svn4684
|
||||
- update to svn4684
|
||||
|
||||
* Mon May 17 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.10-1.20100517svn4664
|
||||
- update to 2.2.10, svn4664
|
||||
|
||||
* Thu May 13 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.9-1.20100513svn4653
|
||||
- update to svn4653
|
||||
|
||||
* Mon May 10 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.9-1.20100510svn4636
|
||||
- update to 2.2.9, svn4636
|
||||
|
||||
* Tue May 4 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.7-1.20100504svn4581
|
||||
- update to 2.2.7, svn4581
|
||||
|
||||
* Mon Apr 19 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.3-1.20100419svn4440
|
||||
- update to 2.2.3, svn4440
|
||||
|
||||
* Tue Apr 13 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.2-1.20100413svn4397
|
||||
- update to 2.2.2, svn4397
|
||||
|
||||
* Thu Apr 8 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.1-1.20100408svn4359
|
||||
- update to 2.2.1, svn4359
|
||||
|
||||
* Mon Mar 29 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.2.0-1.20100329svn4309
|
||||
- update to 2.2.0, svn4309
|
||||
|
||||
* Thu Mar 25 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.1.8-1.20100325svn4273
|
||||
- update to 2.1.8, svn4273
|
||||
|
||||
* Mon Mar 22 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.1.5-1.20100322svn4204
|
||||
- update to 2.1.5, svn4204
|
||||
|
||||
* Mon Mar 15 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.1.4-1.20100315svn4129
|
||||
- update to 2.1.4, svn4129
|
||||
|
||||
* Wed Mar 10 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.1.0-1.20100310svn4088
|
||||
- update to 2.1.3, svn4088
|
||||
|
||||
* Thu Feb 18 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.1.0-1.20100218svn3902
|
||||
- update to 2.1.0, svn3902
|
||||
|
||||
* Fri Jan 22 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.0.6-1.20100122svn3681
|
||||
- update to 2.0.6, svn3681
|
||||
|
||||
* Tue Dec 29 2009 Tom "spot" Callaway <tcallawa@redhat.com> 2.0.5-1.20091229svn3528
|
||||
- svn3528
|
||||
|
||||
* Mon Dec 21 2009 Tom "spot" Callaway <tcallawa@redhat.com> 2.0.5-1.20091221svn3511
|
||||
- update to 2.0.5, svn3511
|
||||
|
||||
* Wed Dec 9 2009 Tom "spot" Callaway <tcallawa@redhat.com> 2.0.3-1.20091209svn3443
|
||||
- update to 2.0.3, svn3443
|
||||
|
||||
* Tue Nov 24 2009 Tom "spot" Callaway <tcallawa@redhat.com> 2.0.2-1.20091124svn3353
|
||||
- update to 2.0.2, svn3353
|
||||
|
||||
* Wed Nov 18 2009 Tom "spot" Callaway <tcallawa@redhat.com> 2.0.0-1.20091118svn3334
|
||||
- update to 2.0.0, svn3334
|
||||
|
||||
* Tue Oct 27 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.16-1.20091027svn3152
|
||||
- update to 1.3.16, svn3152
|
||||
|
||||
* Tue Oct 13 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.15-1.20091013svn3058
|
||||
- update to svn3058
|
||||
|
||||
* Thu Oct 8 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.15-1.20091008svn3036
|
||||
- update to 1.3.15, svn3036
|
||||
|
||||
* Tue Sep 29 2009 Tom "spot" Callaway <tcallawa@redhat.com> 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 <tcallawa@redhat.com> 1.3.13-1.20090928svn2980
|
||||
- update to 1.3.13, svn2980
|
||||
|
||||
* Wed Sep 16 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.11-1.20090916svn2903
|
||||
- update to 1.3.11, svn2903
|
||||
|
||||
* Wed Sep 9 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.9-1.20090909svn2862
|
||||
- update to 1.3.9, svn2862
|
||||
|
||||
* Thu Aug 27 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.8-1.20090827svn2777
|
||||
- update to 1.3.8, svn2777
|
||||
|
||||
* Mon Aug 24 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.6-1.20090824svn2747
|
||||
- update to 1.3.6, svn2747
|
||||
|
||||
* Tue Aug 18 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.4-1.20090818svn2708
|
||||
- update to svn2708, build and package d8
|
||||
|
||||
* Fri Aug 14 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.4-1.20090814svn2692
|
||||
- update to 1.3.4, svn2692
|
||||
|
||||
* Wed Aug 12 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.3-1.20090812svn2669
|
||||
- update to 1.3.3, svn2669
|
||||
|
||||
* Mon Aug 10 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.2-1.20090810svn2658
|
||||
- update to svn2658
|
||||
|
||||
* Fri Aug 7 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.2-1.20090807svn2653
|
||||
- update to svn2653
|
||||
|
||||
* Wed Aug 5 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.2-1.20090805svn2628
|
||||
- update to 1.3.2, svn2628
|
||||
|
||||
* Mon Aug 3 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.1-1.20090803svn2607
|
||||
- update to svn2607
|
||||
|
||||
* Fri Jul 31 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.1-1.20090731svn2602
|
||||
- update to svn2602
|
||||
|
||||
* Thu Jul 30 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.1-1.20090730svn2592
|
||||
- update to 1.3.1, svn 2592
|
||||
|
||||
* Mon Jul 27 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.3.0-1.20090727svn2543
|
||||
- update to 1.3.0, svn 2543
|
||||
|
||||
* Fri Jul 24 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.14-1.20090724svn2534
|
||||
- update to svn2534
|
||||
|
||||
* Mon Jul 20 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.14-1.20090720svn2510
|
||||
- update to svn2510
|
||||
|
||||
* Thu Jul 16 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.14-1.20090716svn2488
|
||||
- update to svn2488
|
||||
|
||||
* Wed Jul 15 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.14-1.20090715svn2477
|
||||
- update to 1.2.14, svn2477
|
||||
|
||||
* Mon Jul 13 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.13-1.20090713svn2434
|
||||
- update to svn2434
|
||||
|
||||
* Sat Jul 11 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.13-1.20090711svn2430
|
||||
- update to 1.2.13, svn2430
|
||||
|
||||
* Wed Jul 8 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.12-1.20090708svn2391
|
||||
- update to 1.2.12, svn2391
|
||||
|
||||
* Sat Jul 4 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.11-1.20090704svn2356
|
||||
- update to 1.2.11, svn2356
|
||||
|
||||
* Fri Jun 26 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.9-1.20090626svn2284
|
||||
- update to svn2284
|
||||
|
||||
* Wed Jun 24 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.9-1.20090624svn2262
|
||||
- update to 1.2.9, svn2262
|
||||
|
||||
* Thu Jun 18 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.7-2.20090618svn2219
|
||||
- fix unused-parameter patch
|
||||
|
||||
* Thu Jun 18 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.7-1.20090618svn2219
|
||||
- update to 1.2.8, svn2219
|
||||
|
||||
* Mon Jun 8 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.7-2.20090608svn2123
|
||||
- fix gcc44 compile for Fedora 11
|
||||
|
||||
* Mon Jun 8 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.7-1.20090608svn2123
|
||||
- update to 1.2.7, svn2123
|
||||
|
||||
* Thu May 28 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.2.5-1.20090528svn2072
|
||||
- update to newer svn checkout
|
||||
|
||||
* Sun Feb 22 2009 Tom "spot" Callaway <tcallawa@redhat.com> 1.0.1-1.20090222svn1332
|
||||
- update to newer svn checkout
|
||||
|
||||
* Sun Sep 14 2008 Tom "spot" Callaway <tcallawa@redhat.com> 0.2-2.20080914svn300
|
||||
- make a versioned shared library properly
|
||||
|
||||
* Sun Sep 14 2008 Tom "spot" Callaway <tcallawa@redhat.com> 0.2-1.20080914svn300
|
||||
- Initial package for Fedora
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue