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/runtime/runtime-utils.h" | 7 #include "src/runtime/runtime-utils.h" |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); | 315 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); |
316 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); | 316 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); |
317 | 317 |
318 Handle<JSFunction> constructor( | 318 Handle<JSFunction> constructor( |
319 isolate->native_context()->intl_date_time_format_function()); | 319 isolate->native_context()->intl_date_time_format_function()); |
320 | 320 |
321 Handle<JSObject> local_object; | 321 Handle<JSObject> local_object; |
322 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, local_object, | 322 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, local_object, |
323 JSObject::New(constructor, constructor)); | 323 JSObject::New(constructor, constructor)); |
324 | 324 |
325 // Set date time formatter as internal field of the resulting JS object. | 325 // Set date time formatter as embedder field of the resulting JS object. |
326 icu::SimpleDateFormat* date_format = | 326 icu::SimpleDateFormat* date_format = |
327 DateFormat::InitializeDateTimeFormat(isolate, locale, options, resolved); | 327 DateFormat::InitializeDateTimeFormat(isolate, locale, options, resolved); |
328 | 328 |
329 if (!date_format) return isolate->ThrowIllegalOperation(); | 329 if (!date_format) return isolate->ThrowIllegalOperation(); |
330 | 330 |
331 local_object->SetInternalField(0, reinterpret_cast<Smi*>(date_format)); | 331 local_object->SetEmbedderField(0, reinterpret_cast<Smi*>(date_format)); |
332 | 332 |
333 // Make object handle weak so we can delete the data format once GC kicks in. | 333 // Make object handle weak so we can delete the data format once GC kicks in. |
334 Handle<Object> wrapper = isolate->global_handles()->Create(*local_object); | 334 Handle<Object> wrapper = isolate->global_handles()->Create(*local_object); |
335 GlobalHandles::MakeWeak(wrapper.location(), wrapper.location(), | 335 GlobalHandles::MakeWeak(wrapper.location(), wrapper.location(), |
336 DateFormat::DeleteDateFormat, | 336 DateFormat::DeleteDateFormat, |
337 WeakCallbackType::kInternalFields); | 337 WeakCallbackType::kInternalFields); |
338 return *local_object; | 338 return *local_object; |
339 } | 339 } |
340 | 340 |
341 | 341 |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); | 505 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); |
506 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); | 506 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); |
507 | 507 |
508 Handle<JSFunction> constructor( | 508 Handle<JSFunction> constructor( |
509 isolate->native_context()->intl_number_format_function()); | 509 isolate->native_context()->intl_number_format_function()); |
510 | 510 |
511 Handle<JSObject> local_object; | 511 Handle<JSObject> local_object; |
512 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, local_object, | 512 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, local_object, |
513 JSObject::New(constructor, constructor)); | 513 JSObject::New(constructor, constructor)); |
514 | 514 |
515 // Set number formatter as internal field of the resulting JS object. | 515 // Set number formatter as embedder field of the resulting JS object. |
516 icu::DecimalFormat* number_format = | 516 icu::DecimalFormat* number_format = |
517 NumberFormat::InitializeNumberFormat(isolate, locale, options, resolved); | 517 NumberFormat::InitializeNumberFormat(isolate, locale, options, resolved); |
518 | 518 |
519 if (!number_format) return isolate->ThrowIllegalOperation(); | 519 if (!number_format) return isolate->ThrowIllegalOperation(); |
520 | 520 |
521 local_object->SetInternalField(0, reinterpret_cast<Smi*>(number_format)); | 521 local_object->SetEmbedderField(0, reinterpret_cast<Smi*>(number_format)); |
522 | 522 |
523 Handle<Object> wrapper = isolate->global_handles()->Create(*local_object); | 523 Handle<Object> wrapper = isolate->global_handles()->Create(*local_object); |
524 GlobalHandles::MakeWeak(wrapper.location(), wrapper.location(), | 524 GlobalHandles::MakeWeak(wrapper.location(), wrapper.location(), |
525 NumberFormat::DeleteNumberFormat, | 525 NumberFormat::DeleteNumberFormat, |
526 WeakCallbackType::kInternalFields); | 526 WeakCallbackType::kInternalFields); |
527 return *local_object; | 527 return *local_object; |
528 } | 528 } |
529 | 529 |
530 | 530 |
531 RUNTIME_FUNCTION(Runtime_InternalNumberFormat) { | 531 RUNTIME_FUNCTION(Runtime_InternalNumberFormat) { |
(...skipping 30 matching lines...) Expand all Loading... |
562 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); | 562 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); |
563 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); | 563 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); |
564 | 564 |
565 Handle<JSFunction> constructor( | 565 Handle<JSFunction> constructor( |
566 isolate->native_context()->intl_collator_function()); | 566 isolate->native_context()->intl_collator_function()); |
567 | 567 |
568 Handle<JSObject> local_object; | 568 Handle<JSObject> local_object; |
569 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, local_object, | 569 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, local_object, |
570 JSObject::New(constructor, constructor)); | 570 JSObject::New(constructor, constructor)); |
571 | 571 |
572 // Set collator as internal field of the resulting JS object. | 572 // Set collator as embedder field of the resulting JS object. |
573 icu::Collator* collator = | 573 icu::Collator* collator = |
574 Collator::InitializeCollator(isolate, locale, options, resolved); | 574 Collator::InitializeCollator(isolate, locale, options, resolved); |
575 | 575 |
576 if (!collator) return isolate->ThrowIllegalOperation(); | 576 if (!collator) return isolate->ThrowIllegalOperation(); |
577 | 577 |
578 local_object->SetInternalField(0, reinterpret_cast<Smi*>(collator)); | 578 local_object->SetEmbedderField(0, reinterpret_cast<Smi*>(collator)); |
579 | 579 |
580 Handle<Object> wrapper = isolate->global_handles()->Create(*local_object); | 580 Handle<Object> wrapper = isolate->global_handles()->Create(*local_object); |
581 GlobalHandles::MakeWeak(wrapper.location(), wrapper.location(), | 581 GlobalHandles::MakeWeak(wrapper.location(), wrapper.location(), |
582 Collator::DeleteCollator, | 582 Collator::DeleteCollator, |
583 WeakCallbackType::kInternalFields); | 583 WeakCallbackType::kInternalFields); |
584 return *local_object; | 584 return *local_object; |
585 } | 585 } |
586 | 586 |
587 | 587 |
588 RUNTIME_FUNCTION(Runtime_InternalCompare) { | 588 RUNTIME_FUNCTION(Runtime_InternalCompare) { |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
689 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); | 689 CONVERT_ARG_HANDLE_CHECKED(JSObject, options, 1); |
690 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); | 690 CONVERT_ARG_HANDLE_CHECKED(JSObject, resolved, 2); |
691 | 691 |
692 Handle<JSFunction> constructor( | 692 Handle<JSFunction> constructor( |
693 isolate->native_context()->intl_v8_break_iterator_function()); | 693 isolate->native_context()->intl_v8_break_iterator_function()); |
694 | 694 |
695 Handle<JSObject> local_object; | 695 Handle<JSObject> local_object; |
696 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, local_object, | 696 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, local_object, |
697 JSObject::New(constructor, constructor)); | 697 JSObject::New(constructor, constructor)); |
698 | 698 |
699 // Set break iterator as internal field of the resulting JS object. | 699 // Set break iterator as embedder field of the resulting JS object. |
700 icu::BreakIterator* break_iterator = V8BreakIterator::InitializeBreakIterator( | 700 icu::BreakIterator* break_iterator = V8BreakIterator::InitializeBreakIterator( |
701 isolate, locale, options, resolved); | 701 isolate, locale, options, resolved); |
702 | 702 |
703 if (!break_iterator) return isolate->ThrowIllegalOperation(); | 703 if (!break_iterator) return isolate->ThrowIllegalOperation(); |
704 | 704 |
705 local_object->SetInternalField(0, reinterpret_cast<Smi*>(break_iterator)); | 705 local_object->SetEmbedderField(0, reinterpret_cast<Smi*>(break_iterator)); |
706 // Make sure that the pointer to adopted text is NULL. | 706 // Make sure that the pointer to adopted text is NULL. |
707 local_object->SetInternalField(1, static_cast<Smi*>(nullptr)); | 707 local_object->SetEmbedderField(1, static_cast<Smi*>(nullptr)); |
708 | 708 |
709 // Make object handle weak so we can delete the break iterator once GC kicks | 709 // Make object handle weak so we can delete the break iterator once GC kicks |
710 // in. | 710 // in. |
711 Handle<Object> wrapper = isolate->global_handles()->Create(*local_object); | 711 Handle<Object> wrapper = isolate->global_handles()->Create(*local_object); |
712 GlobalHandles::MakeWeak(wrapper.location(), wrapper.location(), | 712 GlobalHandles::MakeWeak(wrapper.location(), wrapper.location(), |
713 V8BreakIterator::DeleteBreakIterator, | 713 V8BreakIterator::DeleteBreakIterator, |
714 WeakCallbackType::kInternalFields); | 714 WeakCallbackType::kInternalFields); |
715 return *local_object; | 715 return *local_object; |
716 } | 716 } |
717 | 717 |
718 | 718 |
719 RUNTIME_FUNCTION(Runtime_BreakIteratorAdoptText) { | 719 RUNTIME_FUNCTION(Runtime_BreakIteratorAdoptText) { |
720 HandleScope scope(isolate); | 720 HandleScope scope(isolate); |
721 | 721 |
722 DCHECK_EQ(2, args.length()); | 722 DCHECK_EQ(2, args.length()); |
723 | 723 |
724 CONVERT_ARG_HANDLE_CHECKED(JSObject, break_iterator_holder, 0); | 724 CONVERT_ARG_HANDLE_CHECKED(JSObject, break_iterator_holder, 0); |
725 CONVERT_ARG_HANDLE_CHECKED(String, text, 1); | 725 CONVERT_ARG_HANDLE_CHECKED(String, text, 1); |
726 | 726 |
727 icu::BreakIterator* break_iterator = | 727 icu::BreakIterator* break_iterator = |
728 V8BreakIterator::UnpackBreakIterator(isolate, break_iterator_holder); | 728 V8BreakIterator::UnpackBreakIterator(isolate, break_iterator_holder); |
729 CHECK_NOT_NULL(break_iterator); | 729 CHECK_NOT_NULL(break_iterator); |
730 | 730 |
731 icu::UnicodeString* u_text = reinterpret_cast<icu::UnicodeString*>( | 731 icu::UnicodeString* u_text = reinterpret_cast<icu::UnicodeString*>( |
732 break_iterator_holder->GetInternalField(1)); | 732 break_iterator_holder->GetEmbedderField(1)); |
733 delete u_text; | 733 delete u_text; |
734 | 734 |
735 int length = text->length(); | 735 int length = text->length(); |
736 text = String::Flatten(text); | 736 text = String::Flatten(text); |
737 DisallowHeapAllocation no_gc; | 737 DisallowHeapAllocation no_gc; |
738 String::FlatContent flat = text->GetFlatContent(); | 738 String::FlatContent flat = text->GetFlatContent(); |
739 std::unique_ptr<uc16[]> sap; | 739 std::unique_ptr<uc16[]> sap; |
740 const UChar* text_value = GetUCharBufferFromFlat(flat, &sap, length); | 740 const UChar* text_value = GetUCharBufferFromFlat(flat, &sap, length); |
741 u_text = new icu::UnicodeString(text_value, length); | 741 u_text = new icu::UnicodeString(text_value, length); |
742 break_iterator_holder->SetInternalField(1, reinterpret_cast<Smi*>(u_text)); | 742 break_iterator_holder->SetEmbedderField(1, reinterpret_cast<Smi*>(u_text)); |
743 | 743 |
744 break_iterator->setText(*u_text); | 744 break_iterator->setText(*u_text); |
745 | 745 |
746 return isolate->heap()->undefined_value(); | 746 return isolate->heap()->undefined_value(); |
747 } | 747 } |
748 | 748 |
749 | 749 |
750 RUNTIME_FUNCTION(Runtime_BreakIteratorFirst) { | 750 RUNTIME_FUNCTION(Runtime_BreakIteratorFirst) { |
751 HandleScope scope(isolate); | 751 HandleScope scope(isolate); |
752 | 752 |
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1182 Handle<FixedArray> date_cache_version = | 1182 Handle<FixedArray> date_cache_version = |
1183 Handle<FixedArray>::cast(isolate->eternal_handles()->GetSingleton( | 1183 Handle<FixedArray>::cast(isolate->eternal_handles()->GetSingleton( |
1184 EternalHandles::DATE_CACHE_VERSION)); | 1184 EternalHandles::DATE_CACHE_VERSION)); |
1185 return date_cache_version->get(0); | 1185 return date_cache_version->get(0); |
1186 } | 1186 } |
1187 | 1187 |
1188 } // namespace internal | 1188 } // namespace internal |
1189 } // namespace v8 | 1189 } // namespace v8 |
1190 | 1190 |
1191 #endif // V8_I18N_SUPPORT | 1191 #endif // V8_I18N_SUPPORT |
OLD | NEW |