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

Side by Side Diff: src/regexp-macro-assembler-ia32.cc

Issue 12406: Case independent back references. (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/regexp2000/
Patch Set: Created 12 years 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 2008 the V8 project authors. All rights reserved. 1 // Copyright 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 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 } 206 }
207 207
208 208
209 void RegExpMacroAssemblerIA32::CheckCurrentPosition(int register_index, 209 void RegExpMacroAssemblerIA32::CheckCurrentPosition(int register_index,
210 Label* on_equal) { 210 Label* on_equal) {
211 __ cmp(edi, register_location(register_index)); 211 __ cmp(edi, register_location(register_index));
212 BranchOrBacktrack(equal, on_equal); 212 BranchOrBacktrack(equal, on_equal);
213 } 213 }
214 214
215 215
216 void RegExpMacroAssemblerIA32::CheckNotBackReferenceCaseIndependent(
217 int start_reg, Label* on_no_match) {
218 UNIMPLEMENTED();
219 }
220
221
216 void RegExpMacroAssemblerIA32::CheckNotBackReference( 222 void RegExpMacroAssemblerIA32::CheckNotBackReference(
217 int start_reg, Label* on_no_match) { 223 int start_reg, Label* on_no_match) {
218 if (ignore_case_) {
219 UNIMPLEMENTED();
220 }
221 Label fallthrough; 224 Label fallthrough;
222 __ mov(eax, register_location(start_reg)); 225 __ mov(eax, register_location(start_reg));
223 __ mov(ecx, register_location(start_reg + 1)); 226 __ mov(ecx, register_location(start_reg + 1));
224 __ sub(ecx, Operand(eax)); // Length to check. 227 __ sub(ecx, Operand(eax)); // Length to check.
225 __ j(equal, &fallthrough); // Covers the case where it's not bound (-1,-1). 228 __ j(equal, &fallthrough); // Covers the case where it's not bound (-1,-1).
226 __ mov(ebx, Operand(edi)); 229 __ mov(ebx, Operand(edi));
227 __ push(esi); 230 __ push(esi);
228 __ add(edi, Operand(esi)); 231 __ add(edi, Operand(esi));
229 __ add(esi, Operand(eax)); 232 __ add(esi, Operand(eax));
230 if (mode_ == ASCII) { 233 if (mode_ == ASCII) {
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 599
597 600
598 void RegExpMacroAssemblerIA32::LoadConstantBufferAddress(Register reg, 601 void RegExpMacroAssemblerIA32::LoadConstantBufferAddress(Register reg,
599 ArraySlice* buffer) { 602 ArraySlice* buffer) {
600 __ mov(reg, buffer->array()); 603 __ mov(reg, buffer->array());
601 __ add(Operand(reg), Immediate(buffer->base_offset())); 604 __ add(Operand(reg), Immediate(buffer->base_offset()));
602 } 605 }
603 606
604 #undef __ 607 #undef __
605 }} 608 }}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698