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.

Reply via email to