Reviewers: Igor Sheludko,
Description:
Reland: Add a use counter for Intl.v8BreakIterator
This relands https://codereview.chromium.org/619913002/
The test has been fixed to do a GC so it does not appear to leak in
ASAN. In addition the test has been fixed to work in the no-i18n
build, by incorporating the change from
https://codereview.chromium.org/631743002/
[email protected]
BUG=
Please review this at https://codereview.chromium.org/628223002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+39, -0 lines):
M include/v8.h
M src/i18n.cc
M test/cctest/test-strings.cc
Index: include/v8.h
diff --git a/include/v8.h b/include/v8.h
index
2dc1bd81af8ce5bbd2a8ac0ed30f5f00eefc79b2..7a1c479cc427d69abeecd1e235f2e979e1859e3c
100644
--- a/include/v8.h
+++ b/include/v8.h
@@ -4528,6 +4528,7 @@ class V8_EXPORT Isolate {
*/
enum UseCounterFeature {
kUseAsm = 0,
+ kBreakIterator = 1,
kUseCounterFeatureCount // This enum value must be last.
};
Index: src/i18n.cc
diff --git a/src/i18n.cc b/src/i18n.cc
index
cae3a327a1b924b60edad2d9f326ccd01df2b6ad..ba44687aa90dd57932cc36f4feb3986004dac856
100644
--- a/src/i18n.cc
+++ b/src/i18n.cc
@@ -631,6 +631,8 @@ icu::BreakIterator* CreateICUBreakIterator(
return NULL;
}
+ isolate->CountUsage(v8::Isolate::UseCounterFeature::kBreakIterator);
+
return break_iterator;
}
Index: test/cctest/test-strings.cc
diff --git a/test/cctest/test-strings.cc b/test/cctest/test-strings.cc
index
ef13c4dadf682f6e178dce71c9e70009d703a7e9..c0b2cbf3caf934f920da34df7f98a5cbf48c5023
100644
--- a/test/cctest/test-strings.cc
+++ b/test/cctest/test-strings.cc
@@ -1292,6 +1292,42 @@ TEST(RobustSubStringStub) {
}
+namespace {
+
+int* global_use_counts = NULL;
+
+void MockUseCounterCallback(v8::Isolate* isolate,
+ v8::Isolate::UseCounterFeature feature) {
+ ++global_use_counts[feature];
+}
+}
+
+
+TEST(CountBreakIterator) {
+ CcTest::InitializeVM();
+ v8::HandleScope scope(CcTest::isolate());
+ LocalContext context;
+ int use_counts[v8::Isolate::kUseCounterFeatureCount] = {};
+ global_use_counts = use_counts;
+ CcTest::isolate()->SetUseCounterCallback(MockUseCounterCallback);
+ CHECK_EQ(0, use_counts[v8::Isolate::kBreakIterator]);
+ v8::Local<v8::Value> result = CompileRun(
+ "(function() {"
+ " if (!this.Intl) return 0;"
+ " var iterator = Intl.v8BreakIterator(['en']);"
+ " iterator.adoptText('Now is the time');"
+ " iterator.next();"
+ " return iterator.next();"
+ "})();");
+ CHECK(result->IsNumber());
+ int uses = result->ToInt32()->Value() == 0 ? 0 : 1;
+ CHECK_EQ(uses, use_counts[v8::Isolate::kBreakIterator]);
+ // Make sure GC cleans up the break iterator, so we don't get a memory
leak
+ // reported by ASAN.
+ CcTest::isolate()->LowMemoryNotification();
+}
+
+
TEST(StringReplaceAtomTwoByteResult) {
CcTest::InitializeVM();
v8::HandleScope scope(CcTest::isolate());
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.