Compare commits

...
Sign in to create a new pull request.

19 commits

Author SHA1 Message Date
Tom Callaway
0bee89231a extremely difficult to maintain, nothing uses it 2019-02-07 15:28:32 -05:00
Fedora Release Engineering
0c04b3fd1d - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-02-03 11:01:31 +00:00
d27c852231 Remove obsolete Group tag
References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag
2019-01-28 20:24:53 +01:00
2743eb7f00
Remove obsolete ldconfig scriptlets
References: https://fedoraproject.org/wiki/Changes/RemoveObsoleteScriptlets
Signed-off-by: Igor Gnatenko <ignatenkobrain@fedoraproject.org>
2019-01-22 18:41:16 +01:00
Tom Callaway
778e2e2656 disable python2 subpackage 2018-10-05 10:35:40 -04:00
Tom Callaway
6ee2d66a85 try with gold to see if it links on arm 2018-07-24 14:37:49 -04:00
Tom Callaway
352b2d6fa7 force python2 in gn 2018-07-24 10:48:58 -04:00
Tom Callaway
54f35ffafe fix python calls in depot_tools too 2018-07-24 10:18:01 -04:00
Tom Callaway
e761db14fb cleanup unversioned python parts, use_rtti=true 2018-07-24 10:07:11 -04:00
Fedora Release Engineering
1d10652fdf - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-07-14 08:22:40 +00:00
c6c75a4d10 Rebuild for ICU 62 2018-07-10 22:04:58 +01:00
Sergey Avseyev
635f6696af Add libv8_libbase.so symlink to devel package 2018-05-15 08:47:32 +03:00
Sergey Avseyev
5671b844eb Fix arm build (libc++abi issue)
Upstream ticket: https://bugs.llvm.org/show_bug.cgi?id=35945
Modified patch from https://reviews.llvm.org/D42242
2018-05-08 13:09:36 +03:00
596c60665a Rebuild for ICU 61.1 2018-04-30 20:43:31 +01:00
Tom Callaway
3c880f4ed0 fix i686 patch 2018-03-15 10:21:16 -04:00
Tom Callaway
a9c7ab9c26 missing patch 2018-03-15 10:06:40 -04:00
Tom Callaway
7881bbcddc fix merge 2018-03-14 16:29:06 -04:00
Tom Callaway
6fbf9a9fbf 6.7.17 2018-03-14 16:27:09 -04:00
Adam Williamson
c294b122ff Rebuild to fix GCC 8 mis-compilation
See https://da.gd/YJVwk ("GCC 8 ABI change on x86_64")
2018-03-07 20:39:08 -08:00
49 changed files with 1 additions and 3999 deletions

16
.gitignore vendored
View file

@ -1,16 +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
/v8-5.2.258.tar.bz2
/v8-5.2.258.tar.xz
/v8-6.2.91.tar.xz
/depot_tools.git-master.tar.gz
/chromium-base-git2d35e4d.tar.bz2
/gn-source-gitf833e90.tar.bz2

1
dead.package Normal file
View file

@ -0,0 +1 @@
extremely difficult to maintain, nothing uses it

235
icu.gn
View file

