OLD | NEW |
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 7993 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8004 // ecx: RegExp data (FixedArray) | 8004 // ecx: RegExp data (FixedArray) |
8005 // edx: Number of capture registers | 8005 // edx: Number of capture registers |
8006 // Check that the fourth object is a JSArray object. | 8006 // Check that the fourth object is a JSArray object. |
8007 __ mov(eax, Operand(esp, 1 * kPointerSize)); | 8007 __ mov(eax, Operand(esp, 1 * kPointerSize)); |
8008 __ test(eax, Immediate(kSmiTagMask)); | 8008 __ test(eax, Immediate(kSmiTagMask)); |
8009 __ j(zero, &runtime); | 8009 __ j(zero, &runtime); |
8010 __ CmpObjectType(eax, JS_ARRAY_TYPE, ebx); | 8010 __ CmpObjectType(eax, JS_ARRAY_TYPE, ebx); |
8011 __ j(not_equal, &runtime); | 8011 __ j(not_equal, &runtime); |
8012 // Check that the JSArray is in fast case. | 8012 // Check that the JSArray is in fast case. |
8013 __ mov(ebx, FieldOperand(eax, JSArray::kElementsOffset)); | 8013 __ mov(ebx, FieldOperand(eax, JSArray::kElementsOffset)); |
| 8014 __ mov(eax, FieldOperand(ebx, HeapObject::kMapOffset)); |
8014 __ cmp(eax, Factory::fixed_array_map()); | 8015 __ cmp(eax, Factory::fixed_array_map()); |
8015 __ j(not_equal, &runtime); | 8016 __ j(not_equal, &runtime); |
8016 // Check that the last match info has space for the capture registers and the | 8017 // Check that the last match info has space for the capture registers and the |
8017 // additional information. | 8018 // additional information. |
8018 __ mov(eax, FieldOperand(ebx, FixedArray::kLengthOffset)); | 8019 __ mov(eax, FieldOperand(ebx, FixedArray::kLengthOffset)); |
8019 __ add(Operand(edx), Immediate(RegExpImpl::kLastMatchOverhead)); | 8020 __ add(Operand(edx), Immediate(RegExpImpl::kLastMatchOverhead)); |
8020 __ cmp(edx, Operand(eax)); | 8021 __ cmp(edx, Operand(eax)); |
8021 __ j(greater, &runtime); | 8022 __ j(greater, &runtime); |
8022 | 8023 |
8023 // ecx: RegExp data (FixedArray) | 8024 // ecx: RegExp data (FixedArray) |
(...skipping 1165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9189 __ add(Operand(dest), Immediate(2)); | 9190 __ add(Operand(dest), Immediate(2)); |
9190 } | 9191 } |
9191 __ sub(Operand(count), Immediate(1)); | 9192 __ sub(Operand(count), Immediate(1)); |
9192 __ j(not_zero, &loop); | 9193 __ j(not_zero, &loop); |
9193 } | 9194 } |
9194 | 9195 |
9195 | 9196 |
9196 #undef __ | 9197 #undef __ |
9197 | 9198 |
9198 } } // namespace v8::internal | 9199 } } // namespace v8::internal |
OLD | NEW |