| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index 9bbca2dbdaa9a8e7e3ed2f58cb53783f4aba790c..93445ec11440b0f00483bb7da41635556ea26a5a 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -5071,23 +5071,24 @@ static const byte JsonQuoteLengths[kQuoteTableLength] = {
|
|
|
|
|
| template <typename StringType>
|
| -MaybeObject* AllocateRawString(int length);
|
| +MaybeObject* AllocateRawString(Isolate* isolate, int length);
|
|
|
|
|
| template <>
|
| -MaybeObject* AllocateRawString<SeqTwoByteString>(int length) {
|
| - return HEAP->AllocateRawTwoByteString(length);
|
| +MaybeObject* AllocateRawString<SeqTwoByteString>(Isolate* isolate, int length) {
|
| + return isolate->heap()->AllocateRawTwoByteString(length);
|
| }
|
|
|
|
|
| template <>
|
| -MaybeObject* AllocateRawString<SeqAsciiString>(int length) {
|
| - return HEAP->AllocateRawAsciiString(length);
|
| +MaybeObject* AllocateRawString<SeqAsciiString>(Isolate* isolate, int length) {
|
| + return isolate->heap()->AllocateRawAsciiString(length);
|
| }
|
|
|
|
|
| template <typename Char, typename StringType, bool comma>
|
| -static MaybeObject* SlowQuoteJsonString(Vector<const Char> characters) {
|
| +static MaybeObject* SlowQuoteJsonString(Isolate* isolate,
|
| + Vector<const Char> characters) {
|
| int length = characters.length();
|
| const Char* read_cursor = characters.start();
|
| const Char* end = read_cursor + length;
|
| @@ -5101,7 +5102,8 @@ static MaybeObject* SlowQuoteJsonString(Vector<const Char> characters) {
|
| quoted_length += JsonQuoteLengths[static_cast<unsigned>(c)];
|
| }
|
| }
|
| - MaybeObject* new_alloc = AllocateRawString<StringType>(quoted_length);
|
| + MaybeObject* new_alloc = AllocateRawString<StringType>(isolate,
|
| + quoted_length);
|
| Object* new_object;
|
| if (!new_alloc->ToObject(&new_object)) {
|
| return new_alloc;
|
| @@ -5133,29 +5135,31 @@ static MaybeObject* SlowQuoteJsonString(Vector<const Char> characters) {
|
|
|
|
|
| template <typename Char, typename StringType, bool comma>
|
| -static MaybeObject* QuoteJsonString(Vector<const Char> characters) {
|
| +static MaybeObject* QuoteJsonString(Isolate* isolate,
|
| + Vector<const Char> characters) {
|
| int length = characters.length();
|
| - COUNTERS->quote_json_char_count()->Increment(length);
|
| + isolate->counters()->quote_json_char_count()->Increment(length);
|
| const int kSpaceForQuotes = 2 + (comma ? 1 :0);
|
| int worst_case_length = length * kJsonQuoteWorstCaseBlowup + kSpaceForQuotes;
|
| if (worst_case_length > kMaxGuaranteedNewSpaceString) {
|
| - return SlowQuoteJsonString<Char, StringType, comma>(characters);
|
| + return SlowQuoteJsonString<Char, StringType, comma>(isolate, characters);
|
| }
|
|
|
| - MaybeObject* new_alloc = AllocateRawString<StringType>(worst_case_length);
|
| + MaybeObject* new_alloc = AllocateRawString<StringType>(isolate,
|
| + worst_case_length);
|
| Object* new_object;
|
| if (!new_alloc->ToObject(&new_object)) {
|
| return new_alloc;
|
| }
|
| - if (!HEAP->new_space()->Contains(new_object)) {
|
| + if (!isolate->heap()->new_space()->Contains(new_object)) {
|
| // Even if our string is small enough to fit in new space we still have to
|
| // handle it being allocated in old space as may happen in the third
|
| // attempt. See CALL_AND_RETRY in heap-inl.h and similar code in
|
| // CEntryStub::GenerateCore.
|
| - return SlowQuoteJsonString<Char, StringType, comma>(characters);
|
| + return SlowQuoteJsonString<Char, StringType, comma>(isolate, characters);
|
| }
|
| StringType* new_string = StringType::cast(new_object);
|
| - ASSERT(HEAP->new_space()->Contains(new_string));
|
| + ASSERT(isolate->heap()->new_space()->Contains(new_string));
|
|
|
| STATIC_ASSERT(SeqTwoByteString::kHeaderSize == SeqAsciiString::kHeaderSize);
|
| Char* write_cursor = reinterpret_cast<Char*>(
|
| @@ -5192,8 +5196,8 @@ static MaybeObject* QuoteJsonString(Vector<const Char> characters) {
|
| int final_length = static_cast<int>(
|
| write_cursor - reinterpret_cast<Char*>(
|
| new_string->address() + SeqAsciiString::kHeaderSize));
|
| - HEAP->new_space()->ShrinkStringAtAllocationBoundary<StringType>(new_string,
|
| - final_length);
|
| + isolate->heap()->new_space()->ShrinkStringAtAllocationBoundary<StringType>(
|
| + new_string, final_length);
|
| return new_string;
|
| }
|
|
|
| @@ -5212,9 +5216,11 @@ static MaybeObject* Runtime_QuoteJSONString(RUNTIME_CALLING_CONVENTION) {
|
| ASSERT(str->IsFlat());
|
| }
|
| if (str->IsTwoByteRepresentation()) {
|
| - return QuoteJsonString<uc16, SeqTwoByteString, false>(str->ToUC16Vector());
|
| + return QuoteJsonString<uc16, SeqTwoByteString, false>(isolate,
|
| + str->ToUC16Vector());
|
| } else {
|
| - return QuoteJsonString<char, SeqAsciiString, false>(str->ToAsciiVector());
|
| + return QuoteJsonString<char, SeqAsciiString, false>(isolate,
|
| + str->ToAsciiVector());
|
| }
|
| }
|
|
|
| @@ -5233,9 +5239,11 @@ static MaybeObject* Runtime_QuoteJSONStringComma(RUNTIME_CALLING_CONVENTION) {
|
| ASSERT(str->IsFlat());
|
| }
|
| if (str->IsTwoByteRepresentation()) {
|
| - return QuoteJsonString<uc16, SeqTwoByteString, true>(str->ToUC16Vector());
|
| + return QuoteJsonString<uc16, SeqTwoByteString, true>(isolate,
|
| + str->ToUC16Vector());
|
| } else {
|
| - return QuoteJsonString<char, SeqAsciiString, true>(str->ToAsciiVector());
|
| + return QuoteJsonString<char, SeqAsciiString, true>(isolate,
|
| + str->ToAsciiVector());
|
| }
|
| }
|
|
|
|
|