| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index 67ac754fc3de9bd50ba45a669a71ac6040fc9bb0..7e7fe830e1c3d25d25d1f86f733881a1c99ca980 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -315,8 +315,7 @@ MUST_USE_RESULT static MaybeHandle<Object> CreateObjectLiteralBoilerplate(
|
| char arr[100];
|
| Vector<char> buffer(arr, ARRAY_SIZE(arr));
|
| const char* str = DoubleToCString(num, buffer);
|
| - Handle<String> name =
|
| - isolate->factory()->NewStringFromAscii(CStrVector(str));
|
| + Handle<String> name = isolate->factory()->NewStringFromAsciiChecked(str);
|
| maybe_result = JSObject::SetLocalPropertyIgnoreAttributes(
|
| boilerplate, name, value, NONE,
|
| Object::OPTIMAL_REPRESENTATION, mode);
|
| @@ -2025,8 +2024,9 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_RegExpCompile) {
|
| CONVERT_ARG_HANDLE_CHECKED(JSRegExp, re, 0);
|
| CONVERT_ARG_HANDLE_CHECKED(String, pattern, 1);
|
| CONVERT_ARG_HANDLE_CHECKED(String, flags, 2);
|
| - Handle<Object> result = RegExpImpl::Compile(re, pattern, flags);
|
| - RETURN_IF_EMPTY_HANDLE(isolate, result);
|
| + Handle<Object> result;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, result, RegExpImpl::Compile(re, pattern, flags));
|
| return *result;
|
| }
|
|
|
| @@ -4801,8 +4801,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToRadixString) {
|
| return isolate->heap()->infinity_string();
|
| }
|
| char* str = DoubleToRadixCString(value, radix);
|
| - Handle<String> result =
|
| - isolate->factory()->NewStringFromOneByte(OneByteVector(str));
|
| + Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str);
|
| DeleteArray(str);
|
| return *result;
|
| }
|
| @@ -4817,8 +4816,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToFixed) {
|
| int f = FastD2IChecked(f_number);
|
| RUNTIME_ASSERT(f >= 0);
|
| char* str = DoubleToFixedCString(value, f);
|
| - Handle<String> result =
|
| - isolate->factory()->NewStringFromOneByte(OneByteVector(str));
|
| + Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str);
|
| DeleteArray(str);
|
| return *result;
|
| }
|
| @@ -4833,8 +4831,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToExponential) {
|
| int f = FastD2IChecked(f_number);
|
| RUNTIME_ASSERT(f >= -1 && f <= 20);
|
| char* str = DoubleToExponentialCString(value, f);
|
| - Handle<String> result =
|
| - isolate->factory()->NewStringFromOneByte(OneByteVector(str));
|
| + Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str);
|
| DeleteArray(str);
|
| return *result;
|
| }
|
| @@ -4849,8 +4846,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToPrecision) {
|
| int f = FastD2IChecked(f_number);
|
| RUNTIME_ASSERT(f >= 1 && f <= 21);
|
| char* str = DoubleToPrecisionCString(value, f);
|
| - Handle<String> result =
|
| - isolate->factory()->NewStringFromOneByte(OneByteVector(str));
|
| + Handle<String> result = isolate->factory()->NewStringFromAsciiChecked(str);
|
| DeleteArray(str);
|
| return *result;
|
| }
|
| @@ -9436,8 +9432,7 @@ RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_ThrowMessage) {
|
| const char* message = GetBailoutReason(
|
| static_cast<BailoutReason>(message_id));
|
| Handle<String> message_handle =
|
| - isolate->factory()->NewStringFromAscii(CStrVector(message));
|
| - RETURN_IF_EMPTY_HANDLE(isolate, message_handle);
|
| + isolate->factory()->NewStringFromAsciiChecked(message);
|
| return isolate->Throw(*message_handle);
|
| }
|
|
|
| @@ -9619,7 +9614,9 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DateLocalTimezone) {
|
| CONVERT_DOUBLE_ARG_CHECKED(x, 0);
|
| const char* zone =
|
| isolate->date_cache()->LocalTimezone(static_cast<int64_t>(x));
|
| - return *isolate->factory()->NewStringFromUtf8(CStrVector(zone));
|
| + Handle<String> result = isolate->factory()->NewStringFromUtf8(
|
| + CStrVector(zone)).ToHandleChecked();
|
| + return *result;
|
| }
|
|
|
|
|
| @@ -13649,7 +13646,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CanonicalizeLanguageTag) {
|
| uloc_forLanguageTag(*locale_id, icu_result, ULOC_FULLNAME_CAPACITY,
|
| &icu_length, &error);
|
| if (U_FAILURE(error) || icu_length == 0) {
|
| - return *factory->NewStringFromOneByte(OneByteVector(kInvalidTag));
|
| + return *factory->NewStringFromAsciiChecked(kInvalidTag);
|
| }
|
|
|
| char result[ULOC_FULLNAME_CAPACITY];
|
| @@ -13658,15 +13655,16 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CanonicalizeLanguageTag) {
|
| uloc_toLanguageTag(icu_result, result, ULOC_FULLNAME_CAPACITY, TRUE, &error);
|
|
|
| if (U_FAILURE(error)) {
|
| - return *factory->NewStringFromOneByte(OneByteVector(kInvalidTag));
|
| + return *factory->NewStringFromAsciiChecked(kInvalidTag);
|
| }
|
|
|
| - return *factory->NewStringFromOneByte(OneByteVector(result));
|
| + return *factory->NewStringFromAsciiChecked(result);
|
| }
|
|
|
|
|
| RUNTIME_FUNCTION(MaybeObject*, Runtime_AvailableLocalesOf) {
|
| HandleScope scope(isolate);
|
| + Factory* factory = isolate->factory();
|
|
|
| ASSERT(args.length() == 1);
|
| CONVERT_ARG_HANDLE_CHECKED(String, service, 0);
|
| @@ -13687,7 +13685,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_AvailableLocalesOf) {
|
| UErrorCode error = U_ZERO_ERROR;
|
| char result[ULOC_FULLNAME_CAPACITY];
|
| Handle<JSObject> locales =
|
| - isolate->factory()->NewJSObject(isolate->object_function());
|
| + factory->NewJSObject(isolate->object_function());
|
|
|
| for (int32_t i = 0; i < count; ++i) {
|
| const char* icu_name = available_locales[i].getName();
|
| @@ -13703,8 +13701,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_AvailableLocalesOf) {
|
| RETURN_FAILURE_ON_EXCEPTION(isolate,
|
| JSObject::SetLocalPropertyIgnoreAttributes(
|
| locales,
|
| - isolate->factory()->NewStringFromAscii(CStrVector(result)),
|
| - isolate->factory()->NewNumber(i),
|
| + factory->NewStringFromAsciiChecked(result),
|
| + factory->NewNumber(i),
|
| NONE));
|
| }
|
|
|
| @@ -13726,32 +13724,31 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetDefaultICULocale) {
|
| uloc_toLanguageTag(
|
| default_locale.getName(), result, ULOC_FULLNAME_CAPACITY, FALSE, &status);
|
| if (U_SUCCESS(status)) {
|
| - return *factory->NewStringFromOneByte(OneByteVector(result));
|
| + return *factory->NewStringFromAsciiChecked(result);
|
| }
|
|
|
| - return *factory->NewStringFromOneByte(STATIC_ASCII_VECTOR("und"));
|
| + return *factory->NewStringFromStaticAscii("und");
|
| }
|
|
|
|
|
| RUNTIME_FUNCTION(MaybeObject*, Runtime_GetLanguageTagVariants) {
|
| HandleScope scope(isolate);
|
| + Factory* factory = isolate->factory();
|
|
|
| ASSERT(args.length() == 1);
|
|
|
| CONVERT_ARG_HANDLE_CHECKED(JSArray, input, 0);
|
|
|
| uint32_t length = static_cast<uint32_t>(input->length()->Number());
|
| - Handle<FixedArray> output = isolate->factory()->NewFixedArray(length);
|
| - Handle<Name> maximized =
|
| - isolate->factory()->NewStringFromAscii(CStrVector("maximized"));
|
| - Handle<Name> base =
|
| - isolate->factory()->NewStringFromAscii(CStrVector("base"));
|
| + Handle<FixedArray> output = factory->NewFixedArray(length);
|
| + Handle<Name> maximized = factory->NewStringFromStaticAscii("maximized");
|
| + Handle<Name> base = factory->NewStringFromStaticAscii("base");
|
| for (unsigned int i = 0; i < length; ++i) {
|
| Handle<Object> locale_id;
|
| ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| isolate, locale_id, Object::GetElement(isolate, input, i));
|
| if (!locale_id->IsString()) {
|
| - return isolate->Throw(isolate->heap()->illegal_argument_string());
|
| + return isolate->Throw(*factory->illegal_argument_string());
|
| }
|
|
|
| v8::String::Utf8Value utf8_locale_id(
|
| @@ -13766,7 +13763,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetLanguageTagVariants) {
|
| uloc_forLanguageTag(*utf8_locale_id, icu_locale, ULOC_FULLNAME_CAPACITY,
|
| &icu_locale_length, &error);
|
| if (U_FAILURE(error) || icu_locale_length == 0) {
|
| - return isolate->Throw(isolate->heap()->illegal_argument_string());
|
| + return isolate->Throw(*factory->illegal_argument_string());
|
| }
|
|
|
| // Maximize the locale.
|
| @@ -13799,27 +13796,26 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetLanguageTagVariants) {
|
| icu_base_locale, base_locale, ULOC_FULLNAME_CAPACITY, FALSE, &error);
|
|
|
| if (U_FAILURE(error)) {
|
| - return isolate->Throw(isolate->heap()->illegal_argument_string());
|
| + return isolate->Throw(*factory->illegal_argument_string());
|
| }
|
|
|
| - Handle<JSObject> result =
|
| - isolate->factory()->NewJSObject(isolate->object_function());
|
| + Handle<JSObject> result = factory->NewJSObject(isolate->object_function());
|
| RETURN_FAILURE_ON_EXCEPTION(isolate,
|
| JSObject::SetLocalPropertyIgnoreAttributes(
|
| result,
|
| maximized,
|
| - isolate->factory()->NewStringFromAscii(CStrVector(base_max_locale)),
|
| + factory->NewStringFromAsciiChecked(base_max_locale),
|
| NONE));
|
| RETURN_FAILURE_ON_EXCEPTION(isolate,
|
| JSObject::SetLocalPropertyIgnoreAttributes(
|
| result,
|
| base,
|
| - isolate->factory()->NewStringFromAscii(CStrVector(base_locale)),
|
| + factory->NewStringFromAsciiChecked(base_locale),
|
| NONE));
|
| output->set(i, *result);
|
| }
|
|
|
| - Handle<JSArray> result = isolate->factory()->NewJSArrayWithElements(output);
|
| + Handle<JSArray> result = factory->NewJSArrayWithElements(output);
|
| result->set_length(Smi::FromInt(length));
|
| return *result;
|
| }
|
| @@ -13935,8 +13931,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateDateTimeFormat) {
|
| RETURN_FAILURE_ON_EXCEPTION(isolate,
|
| JSObject::SetLocalPropertyIgnoreAttributes(
|
| local_object,
|
| - isolate->factory()->NewStringFromAscii(CStrVector("dateFormat")),
|
| - isolate->factory()->NewStringFromAscii(CStrVector("valid")),
|
| + isolate->factory()->NewStringFromStaticAscii("dateFormat"),
|
| + isolate->factory()->NewStringFromStaticAscii("valid"),
|
| NONE));
|
|
|
| // Make object handle weak so we can delete the data format once GC kicks in.
|
| @@ -13967,10 +13963,14 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_InternalDateFormat) {
|
| icu::UnicodeString result;
|
| date_format->format(value->Number(), result);
|
|
|
| - return *isolate->factory()->NewStringFromTwoByte(
|
| - Vector<const uint16_t>(
|
| - reinterpret_cast<const uint16_t*>(result.getBuffer()),
|
| - result.length()));
|
| + Handle<String> result_str;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, result_str,
|
| + isolate->factory()->NewStringFromTwoByte(
|
| + Vector<const uint16_t>(
|
| + reinterpret_cast<const uint16_t*>(result.getBuffer()),
|
| + result.length())));
|
| + return *result_str;
|
| }
|
|
|
|
|
| @@ -14030,8 +14030,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateNumberFormat) {
|
| RETURN_FAILURE_ON_EXCEPTION(isolate,
|
| JSObject::SetLocalPropertyIgnoreAttributes(
|
| local_object,
|
| - isolate->factory()->NewStringFromAscii(CStrVector("numberFormat")),
|
| - isolate->factory()->NewStringFromAscii(CStrVector("valid")),
|
| + isolate->factory()->NewStringFromStaticAscii("numberFormat"),
|
| + isolate->factory()->NewStringFromStaticAscii("valid"),
|
| NONE));
|
|
|
| Handle<Object> wrapper = isolate->global_handles()->Create(*local_object);
|
| @@ -14061,10 +14061,14 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_InternalNumberFormat) {
|
| icu::UnicodeString result;
|
| number_format->format(value->Number(), result);
|
|
|
| - return *isolate->factory()->NewStringFromTwoByte(
|
| - Vector<const uint16_t>(
|
| - reinterpret_cast<const uint16_t*>(result.getBuffer()),
|
| - result.length()));
|
| + Handle<String> result_str;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, result_str,
|
| + isolate->factory()->NewStringFromTwoByte(
|
| + Vector<const uint16_t>(
|
| + reinterpret_cast<const uint16_t*>(result.getBuffer()),
|
| + result.length())));
|
| + return *result_str;
|
| }
|
|
|
|
|
| @@ -14134,8 +14138,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateCollator) {
|
| RETURN_FAILURE_ON_EXCEPTION(isolate,
|
| JSObject::SetLocalPropertyIgnoreAttributes(
|
| local_object,
|
| - isolate->factory()->NewStringFromAscii(CStrVector("collator")),
|
| - isolate->factory()->NewStringFromAscii(CStrVector("valid")),
|
| + isolate->factory()->NewStringFromStaticAscii("collator"),
|
| + isolate->factory()->NewStringFromStaticAscii("valid"),
|
| NONE));
|
|
|
| Handle<Object> wrapper = isolate->global_handles()->Create(*local_object);
|
| @@ -14196,10 +14200,14 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringNormalize) {
|
| return isolate->heap()->undefined_value();
|
| }
|
|
|
| - return *isolate->factory()->NewStringFromTwoByte(
|
| - Vector<const uint16_t>(
|
| - reinterpret_cast<const uint16_t*>(result.getBuffer()),
|
| - result.length()));
|
| + Handle<String> result_str;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, result_str,
|
| + isolate->factory()->NewStringFromTwoByte(
|
| + Vector<const uint16_t>(
|
| + reinterpret_cast<const uint16_t*>(result.getBuffer()),
|
| + result.length())));
|
| + return *result_str;
|
| }
|
|
|
|
|
| @@ -14234,8 +14242,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateBreakIterator) {
|
| RETURN_FAILURE_ON_EXCEPTION(isolate,
|
| JSObject::SetLocalPropertyIgnoreAttributes(
|
| local_object,
|
| - isolate->factory()->NewStringFromAscii(CStrVector("breakIterator")),
|
| - isolate->factory()->NewStringFromAscii(CStrVector("valid")),
|
| + isolate->factory()->NewStringFromStaticAscii("breakIterator"),
|
| + isolate->factory()->NewStringFromStaticAscii("valid"),
|
| NONE));
|
|
|
| // Make object handle weak so we can delete the break iterator once GC kicks
|
| @@ -14337,17 +14345,17 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_BreakIteratorBreakType) {
|
| int32_t status = rule_based_iterator->getRuleStatus();
|
| // Keep return values in sync with JavaScript BreakType enum.
|
| if (status >= UBRK_WORD_NONE && status < UBRK_WORD_NONE_LIMIT) {
|
| - return *isolate->factory()->NewStringFromAscii(CStrVector("none"));
|
| + return *isolate->factory()->NewStringFromStaticAscii("none");
|
| } else if (status >= UBRK_WORD_NUMBER && status < UBRK_WORD_NUMBER_LIMIT) {
|
| - return *isolate->factory()->NewStringFromAscii(CStrVector("number"));
|
| + return *isolate->factory()->NewStringFromStaticAscii("number");
|
| } else if (status >= UBRK_WORD_LETTER && status < UBRK_WORD_LETTER_LIMIT) {
|
| - return *isolate->factory()->NewStringFromAscii(CStrVector("letter"));
|
| + return *isolate->factory()->NewStringFromStaticAscii("letter");
|
| } else if (status >= UBRK_WORD_KANA && status < UBRK_WORD_KANA_LIMIT) {
|
| - return *isolate->factory()->NewStringFromAscii(CStrVector("kana"));
|
| + return *isolate->factory()->NewStringFromStaticAscii("kana");
|
| } else if (status >= UBRK_WORD_IDEO && status < UBRK_WORD_IDEO_LIMIT) {
|
| - return *isolate->factory()->NewStringFromAscii(CStrVector("ideo"));
|
| + return *isolate->factory()->NewStringFromStaticAscii("ideo");
|
| } else {
|
| - return *isolate->factory()->NewStringFromAscii(CStrVector("unknown"));
|
| + return *isolate->factory()->NewStringFromStaticAscii("unknown");
|
| }
|
| }
|
| #endif // V8_I18N_SUPPORT
|
| @@ -14445,8 +14453,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetV8Version) {
|
|
|
| const char* version_string = v8::V8::GetVersion();
|
|
|
| - return *isolate->factory()->NewStringFromOneByte(
|
| - OneByteVector(version_string), NOT_TENURED);
|
| + return *isolate->factory()->NewStringFromAsciiChecked(version_string);
|
| }
|
|
|
|
|
| @@ -14658,11 +14665,9 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ListNatives) {
|
| Handle<String> name; \
|
| /* Inline runtime functions have an underscore in front of the name. */ \
|
| if (inline_runtime_functions) { \
|
| - name = factory->NewStringFromAscii( \
|
| - Vector<const char>("_" #Name, StrLength("_" #Name))); \
|
| + name = factory->NewStringFromStaticAscii("_" #Name); \
|
| } else { \
|
| - name = factory->NewStringFromAscii( \
|
| - Vector<const char>(#Name, StrLength(#Name))); \
|
| + name = factory->NewStringFromStaticAscii(#Name); \
|
| } \
|
| Handle<FixedArray> pair_elements = factory->NewFixedArray(2); \
|
| pair_elements->set(0, *name); \
|
|
|