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 12427: Merge regexp2000 back into bleeding_edge (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 12 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
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 281
282 static Object* Runtime_IsConstructCall(Arguments args) { 282 static Object* Runtime_IsConstructCall(Arguments args) {
283 NoHandleAllocation ha; 283 NoHandleAllocation ha;
284 ASSERT(args.length() == 0); 284 ASSERT(args.length() == 0);
285 JavaScriptFrameIterator it; 285 JavaScriptFrameIterator it;
286 return Heap::ToBoolean(it.frame()->IsConstructor()); 286 return Heap::ToBoolean(it.frame()->IsConstructor());
287 } 287 }
288 288
289 289
290 static Object* Runtime_RegExpCompile(Arguments args) { 290 static Object* Runtime_RegExpCompile(Arguments args) {
291 HandleScope scope; // create a new handle scope 291 HandleScope scope;
292 ASSERT(args.length() == 3); 292 ASSERT(args.length() == 3);
293 CONVERT_CHECKED(JSRegExp, raw_re, args[0]); 293 CONVERT_CHECKED(JSRegExp, raw_re, args[0]);
294 Handle<JSRegExp> re(raw_re); 294 Handle<JSRegExp> re(raw_re);
295 CONVERT_CHECKED(String, raw_pattern, args[1]); 295 CONVERT_CHECKED(String, raw_pattern, args[1]);
296 Handle<String> pattern(raw_pattern); 296 Handle<String> pattern(raw_pattern);
297 CONVERT_CHECKED(String, raw_flags, args[2]); 297 CONVERT_CHECKED(String, raw_flags, args[2]);
298 Handle<String> flags(raw_flags); 298 Handle<String> flags(raw_flags);
299 Handle<Object> result = RegExpImpl::Compile(re, pattern, flags); 299 Handle<Object> result = RegExpImpl::Compile(re, pattern, flags);
300 if (result.is_null()) return Failure::Exception(); 300 if (result.is_null()) return Failure::Exception();
301 return *result; 301 return *result;
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 779
780 static Object* Runtime_RegExpExec(Arguments args) { 780 static Object* Runtime_RegExpExec(Arguments args) {
781 HandleScope scope; 781 HandleScope scope;
782 ASSERT(args.length() == 3); 782 ASSERT(args.length() == 3);
783 CONVERT_CHECKED(JSRegExp, raw_regexp, args[0]); 783 CONVERT_CHECKED(JSRegExp, raw_regexp, args[0]);
784 Handle<JSRegExp> regexp(raw_regexp); 784 Handle<JSRegExp> regexp(raw_regexp);
785 CONVERT_CHECKED(String, raw_subject, args[1]); 785 CONVERT_CHECKED(String, raw_subject, args[1]);
786 Handle<String> subject(raw_subject); 786 Handle<String> subject(raw_subject);
787 Handle<Object> index(args[2]); 787 Handle<Object> index(args[2]);
788 ASSERT(index->IsNumber()); 788 ASSERT(index->IsNumber());
789 return *RegExpImpl::Exec(regexp, subject, index); 789 Handle<Object> result = RegExpImpl::Exec(regexp, subject, index);
790 if (result.is_null()) return Failure::Exception();
791 return *result;
790 } 792 }
791 793
792 794
793 static Object* Runtime_RegExpExecGlobal(Arguments args) { 795 static Object* Runtime_RegExpExecGlobal(Arguments args) {
794 HandleScope scope; 796 HandleScope scope;
795 ASSERT(args.length() == 2); 797 ASSERT(args.length() == 2);
796 CONVERT_CHECKED(JSRegExp, raw_regexp, args[0]); 798 CONVERT_CHECKED(JSRegExp, raw_regexp, args[0]);
797 Handle<JSRegExp> regexp(raw_regexp); 799 Handle<JSRegExp> regexp(raw_regexp);
798 CONVERT_CHECKED(String, raw_subject, args[1]); 800 CONVERT_CHECKED(String, raw_subject, args[1]);
799 Handle<String> subject(raw_subject); 801 Handle<String> subject(raw_subject);
800 return *RegExpImpl::ExecGlobal(regexp, subject); 802 Handle<Object> result = RegExpImpl::ExecGlobal(regexp, subject);
803 if (result.is_null()) return Failure::Exception();
804 return *result;
801 } 805 }
802 806
803 807
804 static Object* Runtime_MaterializeRegExpLiteral(Arguments args) { 808 static Object* Runtime_MaterializeRegExpLiteral(Arguments args) {
805 HandleScope scope; 809 HandleScope scope;
806 ASSERT(args.length() == 4); 810 ASSERT(args.length() == 4);
807 CONVERT_ARG_CHECKED(FixedArray, literals, 0); 811 CONVERT_ARG_CHECKED(FixedArray, literals, 0);
808 int index = Smi::cast(args[1])->value(); 812 int index = Smi::cast(args[1])->value();
809 Handle<String> pattern = args.at<String>(2); 813 Handle<String> pattern = args.at<String>(2);
810 Handle<String> flags = args.at<String>(3); 814 Handle<String> flags = args.at<String>(3);
(...skipping 1626 matching lines...) Expand 10 before | Expand all | Expand 10 after
2437 : Heap::AllocateRawTwoByteString(length); 2441 : Heap::AllocateRawTwoByteString(length);
2438 if (o->IsFailure()) return o; 2442 if (o->IsFailure()) return o;
2439 String* result = String::cast(o); 2443 String* result = String::cast(o);
2440 StringShape result_shape(result); 2444 StringShape result_shape(result);
2441 bool has_changed_character = false; 2445 bool has_changed_character = false;
2442 2446
2443 // Convert all characters to upper case, assuming that they will fit 2447 // Convert all characters to upper case, assuming that they will fit
2444 // in the buffer 2448 // in the buffer
2445 Access<StringInputBuffer> buffer(&string_input_buffer); 2449 Access<StringInputBuffer> buffer(&string_input_buffer);
2446 buffer->Reset(s); 2450 buffer->Reset(s);
2447 unibrow::uchar chars[unibrow::kMaxCaseConvertedSize]; 2451 unibrow::uchar chars[Converter::kMaxWidth];
2448 int i = 0; 2452 int i = 0;
2449 // We can assume that the string is not empty 2453 // We can assume that the string is not empty
2450 uc32 current = buffer->GetNext(); 2454 uc32 current = buffer->GetNext();
2451 while (i < length) { 2455 while (i < length) {
2452 bool has_next = buffer->has_more(); 2456 bool has_next = buffer->has_more();
2453 uc32 next = has_next ? buffer->GetNext() : 0; 2457 uc32 next = has_next ? buffer->GetNext() : 0;
2454 int char_length = mapping->get(current, next, chars); 2458 int char_length = mapping->get(current, next, chars);
2455 if (char_length == 0) { 2459 if (char_length == 0) {
2456 // The case conversion of this character is the character itself. 2460 // The case conversion of this character is the character itself.
2457 result->Set(result_shape, i, current); 2461 result->Set(result_shape, i, current);
(...skipping 3414 matching lines...) Expand 10 before | Expand all | Expand 10 after
5872 } else { 5876 } else {
5873 // Handle last resort GC and make sure to allow future allocations 5877 // Handle last resort GC and make sure to allow future allocations
5874 // to grow the heap without causing GCs (if possible). 5878 // to grow the heap without causing GCs (if possible).
5875 Counters::gc_last_resort_from_js.Increment(); 5879 Counters::gc_last_resort_from_js.Increment();
5876 Heap::CollectAllGarbage(); 5880 Heap::CollectAllGarbage();
5877 } 5881 }
5878 } 5882 }
5879 5883
5880 5884
5881 } } // namespace v8::internal 5885 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698