Reviewers: hablich, Nebojša Ćirić,
Message:
PTAL. Thanks
Description:
Enclose break_iterator code with !UCONFIG_NO_BREAK_ITERATOR
BreakIterator is not a part of the ECMA spec, yet.
Some 'embedders' want to save space by not including the dictionary/code
for break iterator in ICU.
Include v8's break iterator code only when ICU has break iterator.
BUG=v8:3345
LOG=Y
Please review this at https://codereview.chromium.org/902313002/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+32, -5 lines):
M src/i18n.h
M src/i18n.cc
M src/runtime/runtime-i18n.cc
Index: src/i18n.cc
diff --git a/src/i18n.cc b/src/i18n.cc
index
69fa9ca89583c45dcfd2e1a709894dc9baf3224a..e1f7639c67f377c067c582994773864ace0bf174
100644
--- a/src/i18n.cc
+++ b/src/i18n.cc
@@ -601,7 +601,7 @@ void SetResolvedCollatorSettings(Isolate* isolate,
}
}
-
+#if !UCONFIG_NO_BREAK_ITERATION
icu::BreakIterator* CreateICUBreakIterator(
Isolate* isolate,
const icu::Locale& icu_locale,
@@ -635,7 +635,7 @@ icu::BreakIterator* CreateICUBreakIterator(
return break_iterator;
}
-
+#endif
void SetResolvedBreakIteratorSettings(Isolate* isolate,
const icu::Locale& icu_locale,
@@ -881,7 +881,7 @@ void Collator::DeleteCollator(
DestroyGlobalHandle(data);
}
-
+#if !UCONFIG_NO_BREAK_ITERATION
icu::BreakIterator* BreakIterator::InitializeBreakIterator(
Isolate* isolate,
Handle<String> locale,
@@ -946,5 +946,5 @@ void BreakIterator::DeleteBreakIterator(
DeleteNativeObjectAt<icu::UnicodeString>(data, 1);
DestroyGlobalHandle(data);
}
-
+#endif
} } // namespace v8::internal
Index: src/i18n.h
diff --git a/src/i18n.h b/src/i18n.h
index
a50c43a429971f185a471fc0e8393c7c8b58b633..94254621c42ef4205555c5c12765709f502fae15
100644
--- a/src/i18n.h
+++ b/src/i18n.h
@@ -10,7 +10,9 @@
#include "unicode/uversion.h"
namespace U_ICU_NAMESPACE {
+#if !UCONFIG_NO_BREAK_ITERATION
class BreakIterator;
+#endif
class Collator;
class DecimalFormat;
class SimpleDateFormat;
@@ -102,6 +104,7 @@ class Collator {
Collator();
};
+#if !UCONFIG_NO_BREAK_ITERATION
class BreakIterator {
public:
// Create a BreakIterator for the specificied locale and options.
Returns the
@@ -124,7 +127,7 @@ class BreakIterator {
private:
BreakIterator();
};
-
+#endif
} } // namespace v8::internal
#endif // V8_I18N_H_
Index: src/runtime/runtime-i18n.cc
diff --git a/src/runtime/runtime-i18n.cc b/src/runtime/runtime-i18n.cc
index
5e016515448d6a0c8ce790491556915cd88d1229..5aa5dc99a3a81c8183e7f04b5e66ca335f2d85b5
100644
--- a/src/runtime/runtime-i18n.cc
+++ b/src/runtime/runtime-i18n.cc
@@ -88,8 +88,10 @@ RUNTIME_FUNCTION(Runtime_AvailableLocalesOf) {
available_locales = icu::NumberFormat::getAvailableLocales(count);
} else if (service->IsUtf8EqualTo(CStrVector("dateformat"))) {
available_locales = icu::DateFormat::getAvailableLocales(count);
+#if !UCONFIG_NO_BREAK_ITERATION
} else if (service->IsUtf8EqualTo(CStrVector("breakiterator"))) {
available_locales = icu::BreakIterator::getAvailableLocales(count);
+#endif
}
UErrorCode error = U_ZERO_ERROR;
@@ -604,6 +606,7 @@ RUNTIME_FUNCTION(Runtime_StringNormalize) {
RUNTIME_FUNCTION(Runtime_CreateBreakIterator) {
HandleScope scope(isolate);
+#if !UCONFIG_NO_BREAK_ITERATION
DCHECK(args.length() == 3);
CONVERT_ARG_HANDLE_CHECKED(String, locale, 0);
@@ -641,12 +644,16 @@ RUNTIME_FUNCTION(Runtime_CreateBreakIterator) {
reinterpret_cast<void*>(wrapper.location()),
BreakIterator::DeleteBreakIterator);
return *local_object;
+#else
+ return isolate->heap()->undefined_value();
+#endif
}
RUNTIME_FUNCTION(Runtime_BreakIteratorAdoptText) {
HandleScope scope(isolate);
+#if !UCONFIG_NO_BREAK_ITERATION
DCHECK(args.length() == 2);
CONVERT_ARG_HANDLE_CHECKED(JSObject, break_iterator_holder, 0);
@@ -666,6 +673,7 @@ RUNTIME_FUNCTION(Runtime_BreakIteratorAdoptText) {
break_iterator_holder->SetInternalField(1,
reinterpret_cast<Smi*>(u_text));
break_iterator->setText(*u_text);
+#endif
return isolate->heap()->undefined_value();
}
@@ -674,6 +682,7 @@ RUNTIME_FUNCTION(Runtime_BreakIteratorAdoptText) {
RUNTIME_FUNCTION(Runtime_BreakIteratorFirst) {
HandleScope scope(isolate);
+#if !UCONFIG_NO_BREAK_ITERATION
DCHECK(args.length() == 1);
CONVERT_ARG_HANDLE_CHECKED(JSObject, break_iterator_holder, 0);
@@ -683,12 +692,16 @@ RUNTIME_FUNCTION(Runtime_BreakIteratorFirst) {
if (!break_iterator) return isolate->ThrowIllegalOperation();
return *isolate->factory()->NewNumberFromInt(break_iterator->first());
+#else
+ return isolate->heap()->undefined_value();
+#endif
}
RUNTIME_FUNCTION(Runtime_BreakIteratorNext) {
HandleScope scope(isolate);
+#if !UCONFIG_NO_BREAK_ITERATION
DCHECK(args.length() == 1);
CONVERT_ARG_HANDLE_CHECKED(JSObject, break_iterator_holder, 0);
@@ -698,12 +711,16 @@ RUNTIME_FUNCTION(Runtime_BreakIteratorNext) {
if (!break_iterator) return isolate->ThrowIllegalOperation();
return *isolate->factory()->NewNumberFromInt(break_iterator->next());
+#else
+ return isolate->heap()->undefined_value();
+#endif
}
RUNTIME_FUNCTION(Runtime_BreakIteratorCurrent) {
HandleScope scope(isolate);
+#if !UCONFIG_NO_BREAK_ITERATION
DCHECK(args.length() == 1);
CONVERT_ARG_HANDLE_CHECKED(JSObject, break_iterator_holder, 0);
@@ -713,12 +730,16 @@ RUNTIME_FUNCTION(Runtime_BreakIteratorCurrent) {
if (!break_iterator) return isolate->ThrowIllegalOperation();
return *isolate->factory()->NewNumberFromInt(break_iterator->current());
+#else
+ return isolate->heap()->undefined_value();
+#endif
}
RUNTIME_FUNCTION(Runtime_BreakIteratorBreakType) {
HandleScope scope(isolate);
+#if !UCONFIG_NO_BREAK_ITERATION
DCHECK(args.length() == 1);
CONVERT_ARG_HANDLE_CHECKED(JSObject, break_iterator_holder, 0);
@@ -745,6 +766,9 @@ RUNTIME_FUNCTION(Runtime_BreakIteratorBreakType) {
} else {
return *isolate->factory()->NewStringFromStaticChars("unknown");
}
+#else
+ return isolate->heap()->undefined_value();
+#endif
}
}
} // namespace v8::internal
--
--
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.