Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Side by Side Diff: src/runtime.cc

Issue 385004: Remove sliced string string type... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/runtime.h ('k') | src/string.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. 1 // Copyright 2006-2009 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 1625 matching lines...) Expand 10 before | Expand all | Expand 10 after
1636 subject_length); 1636 subject_length);
1637 } else { 1637 } else {
1638 ASSERT(replacement->IsTwoByteRepresentation()); 1638 ASSERT(replacement->IsTwoByteRepresentation());
1639 AssertNoAllocation no_alloc; 1639 AssertNoAllocation no_alloc;
1640 1640
1641 ParseReplacementPattern(&parts_, 1641 ParseReplacementPattern(&parts_,
1642 replacement->ToUC16Vector(), 1642 replacement->ToUC16Vector(),
1643 capture_count, 1643 capture_count,
1644 subject_length); 1644 subject_length);
1645 } 1645 }
1646 // Find substrings of replacement string and create them as String objects.. 1646 // Find substrings of replacement string and create them as String objects.
1647 int substring_index = 0; 1647 int substring_index = 0;
1648 for (int i = 0, n = parts_.length(); i < n; i++) { 1648 for (int i = 0, n = parts_.length(); i < n; i++) {
1649 int tag = parts_[i].tag; 1649 int tag = parts_[i].tag;
1650 if (tag <= 0) { // A replacement string slice. 1650 if (tag <= 0) { // A replacement string slice.
1651 int from = -tag; 1651 int from = -tag;
1652 int to = parts_[i].data; 1652 int to = parts_[i].data;
1653 replacement_substrings_.Add(Factory::NewStringSlice(replacement, 1653 replacement_substrings_.Add(Factory::NewSubString(replacement, from, to));
1654 from,
1655 to));
1656 parts_[i].tag = REPLACEMENT_SUBSTRING; 1654 parts_[i].tag = REPLACEMENT_SUBSTRING;
1657 parts_[i].data = substring_index; 1655 parts_[i].data = substring_index;
1658 substring_index++; 1656 substring_index++;
1659 } else if (tag == REPLACEMENT_STRING) { 1657 } else if (tag == REPLACEMENT_STRING) {
1660 replacement_substrings_.Add(replacement); 1658 replacement_substrings_.Add(replacement);
1661 parts_[i].data = substring_index; 1659 parts_[i].data = substring_index;
1662 substring_index++; 1660 substring_index++;
1663 } 1661 }
1664 } 1662 }
1665 } 1663 }
(...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after
2344 for (int i = 0; i < end; i++) { 2342 for (int i = 0; i < end; i++) {
2345 uint16_t char1 = buf1.GetNext(); 2343 uint16_t char1 = buf1.GetNext();
2346 uint16_t char2 = buf2.GetNext(); 2344 uint16_t char2 = buf2.GetNext();
2347 if (char1 != char2) return Smi::FromInt(char1 - char2); 2345 if (char1 != char2) return Smi::FromInt(char1 - char2);
2348 } 2346 }
2349 2347
2350 return Smi::FromInt(str1_length - str2_length); 2348 return Smi::FromInt(str1_length - str2_length);
2351 } 2349 }
2352 2350
2353 2351
2354 static Object* Runtime_StringSlice(Arguments args) { 2352 static Object* Runtime_SubString(Arguments args) {
2355 NoHandleAllocation ha; 2353 NoHandleAllocation ha;
2356 ASSERT(args.length() == 3); 2354 ASSERT(args.length() == 3);
2357 2355
2358 CONVERT_CHECKED(String, value, args[0]); 2356 CONVERT_CHECKED(String, value, args[0]);
2359 CONVERT_DOUBLE_CHECKED(from_number, args[1]); 2357 CONVERT_DOUBLE_CHECKED(from_number, args[1]);
2360 CONVERT_DOUBLE_CHECKED(to_number, args[2]); 2358 CONVERT_DOUBLE_CHECKED(to_number, args[2]);
2361 2359
2362 int start = FastD2I(from_number); 2360 int start = FastD2I(from_number);
2363 int end = FastD2I(to_number); 2361 int end = FastD2I(to_number);
2364 2362
2365 RUNTIME_ASSERT(end >= start); 2363 RUNTIME_ASSERT(end >= start);
2366 RUNTIME_ASSERT(start >= 0); 2364 RUNTIME_ASSERT(start >= 0);
2367 RUNTIME_ASSERT(end <= value->length()); 2365 RUNTIME_ASSERT(end <= value->length());
2368 return value->Slice(start, end); 2366 return value->SubString(start, end);
2369 } 2367 }
2370 2368
2371 2369
2372 static Object* Runtime_StringMatch(Arguments args) { 2370 static Object* Runtime_StringMatch(Arguments args) {
2373 ASSERT_EQ(3, args.length()); 2371 ASSERT_EQ(3, args.length());
2374 2372
2375 CONVERT_ARG_CHECKED(String, subject, 0); 2373 CONVERT_ARG_CHECKED(String, subject, 0);
2376 CONVERT_ARG_CHECKED(JSRegExp, regexp, 1); 2374 CONVERT_ARG_CHECKED(JSRegExp, regexp, 1);
2377 CONVERT_ARG_CHECKED(JSArray, regexp_info, 2); 2375 CONVERT_ARG_CHECKED(JSArray, regexp_info, 2);
2378 HandleScope handles; 2376 HandleScope handles;
(...skipping 26 matching lines...) Expand all
2405 match = RegExpImpl::Exec(regexp, subject, index, regexp_info); 2403 match = RegExpImpl::Exec(regexp, subject, index, regexp_info);
2406 if (match.is_null()) { 2404 if (match.is_null()) {
2407 return Failure::Exception(); 2405 return Failure::Exception();
2408 } 2406 }
2409 } while (!match->IsNull()); 2407 } while (!match->IsNull());
2410 int matches = offsets.length() / 2; 2408 int matches = offsets.length() / 2;
2411 Handle<FixedArray> elements = Factory::NewFixedArray(matches); 2409 Handle<FixedArray> elements = Factory::NewFixedArray(matches);
2412 for (int i = 0; i < matches ; i++) { 2410 for (int i = 0; i < matches ; i++) {
2413 int from = offsets.at(i * 2); 2411 int from = offsets.at(i * 2);
2414 int to = offsets.at(i * 2 + 1); 2412 int to = offsets.at(i * 2 + 1);
2415 elements->set(i, *Factory::NewStringSlice(subject, from, to)); 2413 elements->set(i, *Factory::NewSubString(subject, from, to));
2416 } 2414 }
2417 Handle<JSArray> result = Factory::NewJSArrayWithElements(elements); 2415 Handle<JSArray> result = Factory::NewJSArrayWithElements(elements);
2418 result->set_length(Smi::FromInt(matches)); 2416 result->set_length(Smi::FromInt(matches));
2419 return *result; 2417 return *result;
2420 } 2418 }
2421 2419
2422 2420
2423 static Object* Runtime_NumberToRadixString(Arguments args) { 2421 static Object* Runtime_NumberToRadixString(Arguments args) {
2424 NoHandleAllocation ha; 2422 NoHandleAllocation ha;
2425 ASSERT(args.length() == 2); 2423 ASSERT(args.length() == 2);
(...skipping 1180 matching lines...) Expand 10 before | Expand all | Expand 10 after
3606 left++; 3604 left++;
3607 } 3605 }
3608 } 3606 }
3609 3607
3610 int right = length; 3608 int right = length;
3611 if (trimRight) { 3609 if (trimRight) {
3612 while (right > left && IsTrimWhiteSpace(s->Get(right - 1))) { 3610 while (right > left && IsTrimWhiteSpace(s->Get(right - 1))) {
3613 right--; 3611 right--;
3614 } 3612 }
3615 } 3613 }
3616 return s->Slice(left, right); 3614 return s->SubString(left, right);
3617 } 3615 }
3618 3616
3619 bool Runtime::IsUpperCaseChar(uint16_t ch) { 3617 bool Runtime::IsUpperCaseChar(uint16_t ch) {
3620 unibrow::uchar chars[unibrow::ToUppercase::kMaxWidth]; 3618 unibrow::uchar chars[unibrow::ToUppercase::kMaxWidth];
3621 int char_length = to_upper_mapping.get(ch, 0, chars); 3619 int char_length = to_upper_mapping.get(ch, 0, chars);
3622 return char_length == 0; 3620 return char_length == 0;
3623 } 3621 }
3624 3622
3625 3623
3626 static Object* Runtime_NumberToString(Arguments args) { 3624 static Object* Runtime_NumberToString(Arguments args) {
(...skipping 4259 matching lines...) Expand 10 before | Expand all | Expand 10 after
7886 } else { 7884 } else {
7887 // Handle last resort GC and make sure to allow future allocations 7885 // Handle last resort GC and make sure to allow future allocations
7888 // to grow the heap without causing GCs (if possible). 7886 // to grow the heap without causing GCs (if possible).
7889 Counters::gc_last_resort_from_js.Increment(); 7887 Counters::gc_last_resort_from_js.Increment();
7890 Heap::CollectAllGarbage(false); 7888 Heap::CollectAllGarbage(false);
7891 } 7889 }
7892 } 7890 }
7893 7891
7894 7892
7895 } } // namespace v8::internal 7893 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/runtime.h ('k') | src/string.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698