Chromium Code Reviews| Index: src/runtime.cc | 
| diff --git a/src/runtime.cc b/src/runtime.cc | 
| index dc0e9c86065d3631f864371a08927d17ca377ac3..9166b6785beb61c389f222dd1352628bae0f553b 100644 | 
| --- a/src/runtime.cc | 
| +++ b/src/runtime.cc | 
| @@ -1228,6 +1228,36 @@ static Object* Runtime_RegExpExec(Arguments args) { | 
| } | 
| +static Object* Runtime_RegExpConstructResult(Arguments args) { | 
| + ASSERT(args.length() == 3); | 
| + CONVERT_SMI_CHECKED(elements_count, args[0]); | 
| + if (elements_count > JSArray::kMaxFastElementsLength) { | 
| + return Top::ThrowIllegalOperation(); | 
| + } | 
| + Object* new_object = Heap::AllocateFixedArrayWithHoles(elements_count); | 
| + if (new_object->IsFailure()) return new_object; | 
| + FixedArray* elements = FixedArray::cast(new_object); | 
| + new_object = Heap::AllocateRaw(JSArray::kRegExpResultSize, | 
| + NEW_SPACE, | 
| + OLD_POINTER_SPACE); | 
| + if (new_object->IsFailure()) return new_object; | 
| + { | 
| + AssertNoAllocation no_gc; | 
| + HandleScope scope; | 
| + reinterpret_cast<HeapObject*>(new_object)-> | 
| + set_map(Top::global_context()->regexp_result_map()); | 
| + } | 
| + JSArray* array = JSArray::cast(new_object); | 
| + array->set_properties(Heap::empty_fixed_array()); | 
| + array->set_elements(elements); | 
| + array->set_length(Smi::FromInt(elements_count)); | 
| + // Write in-object properties after the length of the array. | 
| 
 
Søren Thygesen Gjesse
2010/04/13 07:22:29
Move the constants to JSRegExpResult (see comment
 
Lasse Reichstein
2010/04/13 09:50:56
Done.
 
 | 
| + array->InObjectPropertyAtPut(JSArray::kIndexIndex, args[1]); | 
| + array->InObjectPropertyAtPut(JSArray::kInputIndex, args[2]); | 
| + return array; | 
| +} | 
| + | 
| + | 
| static Object* Runtime_RegExpInitializeObject(Arguments args) { | 
| AssertNoAllocation no_alloc; | 
| ASSERT(args.length() == 5); |