@ -1,235 +0,0 @@
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/config/linux/pkg_config.gni")
import("//build/shim_headers.gni")
group("icu") {
public_deps = [
":icui18n",
":icuuc",
]
}
config("icu_config") {
defines = [
"USING_SYSTEM_ICU=1",
"ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC",
]
}
pkg_config("system_icui18n") {
packages = [ "icu-i18n" ]
}
pkg_config("system_icuuc") {
packages = [ "icu-uc" ]
}
source_set("icui18n") {
deps = [
":icui18n_shim",
]
public_configs = [
":icu_config",
":system_icui18n",
]
}
source_set("icuuc") {
deps = [
":icuuc_shim",
]
public_configs = [
":icu_config",
":system_icuuc",
]
}
shim_headers("icui18n_shim") {
root_path = "source/i18n"
headers = [
# This list can easily be updated using the command below:
# find third_party/icu/source/i18n/unicode \
# -iname '*.h' -printf '"%p",\n' | \
# sed -e 's|third_party/icu/i18n/common/||' | sort -u
"unicode/alphaindex.h",
"unicode/basictz.h",
"unicode/calendar.h",
"unicode/choicfmt.h",
"unicode/coleitr.h",
"unicode/coll.h",
"unicode/compactdecimalformat.h",
"unicode/curramt.h",
"unicode/currpinf.h",
"unicode/currunit.h",
"unicode/datefmt.h",
"unicode/dcfmtsym.h",
"unicode/decimfmt.h",
"unicode/dtfmtsym.h",
"unicode/dtitvfmt.h",
"unicode/dtitvinf.h",
"unicode/dtptngen.h",
"unicode/dtrule.h",
"unicode/fieldpos.h",
"unicode/fmtable.h",
"unicode/format.h",
"unicode/fpositer.h",
"unicode/gender.h",
"unicode/gregocal.h",
"unicode/locdspnm.h",
"unicode/measfmt.h",
"unicode/measunit.h",
"unicode/measure.h",
"unicode/msgfmt.h",
"unicode/numfmt.h",
"unicode/numsys.h",
"unicode/plurfmt.h",
"unicode/plurrule.h",
"unicode/rbnf.h",
"unicode/rbtz.h",
"unicode/regex.h",
"unicode/region.h",
"unicode/reldatefmt.h",
"unicode/scientificnumberformatter.h",
"unicode/search.h",
"unicode/selfmt.h",
"unicode/simpletz.h",
"unicode/smpdtfmt.h",
"unicode/sortkey.h",
"unicode/stsearch.h",
"unicode/tblcoll.h",
"unicode/timezone.h",
"unicode/tmunit.h",
"unicode/tmutamt.h",
"unicode/tmutfmt.h",
"unicode/translit.h",
"unicode/tzfmt.h",
"unicode/tznames.h",
"unicode/tzrule.h",
"unicode/tztrans.h",
"unicode/ucal.h",
"unicode/ucol.h",
"unicode/ucoleitr.h",
"unicode/ucsdet.h",
"unicode/ucurr.h",
"unicode/udat.h",
"unicode/udateintervalformat.h",
"unicode/udatpg.h",
"unicode/udisplaycontext.h",
"unicode/ufieldpositer.h",
"unicode/uformattable.h",
"unicode/ugender.h",
"unicode/uldnames.h",
"unicode/ulocdata.h",
"unicode/umsg.h",
"unicode/unirepl.h",
"unicode/unum.h",
"unicode/unumsys.h",
"unicode/upluralrules.h",
"unicode/uregex.h",
"unicode/uregion.h",
"unicode/usearch.h",
"unicode/uspoof.h",
"unicode/utmscale.h",
"unicode/utrans.h",
"unicode/vtzone.h",
]
}
shim_headers("icuuc_shim") {
root_path = "source/common"
headers = [
# This list can easily be updated using the command below:
# find third_party/icu/source/common/unicode \
# -iname '*.h' -printf '"%p",\n' | \
# sed -e 's|third_party/icu/source/common/||' | sort -u
"unicode/appendable.h",
"unicode/brkiter.h",
"unicode/bytestream.h",
"unicode/bytestrie.h",
"unicode/bytestriebuilder.h",
"unicode/caniter.h",
"unicode/chariter.h",
"unicode/dbbi.h",
"unicode/docmain.h",
"unicode/dtintrv.h",
"unicode/enumset.h",
"unicode/errorcode.h",
"unicode/filteredbrk.h",
"unicode/icudataver.h",
"unicode/icuplug.h",
"unicode/idna.h",
"unicode/listformatter.h",
"unicode/localpointer.h",
"unicode/locid.h",
"unicode/messagepattern.h",
"unicode/normalizer2.h",
"unicode/normlzr.h",
"unicode/parseerr.h",
"unicode/parsepos.h",
"unicode/platform.h",
"unicode/ptypes.h",
"unicode/putil.h",
"unicode/rbbi.h",
"unicode/rep.h",
"unicode/resbund.h",
"unicode/schriter.h",
"unicode/std_string.h",
"unicode/strenum.h",
"unicode/stringpiece.h",
"unicode/stringtriebuilder.h",
"unicode/symtable.h",
"unicode/ubidi.h",
"unicode/ubrk.h",
"unicode/ucasemap.h",
"unicode/ucat.h",
"unicode/uchar.h",
"unicode/ucharstrie.h",
"unicode/ucharstriebuilder.h",
"unicode/uchriter.h",
"unicode/uclean.h",
"unicode/ucnv.h",
"unicode/ucnv_cb.h",
"unicode/ucnv_err.h",
"unicode/ucnvsel.h",
"unicode/uconfig.h",
"unicode/udata.h",
"unicode/uenum.h",
"unicode/uidna.h",
"unicode/uiter.h",
"unicode/ulistformatter.h",
"unicode/uloc.h",
"unicode/umachine.h",
"unicode/umisc.h",
"unicode/unifilt.h",
"unicode/unifunct.h",
"unicode/unimatch.h",
"unicode/uniset.h",
"unicode/unistr.h",
"unicode/unorm.h",
"unicode/unorm2.h",
"unicode/uobject.h",
"unicode/urename.h",
"unicode/urep.h",
"unicode/ures.h",
"unicode/uscript.h",
"unicode/uset.h",
"unicode/usetiter.h",
"unicode/ushape.h",
"unicode/usprep.h",
"unicode/ustring.h",
"unicode/ustringtrie.h",
"unicode/utext.h",
"unicode/utf.h",
"unicode/utf16.h",
"unicode/utf32.h",
"unicode/utf8.h",
"unicode/utf_old.h",
"unicode/utrace.h",
"unicode/utypes.h",
"unicode/uvernum.h",
"unicode/uversion.h",
]
}

View file

@ -1,4 +0,0 @@
SHA512 (v8-6.2.91.tar.xz) = 08cb841936c0463f12bc7cacda2d9d27dfd3814deb4788efaa66cc931331bd43bfeb606bbdfe1256f277bf46c007789268a45ffb1fc6a35b7607360c0c026139
SHA512 (depot_tools.git-master.tar.gz) = e4edee0fe870caf93a92e40cd30dc8b03a3cce27e73e9cbf5a26f4f3048611b2e485963cf9c738fca2c381f61838187b2c082e798d0456434a558e2eea9864b0
SHA512 (chromium-base-git2d35e4d.tar.bz2) = a1dc21fb69908def3baaaccffbd9bc32b9e9b0c51bd6cee2d1509e0175c77c57e3b87dc18751aa6f2406724f41f7972576e66455f6d23765471315265704644e
SHA512 (gn-source-gitf833e90.tar.bz2) = 24a06a6fc1afbb6a7de5b702310dcff151250643a059e5f2540a3a12750f9880d865955b5a1f1ed8185c320db6f09a6c8c4540720c340b4a148fa9d87dda2938

