| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 | 5 |
| 6 #ifdef V8_I18N_SUPPORT | 6 #ifdef V8_I18N_SUPPORT |
| 7 #include "src/v8.h" | 7 #include "src/v8.h" |
| 8 | 8 |
| 9 #include "src/api-natives.h" |
| 9 #include "src/arguments.h" | 10 #include "src/arguments.h" |
| 10 #include "src/i18n.h" | 11 #include "src/i18n.h" |
| 11 #include "src/runtime/runtime-utils.h" | 12 #include "src/runtime/runtime-utils.h" |
| 12 | 13 |
| 13 #include "unicode/brkiter.h" | 14 #include "unicode/brkiter.h" |
| 14 #include "unicode/calendar.h" | 15 #include "unicode/calendar.h" |
| 15 #include "unicode/coll.h" | 16 #include "unicode/coll.h" |
| 16 #include "unicode/curramt.h" | 17 #include "unicode/curramt.h" |
| 17 #include "unicode/datefmt.h" | 18 #include "unicode/datefmt.h" |
| 18 #include "unicode/dcfmtsym.h" | 19 #include "unicode/dcfmtsym.h" |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 CONVERT_ARG_HANDLE_CHECKED(String, locale, 0); | 311 CONVERT_ARG_HANDLE_CHECKED(String, locale, 0); |
| 311 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); | 312 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); |
| 312 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); | 313 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); |
| 313 | 314 |
| 314 Handle<ObjectTemplateInfo> date_format_template = I18N::GetTemplate(isolate); | 315 Handle<ObjectTemplateInfo> date_format_template = I18N::GetTemplate(isolate); |
| 315 | 316 |
| 316 // Create an empty object wrapper. | 317 // Create an empty object wrapper. |
| 317 Handle<JSObject> local_object; | 318 Handle<JSObject> local_object; |
| 318 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | 319 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
| 319 isolate, local_object, | 320 isolate, local_object, |
| 320 Execution::InstantiateObject(date_format_template)); | 321 ApiNatives::InstantiateObject(date_format_template)); |
| 321 | 322 |
| 322 // Set date time formatter as internal field of the resulting JS object. | 323 // Set date time formatter as internal field of the resulting JS object. |
| 323 icu::SimpleDateFormat* date_format = | 324 icu::SimpleDateFormat* date_format = |
| 324 DateFormat::InitializeDateTimeFormat(isolate, locale, options, resolved); | 325 DateFormat::InitializeDateTimeFormat(isolate, locale, options, resolved); |
| 325 | 326 |
| 326 if (!date_format) return isolate->ThrowIllegalOperation(); | 327 if (!date_format) return isolate->ThrowIllegalOperation(); |
| 327 | 328 |
| 328 local_object->SetInternalField(0, reinterpret_cast<Smi*>(date_format)); | 329 local_object->SetInternalField(0, reinterpret_cast<Smi*>(date_format)); |
| 329 | 330 |
| 330 Factory* factory = isolate->factory(); | 331 Factory* factory = isolate->factory(); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); | 406 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); |
| 406 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); | 407 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); |
| 407 | 408 |
| 408 Handle<ObjectTemplateInfo> number_format_template = | 409 Handle<ObjectTemplateInfo> number_format_template = |
| 409 I18N::GetTemplate(isolate); | 410 I18N::GetTemplate(isolate); |
| 410 | 411 |
| 411 // Create an empty object wrapper. | 412 // Create an empty object wrapper. |
| 412 Handle<JSObject> local_object; | 413 Handle<JSObject> local_object; |
| 413 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | 414 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
| 414 isolate, local_object, | 415 isolate, local_object, |
| 415 Execution::InstantiateObject(number_format_template)); | 416 ApiNatives::InstantiateObject(number_format_template)); |
| 416 | 417 |
| 417 // Set number formatter as internal field of the resulting JS object. | 418 // Set number formatter as internal field of the resulting JS object. |
| 418 icu::DecimalFormat* number_format = | 419 icu::DecimalFormat* number_format = |
| 419 NumberFormat::InitializeNumberFormat(isolate, locale, options, resolved); | 420 NumberFormat::InitializeNumberFormat(isolate, locale, options, resolved); |
| 420 | 421 |
| 421 if (!number_format) return isolate->ThrowIllegalOperation(); | 422 if (!number_format) return isolate->ThrowIllegalOperation(); |
| 422 | 423 |
| 423 local_object->SetInternalField(0, reinterpret_cast<Smi*>(number_format)); | 424 local_object->SetInternalField(0, reinterpret_cast<Smi*>(number_format)); |
| 424 | 425 |
| 425 Factory* factory = isolate->factory(); | 426 Factory* factory = isolate->factory(); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 | 511 |
| 511 CONVERT_ARG_HANDLE_CHECKED(String, locale, 0); | 512 CONVERT_ARG_HANDLE_CHECKED(String, locale, 0); |
| 512 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); | 513 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); |
| 513 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); | 514 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); |
| 514 | 515 |
| 515 Handle<ObjectTemplateInfo> collator_template = I18N::GetTemplate(isolate); | 516 Handle<ObjectTemplateInfo> collator_template = I18N::GetTemplate(isolate); |
| 516 | 517 |
| 517 // Create an empty object wrapper. | 518 // Create an empty object wrapper. |
| 518 Handle<JSObject> local_object; | 519 Handle<JSObject> local_object; |
| 519 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | 520 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
| 520 isolate, local_object, Execution::InstantiateObject(collator_template)); | 521 isolate, local_object, ApiNatives::InstantiateObject(collator_template)); |
| 521 | 522 |
| 522 // Set collator as internal field of the resulting JS object. | 523 // Set collator as internal field of the resulting JS object. |
| 523 icu::Collator* collator = | 524 icu::Collator* collator = |
| 524 Collator::InitializeCollator(isolate, locale, options, resolved); | 525 Collator::InitializeCollator(isolate, locale, options, resolved); |
| 525 | 526 |
| 526 if (!collator) return isolate->ThrowIllegalOperation(); | 527 if (!collator) return isolate->ThrowIllegalOperation(); |
| 527 | 528 |
| 528 local_object->SetInternalField(0, reinterpret_cast<Smi*>(collator)); | 529 local_object->SetInternalField(0, reinterpret_cast<Smi*>(collator)); |
| 529 | 530 |
| 530 Factory* factory = isolate->factory(); | 531 Factory* factory = isolate->factory(); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); | 610 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); |
| 610 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); | 611 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); |
| 611 | 612 |
| 612 Handle<ObjectTemplateInfo> break_iterator_template = | 613 Handle<ObjectTemplateInfo> break_iterator_template = |
| 613 I18N::GetTemplate2(isolate); | 614 I18N::GetTemplate2(isolate); |
| 614 | 615 |
| 615 // Create an empty object wrapper. | 616 // Create an empty object wrapper. |
| 616 Handle<JSObject> local_object; | 617 Handle<JSObject> local_object; |
| 617 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | 618 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
| 618 isolate, local_object, | 619 isolate, local_object, |
| 619 Execution::InstantiateObject(break_iterator_template)); | 620 ApiNatives::InstantiateObject(break_iterator_template)); |
| 620 | 621 |
| 621 // Set break iterator as internal field of the resulting JS object. | 622 // Set break iterator as internal field of the resulting JS object. |
| 622 icu::BreakIterator* break_iterator = BreakIterator::InitializeBreakIterator( | 623 icu::BreakIterator* break_iterator = BreakIterator::InitializeBreakIterator( |
| 623 isolate, locale, options, resolved); | 624 isolate, locale, options, resolved); |
| 624 | 625 |
| 625 if (!break_iterator) return isolate->ThrowIllegalOperation(); | 626 if (!break_iterator) return isolate->ThrowIllegalOperation(); |
| 626 | 627 |
| 627 local_object->SetInternalField(0, reinterpret_cast<Smi*>(break_iterator)); | 628 local_object->SetInternalField(0, reinterpret_cast<Smi*>(break_iterator)); |
| 628 // Make sure that the pointer to adopted text is NULL. | 629 // Make sure that the pointer to adopted text is NULL. |
| 629 local_object->SetInternalField(1, reinterpret_cast<Smi*>(NULL)); | 630 local_object->SetInternalField(1, reinterpret_cast<Smi*>(NULL)); |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 742 } else if (status >= UBRK_WORD_IDEO && status < UBRK_WORD_IDEO_LIMIT) { | 743 } else if (status >= UBRK_WORD_IDEO && status < UBRK_WORD_IDEO_LIMIT) { |
| 743 return *isolate->factory()->NewStringFromStaticChars("ideo"); | 744 return *isolate->factory()->NewStringFromStaticChars("ideo"); |
| 744 } else { | 745 } else { |
| 745 return *isolate->factory()->NewStringFromStaticChars("unknown"); | 746 return *isolate->factory()->NewStringFromStaticChars("unknown"); |
| 746 } | 747 } |
| 747 } | 748 } |
| 748 } | 749 } |
| 749 } // namespace v8::internal | 750 } // namespace v8::internal |
| 750 | 751 |
| 751 #endif // V8_I18N_SUPPORT | 752 #endif // V8_I18N_SUPPORT |
| OLD | NEW |