View file

@ -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,

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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);

View file

@ -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 {

View file

@ -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

View file

@ -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);

View file

@ -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;

View file

@ -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',

View file

@ -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

View file

@ -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_;

View file

@ -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

View file

@ -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();
+ }
}

View file

@ -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
}

View file

@ -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)) {

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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)

View file

@ -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;

View file

@ -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);
}
}

View file

@ -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)

View file

@ -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"

View file

@ -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

View 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()

View file

@ -1,14 +0,0 @@
diff -up v8-4.10.91/Makefile.system_icu v8-4.10.91/Makefile
--- v8-4.10.91/Makefile.system_icu 2016-01-27 17:20:20.554136527 -0500
+++ v8-4.10.91/Makefile 2016-01-27 17:21:03.377907390 -0500
@@ -44,6 +44,10 @@ endif
ifdef component
GYPFLAGS += -Dcomponent=$(component)
endif
+# system_icu=on
+ifeq ($(system_icu), on)
+ GYPFLAGS += -Duse_system_icu=1
+endif
# disassembler=on
ifeq ($(disassembler), on)
GYPFLAGS += -Dv8_enable_disassembler=1

View file

@ -1,27 +0,0 @@
diff -up v8-5.2.197/test/cctest/interpreter/generate-bytecode-expectations.cc.readdir v8-5.2.197/test/cctest/interpreter/generate-bytecode-expectations.cc
--- v8-5.2.197/test/cctest/interpreter/generate-bytecode-expectations.cc.readdir 2016-05-02 09:47:32.000000000 -0400
+++ v8-5.2.197/test/cctest/interpreter/generate-bytecode-expectations.cc 2016-05-02 15:42:49.961046560 -0400
@@ -20,6 +20,8 @@
#include <dirent.h>
#endif
+#include <errno.h>
+
using v8::internal::interpreter::BytecodeExpectationsPrinter;
#define REPORT_ERROR(MESSAGE) (((std::cerr << "ERROR: ") << MESSAGE) << '\n')
@@ -174,10 +176,12 @@ bool CollectGoldenFiles(std::vector<std:
DIR* directory = opendir(directory_path);
if (!directory) return false;
- dirent entry_buffer;
dirent* entry;
- while (readdir_r(directory, &entry_buffer, &entry) == 0 && entry) {
+ errno = 0;
+ entry = readdir(directory);
+
+ while (errno != 0) {
if (StrEndsWith(entry->d_name, ".golden")) {
std::string golden_filename(kGoldenFilesPath);
golden_filename += entry->d_name;

View file

@ -1,16 +0,0 @@
diff -up v8-5.2.258/Makefile.bb v8-5.2.258/Makefile
--- v8-5.2.258/Makefile.bb 2016-10-10 14:57:17.275968725 -0400
+++ v8-5.2.258/Makefile 2016-10-10 14:58:37.012406994 -0400
@@ -37,6 +37,12 @@ NACL_SDK_ROOT ?=
# Special build flags. Use them like this: "make library=shared"
+# bundledbinutils=off
+ifeq ($(bundledbinutils), off)
+ GYPFLAGS += -Dlinux_use_bundled_binutils=0
+else
+ GYPFLAGS += -Dlinux_use_bundled_binutils=1
+endif
# library=shared || component=shared_library
ifeq ($(library), shared)
GYPFLAGS += -Dcomponent=shared_library

View file

@ -1,119 +0,0 @@
diff -up v8-5.2.258/samples/shell.cc.gcc7 v8-5.2.258/samples/shell.cc
--- v8-5.2.258/samples/shell.cc.gcc7 2017-02-28 15:33:38.931424708 -0500
+++ v8-5.2.258/samples/shell.cc 2017-02-28 15:34:00.759853299 -0500
@@ -361,6 +361,8 @@ bool ExecuteString(v8::Isolate* isolate,
} else {
v8::Local<v8::Value> result;
if (!script->Run(context).ToLocal(&result)) {
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wgnu"
assert(try_catch.HasCaught());
// Print errors that happened during execution.
if (report_exceptions)
@@ -368,6 +370,7 @@ bool ExecuteString(v8::Isolate* isolate,
return false;
} else {
assert(!try_catch.HasCaught());
+#pragma GCC diagnostic pop
if (print_result && !result->IsUndefined()) {
// If all went well and the result wasn't undefined then print
// the returned value.
diff -up v8-5.2.258/src/crankshaft/lithium.cc.gcc7 v8-5.2.258/src/crankshaft/lithium.cc
--- v8-5.2.258/src/crankshaft/lithium.cc.gcc7 2016-05-09 10:28:43.000000000 -0400
+++ v8-5.2.258/src/crankshaft/lithium.cc 2017-02-28 14:42:17.188361709 -0500
@@ -128,11 +128,6 @@ void LOperand::PrintTo(StringStream* str
template<LOperand::Kind kOperandKind, int kNumCachedOperands>
-LSubKindOperand<kOperandKind, kNumCachedOperands>*
-LSubKindOperand<kOperandKind, kNumCachedOperands>::cache = NULL;
-
-
-template<LOperand::Kind kOperandKind, int kNumCachedOperands>
void LSubKindOperand<kOperandKind, kNumCachedOperands>::SetUpCache() {
if (cache) return;
cache = new LSubKindOperand[kNumCachedOperands];
diff -up v8-5.2.258/src/crankshaft/lithium.h.gcc7 v8-5.2.258/src/crankshaft/lithium.h
--- v8-5.2.258/src/crankshaft/lithium.h.gcc7 2016-05-09 10:28:43.000000000 -0400
+++ v8-5.2.258/src/crankshaft/lithium.h 2017-02-28 14:42:17.188361709 -0500
@@ -338,6 +338,9 @@ class LSubKindOperand final : public LOp
explicit LSubKindOperand(int index) : LOperand(kOperandKind, index) { }
};
+template<LOperand::Kind kOperandKind, int kNumCachedOperands>
+LSubKindOperand<kOperandKind, kNumCachedOperands>*
+LSubKindOperand<kOperandKind, kNumCachedOperands>::cache = NULL;
#define LITHIUM_TYPEDEF_SUBKIND_OPERAND_CLASS(name, type, number) \
typedef LSubKindOperand<LOperand::type, number> L##name;
diff -up v8-5.2.258/src/objects-body-descriptors.h.gcc7 v8-5.2.258/src/objects-body-descriptors.h
--- v8-5.2.258/src/objects-body-descriptors.h.gcc7 2016-05-09 10:28:43.000000000 -0400
+++ v8-5.2.258/src/objects-body-descriptors.h 2017-02-28 14:42:17.189361685 -0500
@@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public
template <typename StaticVisitor>
static inline void IterateBody(HeapObject* obj, int object_size) {
- IterateBody(obj);
+ IterateBody<StaticVisitor>(obj);
}
};
diff -up v8-5.2.258/src/objects.h.gcc7 v8-5.2.258/src/objects.h
--- v8-5.2.258/src/objects.h.gcc7 2016-05-09 10:28:43.000000000 -0400
+++ v8-5.2.258/src/objects.h 2017-02-28 14:42:17.190361661 -0500
@@ -3182,22 +3182,10 @@ class HashTableBase : public FixedArray
template <typename Derived, typename Shape, typename Key>
class HashTable : public HashTableBase {
public:
- // Wrapper methods
- inline uint32_t Hash(Key key) {
- if (Shape::UsesSeed) {
- return Shape::SeededHash(key, GetHeap()->HashSeed());
- } else {
- return Shape::Hash(key);
- }
- }
-
- inline uint32_t HashForObject(Key key, Object* object) {
- if (Shape::UsesSeed) {
- return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
- } else {
- return Shape::HashForObject(key, object);
- }
- }
+ // Wrapper methods. Defined in src/objects-inl.h
+ // to break a cycle with src/heap/heap.h.
+ inline uint32_t Hash(Key key);
+ inline uint32_t HashForObject(Key key, Object* object);
// Returns a new HashTable object.
MUST_USE_RESULT static Handle<Derived> New(
diff -up v8-5.2.258/src/objects-inl.h.gcc7 v8-5.2.258/src/objects-inl.h
--- v8-5.2.258/src/objects-inl.h.gcc7 2016-05-09 10:28:43.000000000 -0400
+++ v8-5.2.258/src/objects-inl.h 2017-02-28 14:42:17.191361638 -0500
@@ -35,6 +35,25 @@
namespace v8 {
namespace internal {
+template <typename Derived, typename Shape, typename Key>
+uint32_t HashTable<Derived, Shape, Key>::Hash(Key key) {
+ if (Shape::UsesSeed) {
+ return Shape::SeededHash(key, GetHeap()->HashSeed());
+ } else {
+ return Shape::Hash(key);
+ }
+}
+
+template <typename Derived, typename Shape, typename Key>
+uint32_t HashTable<Derived, Shape, Key>::HashForObject(Key key,
+ Object* object) {
+ if (Shape::UsesSeed) {
+ return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
+ } else {
+ return Shape::HashForObject(key, object);
+ }
+}
+
PropertyDetails::PropertyDetails(Smi* smi) {
value_ = smi->value();
}

View file

@ -1,21 +0,0 @@
diff -up v8-5.2.258/gypfiles/standalone.gypi.ppcfix v8-5.2.258/gypfiles/standalone.gypi
--- v8-5.2.258/gypfiles/standalone.gypi.ppcfix 2017-03-01 11:15:17.516268618 -0500
+++ v8-5.2.258/gypfiles/standalone.gypi 2017-03-01 11:16:34.750282604 -0500
@@ -225,7 +225,7 @@
}, {
'v8_enable_gdbjit%': 0,
}],
- ['(OS=="linux" or OS=="mac") and (target_arch=="ia32" or target_arch=="x64") and \
+ ['(OS=="linux" or OS=="mac") and (target_arch=="ia32" or target_arch=="x64" or target_arch=="ppc64") and \
(v8_target_arch!="x87" and v8_target_arch!="x32")', {
'clang%': 1,
}, {
@@ -735,7 +735,7 @@
or v8_target_arch=="mips64el")', {
'cflags': [ '-Wshorten-64-to-32' ],
}],
- [ 'host_arch=="ppc64" and OS!="aix"', {
+ [ 'host_arch=="ppc64" and OS!="aix" and clang==0', {
'cflags': [ '-mminimal-toc' ],
}],
[ 'visibility=="hidden" and v8_enable_backtrace==0', {

View file

@ -1,12 +0,0 @@
diff -up v8-6.2.91/build/config/compiler/BUILD.gn.memexhaust v8-6.2.91/build/config/compiler/BUILD.gn
--- v8-6.2.91/build/config/compiler/BUILD.gn.memexhaust 2017-08-03 17:15:41.355834826 -0400
+++ v8-6.2.91/build/config/compiler/BUILD.gn 2017-08-03 17:15:46.587704667 -0400
@@ -1739,7 +1739,7 @@ config("symbols") {
# TODO(thakis): Remove this again once dump_syms is fixed.
cflags += [ "-gdwarf-3" ]
}
- cflags += [ "-g2" ]
+ cflags += [ "-g1" ]
}
if (use_debug_fission) {
cflags += [ "-gsplit-dwarf" ]

View file

@ -1,12 +0,0 @@
diff -up v8-6.2.91/build/config/compiler/BUILD.gn.nolambda v8-6.2.91/build/config/compiler/BUILD.gn
--- v8-6.2.91/build/config/compiler/BUILD.gn.nolambda 2017-08-01 14:28:53.499913889 -0400
+++ v8-6.2.91/build/config/compiler/BUILD.gn 2017-08-01 14:29:03.242607676 -0400
@@ -1171,7 +1171,7 @@ config("default_warnings") {
"-Wno-address-of-packed-member",
# TODO(hans): https://crbug.com/681136
- "-Wno-unused-lambda-capture",
+ # "-Wno-unused-lambda-capture",
# TODO(thakis ): https://crbug.com/683349
"-Wno-user-defined-warnings",

View file

@ -1,79 +0,0 @@
diff -up v8-6.2.91/build/toolchain/linux/BUILD.gn.notcross v8-6.2.91/build/toolchain/linux/BUILD.gn
--- v8-6.2.91/build/toolchain/linux/BUILD.gn.notcross 2017-08-03 11:29:04.609204048 -0400
+++ v8-6.2.91/build/toolchain/linux/BUILD.gn 2017-08-03 11:31:14.462146822 -0400
@@ -6,7 +6,6 @@ import("//build/config/sysroot.gni")
import("//build/toolchain/gcc_toolchain.gni")
clang_toolchain("clang_arm") {
- toolprefix = "arm-linux-gnueabihf-"
toolchain_args = {
current_cpu = "arm"
current_os = "linux"
@@ -14,7 +13,6 @@ clang_toolchain("clang_arm") {
}
clang_toolchain("clang_arm64") {
- toolprefix = "aarch64-linux-gnu-"
toolchain_args = {
current_cpu = "arm64"
current_os = "linux"
@@ -22,15 +20,13 @@ clang_toolchain("clang_arm64") {
}
gcc_toolchain("arm64") {
- toolprefix = "aarch64-linux-gnu-"
-
- cc = "${toolprefix}gcc"
- cxx = "${toolprefix}g++"
+ cc = "gcc"
+ cxx = "g++"
- ar = "${toolprefix}ar"
+ ar = "ar"
ld = cxx
- readelf = "${toolprefix}readelf"
- nm = "${toolprefix}nm"
+ readelf = "readelf"
+ nm = "nm"
toolchain_args = {
current_cpu = "arm64"
@@ -40,15 +36,13 @@ gcc_toolchain("arm64") {
}
gcc_toolchain("arm") {
- toolprefix = "arm-linux-gnueabihf-"
-
- cc = "${toolprefix}gcc"
- cxx = "${toolprefix}g++"
+ cc = "gcc"
+ cxx = "g++"
- ar = "${toolprefix}ar"
+ ar = "ar"
ld = cxx
- readelf = "${toolprefix}readelf"
- nm = "${toolprefix}nm"
+ readelf = "readelf"
+ nm = "nm"
toolchain_args = {
current_cpu = "arm"
@@ -178,12 +172,12 @@ clang_toolchain("clang_mips64el") {
}
gcc_toolchain("mipsel") {
- cc = "mipsel-linux-gnu-gcc"
- cxx = "mipsel-linux-gnu-g++"
- ar = "mipsel-linux-gnu-ar"
+ cc = "gcc"
+ cxx = "g++"
+ ar = "ar"
ld = cxx
- readelf = "mipsel-linux-gnu-readelf"
- nm = "mipsel-linux-gnu-nm"
+ readelf = "readelf"
+ nm = "nm"
toolchain_args = {
cc_wrapper = ""

View file

@ -1,11 +0,0 @@
diff -up v8-6.2.91/build/config/compiler/BUILD.gn.nounused v8-6.2.91/build/config/compiler/BUILD.gn
--- v8-6.2.91/build/config/compiler/BUILD.gn.nounused 2017-08-04 10:35:44.212100721 -0400
+++ v8-6.2.91/build/config/compiler/BUILD.gn 2017-08-04 10:36:25.554097933 -0400
@@ -1740,6 +1740,7 @@ config("symbols") {
cflags += [ "-gdwarf-3" ]
}
cflags += [ "-g2" ]
+ cflags += [ "-Wno-unused-function" , "-Wno-unused-result" ]
}
if (use_debug_fission) {
cflags += [ "-gsplit-dwarf" ]

View file

@ -1,12 +0,0 @@
diff -up v8-6.2.91/buildtools/third_party/libc++/trunk/include/__locale.noxlocale v8-6.2.91/buildtools/third_party/libc++/trunk/include/__locale
--- v8-6.2.91/buildtools/third_party/libc++/trunk/include/__locale.noxlocale 2017-08-02 16:00:24.793773137 -0400
+++ v8-6.2.91/buildtools/third_party/libc++/trunk/include/__locale 2017-08-02 16:00:55.161082370 -0400
@@ -34,7 +34,7 @@
# include <support/solaris/xlocale.h>
#elif defined(_NEWLIB_VERSION)
# include <support/newlib/xlocale.h>
-#elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) \
+#elif (defined(__APPLE__) || defined(__FreeBSD__) \
|| defined(__EMSCRIPTEN__) || defined(__IBMCPP__))
# include <xlocale.h>
#elif defined(__Fuchsia__)

View file

@ -1,19 +0,0 @@
diff -up v8-6.2.91/build/config/compiler/BUILD.gn.oldclang v8-6.2.91/build/config/compiler/BUILD.gn
--- v8-6.2.91/build/config/compiler/BUILD.gn.oldclang 2017-08-31 21:05:13.342875120 -0400
+++ v8-6.2.91/build/config/compiler/BUILD.gn 2017-08-31 21:05:40.092124090 -0400
@@ -1168,13 +1168,13 @@ config("default_warnings") {
"-Wno-nonportable-include-path",
# TODO(hans): https://crbug.com/637306
- "-Wno-address-of-packed-member",
+ # "-Wno-address-of-packed-member",
# TODO(hans): https://crbug.com/681136
# "-Wno-unused-lambda-capture",
# TODO(thakis ): https://crbug.com/683349
- "-Wno-user-defined-warnings",
+ # "-Wno-user-defined-warnings",
]
} else if (use_xcode_clang && xcode_version_int >= 830) {
# This is necessary to allow a progressive transition from using xcode 8.0

View file

@ -1,21 +0,0 @@
diff -up v8-6.2.91/gypfiles/standalone.gypi.ppc64 v8-6.2.91/gypfiles/standalone.gypi
--- v8-6.2.91/gypfiles/standalone.gypi.ppc64 2017-07-31 11:24:31.000000000 -0400
+++ v8-6.2.91/gypfiles/standalone.gypi 2017-07-31 11:50:42.467600076 -0400
@@ -268,7 +268,7 @@
}, {
'v8_enable_gdbjit%': 0,
}],
- ['(OS=="linux" or OS=="mac") and (target_arch=="ia32" or target_arch=="x64") and \
+ ['(OS=="linux" or OS=="mac") and (target_arch=="ia32" or target_arch=="x64" or target_arch=="ppc64") and \
v8_target_arch!="x32"', {
'clang%': 1,
}, {
@@ -788,7 +788,7 @@
or v8_target_arch=="mips64el")', {
'cflags': [ '-Wshorten-64-to-32' ],
}],
- [ 'host_arch=="ppc64" and OS!="aix"', {
+ [ 'host_arch=="ppc64" and OS!="aix" and clang==0', {
'cflags': [ '-mminimal-toc' ],
}],
[ 'visibility=="hidden" and v8_enable_backtrace==0', {

View file

@ -1,28 +0,0 @@
diff -up v8-6.2.91/BUILD.gn.sover v8-6.2.91/BUILD.gn
--- v8-6.2.91/BUILD.gn.sover 2017-07-31 11:24:31.000000000 -0400
+++ v8-6.2.91/BUILD.gn 2017-08-02 12:10:57.825931436 -0400
@@ -2422,6 +2422,7 @@ v8_component("v8_libbase") {
if (is_component_build) {
defines = [ "BUILDING_V8_BASE_SHARED" ]
+ output_extension = "so.6"
}
if (is_posix) {
@@ -2532,6 +2533,7 @@ v8_component("v8_libplatform") {
if (is_component_build) {
defines = [ "BUILDING_V8_PLATFORM_SHARED" ]
+ output_extension = "so.6"
}
public_configs = [ ":libplatform_config" ]
@@ -2682,6 +2684,8 @@ if (is_component_build) {
"src/v8dll-main.cc",
]
+ output_extension = "so.6"
+
public_deps = [
":v8_base",
":v8_maybe_snapshot",

View file

@ -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

View file

@ -1,4 +0,0 @@
#!/usr/bin/python
import js2c
js2c.main ()

732
v8.spec
View file

@ -1,732 +0,0 @@
# clang doesn't understand hardening, specifically "-specs="
%global clang_optflags %(echo %{optflags} | sed 's|-specs=/usr/lib/rpm/redhat/redhat-hardened-cc1||g')
%global clang_ldflags %(echo "%{__global_ldflags} -Wl,--build-id" | sed 's|-specs=/usr/lib/rpm/redhat/redhat-hardened-ld||g')
# 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.
# Now there are three digits. Yeah. HOW ABOUT DEM APPLES?!?
%global somajor 6
%global sominor 2
%global sobuild 91
%global sover %{somajor}
Name: v8
Version: %{somajor}.%{sominor}.%{sobuild}
Release: 7%{?dist}
Epoch: 1
Summary: JavaScript Engine
Group: System Environment/Libraries
License: BSD
URL: https://chromium.googlesource.com/v8/v8/
# To make the source, you need to have depot_tools installed and in your PATH
# https://chromium.googlesource.com/chromium/tools/depot_tools.git/+archive/7e7a454f9afdddacf63e10be48f0eab603be654e.tar.gz
# Note that the depot_tools tarball above does not unpack into its own directory.
# mkdir v8-tmp
# cd v8-tmp
# fetch v8
# cd v8
# git checkout 6.2.91
# gclient sync
# cd ..
# mv v8 v8-6.2.91
# tar -c --exclude=.git --exclude=build/linux -J -f v8-6.2.91.tar.xz v8-6.2.91
Source0: v8-6.2.91.tar.xz
# https://chromium.googlesource.com/chromium/tools/depot_tools.git/+archive/7e7a454f9afdddacf63e10be48f0eab603be654e.tar.gz
Source1: depot_tools.git-master.tar.gz
# Taken from chromium-60.0.3112.78/build/linux/unbundle/icu.gn
Source2: icu.gn
# Needed to build gn. :P
# git clone https://chromium.googlesource.com/chromium/src/base
# tar cvfj chromium-base-git2d35e4d.tar.bz2 base/
Source3: chromium-base-git2d35e4d.tar.bz2
# git clone https://chromium.googlesource.com/chromium/src/tools/gn
# tar cvfj gn-source-gitf833e90.tar.bz2 gn/
Source4: gn-source-gitf833e90.tar.bz2
Patch0: v8-4.10.91-system_icu.patch
Patch2: v8-5.2.258-bundled-binutils.patch
Patch3: v8-5.2.258-gcc7.patch
Patch5: v8-6.2.91-nolambda.patch
Patch6: v8-6.2.91-sover.patch
Patch7: v8-6.2.91-noxlocale.patch
# do not assume we are cross compiling
# silly google
Patch8: v8-6.2.91-notcross.patch
# On i686 and armv7hl, use -g1 to avoid mem exhaust
Patch9: v8-6.2.91-i686-g1-to-avoid-mem-exhaust.patch
# Fedora 25 and older need less flags
# and clang is not tolerant of flags it doesn't know about
Patch10: v8-6.2.91-oldclang-flags.patch
# PPC64 doesn't like libcxx code.
# error: '(9.223372036854775807e+18 / 1.0e+9)' is not a constant expression
# aarch64 doesn't work either.
# code does not compile on s390
ExclusiveArch: %{ix86} x86_64 %{arm} ppc mipsel mips64el
BuildRequires: readline-devel, libicu-devel, ninja-build
BuildRequires: python2-devel, glib2-devel, libatomic
BuildRequires: clang, llvm
%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 -n python2-v8
%{?python_provide:%python_provide python2-v8}
# Remove before F30
Provides: %{name}-python = %{version}-%{release}
Provides: %{name}-python%{?_isa} = %{version}-%{release}
Obsoletes: %{name}-python < %{version}-%{release}
Summary: Python libraries from v8
Requires: %{name} = %{epoch}:%{version}-%{release}
%description -n python2-v8
Python libraries from v8.
%prep
%setup -q -T -c -n depot_tools -a 1
%setup -q -n %{name}-%{version} -a 3
%patch0 -p1 -b .system_icu
%patch2 -p1 -b .bb
# %%patch3 -p1 -b .gcc7
%patch5 -p1 -b .nolambda
%patch6 -p1 -b .sover
%patch7 -p1 -b .noxlocale
%patch8 -p1 -b .notcross
%ifarch i686 armv7hl
%patch9 -p1 -b .memexhaust
%endif
%if 0%{?fedora} <= 25
%patch10 -p1 -b .oldflags
%endif
cp -a %{SOURCE2} third_party/icu/BUILD.gn
pushd tools
tar xvf %{SOURCE4}
popd
# Use system header ... except it doesn't work.
# rm -rf src/third_party/valgrind/valgrind.h
# ln -s /usr/include/valgrind/valgrind.h src/third_party/valgrind/valgrind.h
# Don't make thin libraries. :(
for i in `find . -type f -name '*.mk'`; do sed -i 's|alink_thin|alink|g' $i; done
sed -i "s|'alink_thin'|'alink'|g" tools/gyp/pylib/gyp/generator/make.py
sed -i "s|'alink_thin'|'alink'|g" tools/gyp/pylib/gyp/generator/ninja.py
# sed -i "s|crsT|crs|g" out/Makefile
sed -i "s|crsT|crs|g" tools/gyp/pylib/gyp/generator/make.py
rm -rf third_party/binutils/Linux_x64/Release/bin/ld.gold
rm -rf third_party/llvm-build/Release+Asserts
mkdir -p third_party/llvm-build/Release+Asserts/bin
pushd third_party/llvm-build/Release+Asserts/bin
ln -s /usr/bin/clang clang
ln -s /usr/bin/clang++ clang++
ln -s /usr/bin/llvm-ar llvm-ar
popd
for i in `grep -rl "Wno-undefined-var-template" *`; do
sed -i 's|-Wno-undefined-var-template||g' $i
done
%build
%ifarch x86_64
%global v8arch x64
%endif
%ifarch %{ix86}
%global v8arch x86
%endif
%ifarch %{arm}
%global v8arch arm
%endif
%ifarch aarch64
%global v8arch arm64
%endif
%ifarch mipsel
%global v8arch mipsel
%endif
%ifarch mips64el
%global v8arch mips64el
%endif
%ifarch ppc
%global v8arch ppc
%endif
%ifarch ppc64
%global v8arch ppc64
%endif
%ifarch s390
%global v8arch s390
%endif
%ifarch s390x
%global v8arch s390x
%endif
# DO THE HARLEM SHAKE
# err... I mean, build gn from source.
pushd tools/gn
./bootstrap/bootstrap.py -s
popd
rm -rf buildtools/linux64/gn*
# the tooling thinks all linux is "linux64"
cp -a out/Release/gn buildtools/linux64/gn
# Replace ninja in depot_tools
rm -rf ../depot_tools/ninja
ln -s /usr/bin/ninja ../depot_tools/ninja
V8_GN_DEFINES=""
V8_GN_DEFINES+=' use_sysroot=false use_gold=false enable_nacl=false linux_use_bundled_binutils=false is_component_build=true clang_use_chrome_plugins=false'
V8_GN_DEFINES+=' libcpp_is_static=true v8_use_external_startup_data=false'
V8_GN_DEFINES+=' v8_target_cpu="%{v8arch}"'
%ifarch armv7hl armv7hnl
V8_GN_DEFINES+=' arm_float_abi="hard"'
%endif
%ifarch armv5tel armv6l armv7l
V8_GN_DEFINES+=' arm_float_abi="softfp"'
%endif
export PATH=$PATH:%{_builddir}/depot_tools
CHROMIUM_BUILDTOOLS_PATH=./buildtools/ gn gen out.gn/%{v8arch}.release --args="$V8_GN_DEFINES"
mkdir -p out.gn/%{v8arch}.release/gen/shim_headers/icui18n_shim/third_party/icu/source/i18n/unicode
mkdir -p out.gn/%{v8arch}.release/gen/shim_headers/icuuc_shim/third_party/icu/source/common/unicode
../depot_tools/ninja -vvv -C out.gn/%{v8arch}.release
%install
pushd out.gn/%{v8arch}.release
# library first
mkdir -p %{buildroot}%{_libdir}
cp -a libv8*.so.%{somajor} %{buildroot}%{_libdir}
# Next, binaries
mkdir -p %{buildroot}%{_bindir}
install -p -m0755 d8 %{buildroot}%{_bindir}
install -p -m0755 mksnapshot %{buildroot}%{_bindir}
# install -p -m0755 parser_fuzzer %{buildroot}%{_bindir}
%if 0
# BLOBS! (Don't stress. They get built out of source code.)
install -p natives_blob.bin snapshot_blob.bin %{buildroot}%{_libdir}
%endif
popd
# Now, headers
mkdir -p %{buildroot}%{_includedir}
install -p include/*.h %{buildroot}%{_includedir}
cp -a include/libplatform %{buildroot}%{_includedir}
# Are these still useful?
mkdir -p %{buildroot}%{_includedir}/v8/extensions/
install -p src/extensions/*.h %{buildroot}%{_includedir}/v8/extensions/
# Make shared library links
pushd %{buildroot}%{_libdir}
ln -sf libv8.so.%{somajor} libv8.so
ln -sf libv8_libplatform.so.%{somajor} libv8_libplatform.so
popd
# 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*
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%license LICENSE
%doc AUTHORS ChangeLog
%{_bindir}/d8
%{_bindir}/mksnapshot
%{_libdir}/*.so.*
%if 0
%{_libdir}/*.bin
%endif
%files devel
%{_includedir}/*.h
%{_includedir}/libplatform/
%dir %{_includedir}/v8/
%{_includedir}/v8/extensions/
%{_libdir}/*.so
%files -n python2-v8
%{python_sitelib}/j*.py*
%changelog
* Mon Feb 19 2018 Tom Callaway <spot@fedoraproject.org> - 1:6.2.91-7
- fix platform library symlink
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1:6.2.91-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Nov 30 2017 Pete Walter <pwalter@fedoraproject.org> - 1:6.2.91-5
- Rebuild for ICU 60.1
* Thu Aug 31 2017 Tom Callaway <spot@fedoraproject.org> - 1:6.2.91-4
- disable some cflags on fedora 25 or older
* Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1:6.2.91-3
- Add Provides for the old name without %%_isa
* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1:6.2.91-2
- Python 2 binary package renamed to python2-v8
See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
* Mon Jul 31 2017 Tom Callaway <spot@fedoraproject.org> - 1:6.2.91-1
- 6.2.91
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1:5.2.258-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Wed Mar 1 2017 Tom Callaway <spot@fedoraproject.org> - 1:5.2.258-11
- fix ppc64 build
* Tue Feb 28 2017 Tom Callaway <spot@fedoraproject.org> - 1:5.2.258-10
- fix ftbfs (thanks to Ben Noordhuis)
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1:5.2.258-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Thu Jan 12 2017 Igor Gnatenko <ignatenko@redhat.com> - 1:5.2.258-8
- Rebuild for readline 7.x
* Mon Oct 17 2016 Tom Callaway <spot@fedoraproject.org> - 1:5.2.258-7
- force v8 not to make thin libraries
* Thu Oct 13 2016 Tom Callaway <spot@fedoraproject.org> - 1:5.2.258-6
- use smaller, better compressed source tarball without unnecessary git bits
* Mon Oct 10 2016 Tom Callaway <spot@fedoraproject.org> - 1:5.2.258-5
- add bundledbinutils option to Makefile to disable "thin" static libs
* Mon Sep 26 2016 Tom Callaway <spot@fedoraproject.org> - 1:5.2.258-4
- set snapshot=external to enable blob creation
- include blobs, static libraries
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:5.2.258-3
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
* Fri May 13 2016 Tom Callaway <spot@fedoraproject.org> - 1:5.2.258-2
- build with optflags, except for the hardening script which clang has no idea what to do with
* Mon May 9 2016 Tom Callaway <spot@fedoraproject.org> - 1:5.2.258-1
- update to 5.2.258
* Mon May 2 2016 Tom Callaway <spot@fedoraproject.org> - 1:5.2.197-1
- update to 5.2.197
- WELCOME TO THE WORLD OF TOMORROW
* Fri Apr 15 2016 David Tardon <dtardon@redhat.com> - 1:3.14.5.10-24
- rebuild for ICU 57.1
* 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
* Wed Aug 18 2010 Tom "spot" Callaway <tcallawa@redhat.com> 2.3.9-1.20100819svn5308
- update to 2.3.9, svn5308
* Wed 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
* Tue 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