Home | History | Annotate | Download | only in src

Lines Matching defs:assembler

41 #include "regexp-macro-assembler.h"
42 #include "regexp-macro-assembler-tracer.h"
43 #include "regexp-macro-assembler-irregexp.h"
48 #include "ia32/regexp-macro-assembler-ia32.h"
50 #include "x64/regexp-macro-assembler-x64.h"
52 #include "arm/regexp-macro-assembler-arm.h"
54 #include "mips/regexp-macro-assembler-mips.h"
799 RegExpEngine::CompilationResult Assemble(RegExpMacroAssembler* assembler,
984 void Trace::RestoreAffectedRegisters(RegExpMacroAssembler* assembler,
989 if (registers_to_pop.Get(reg)) assembler->PopRegister(reg);
995 assembler->ClearRegisters(reg, clear_to);
1001 void Trace::PerformDeferredActions(RegExpMacroAssembler* assembler,
1007 const int push_limit = (assembler->stack_limit_slack() + 1) / 2;
1110 assembler->PushRegister(reg, stack_check);
1118 assembler->WriteCurrentPositionToRegister(reg, store_position);
1120 assembler->ClearRegisters(reg, reg);
1122 assembler->SetRegister(reg, value);
1124 assembler->AdvanceRegister(reg, value);
1134 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1142 if (cp_offset_ != 0) assembler->AdvanceCurrentPosition(cp_offset_);
1156 assembler->PushCurrentPosition();
1162 PerformDeferredActions(assembler,
1168 assembler->AdvanceCurrentPosition(cp_offset_);
1173 assembler->PushBacktrack(&undo);
1178 assembler->Bind(&undo);
1179 RestoreAffectedRegisters(assembler,
1184 assembler->Backtrack();
1186 assembler->PopCurrentPosition();
1187 assembler->GoTo(backtrack());
1193 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1200 assembler->Bind(label());
1205 assembler->ReadCurrentPositionFromRegister(current_position_register_);
1206 assembler->ReadStackPointerFromRegister(stack_pointer_register_);
1211 assembler->ClearRegisters(clear_capture_start_, clear_capture_end);
1215 assembler->Backtrack();
1224 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1226 assembler->Bind(label());
1230 assembler->Succeed();
1233 assembler->GoTo(trace->backtrack());
1389 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1392 assembler->LoadCurrentCharacter(
1398 assembler->CheckNotCharacter(c, on_failure);
1871 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1874 assembler->LoadCurrentCharacter(trace->cp_offset(),
1908 assembler->CheckCharacterAfterAnd(value, mask, on_possible_success);
1910 assembler->CheckCharacter(value, on_possible_success);
1914 assembler->CheckNotCharacterAfterAnd(value, mask, trace->backtrack());
1916 assembler->CheckNotCharacter(value, trace->backtrack());
2192 static void EmitWordCheck(RegExpMacroAssembler* assembler,
2196 if (assembler->CheckSpecialCharacterClass(
2202 assembler->CheckCharacterGT('z', non_word);
2203 assembler->CheckCharacterLT('0', non_word);
2204 assembler->CheckCharacterGT('a' - 1, word);
2205 assembler->CheckCharacterLT('9' + 1, word);
2206 assembler->CheckCharacterLT('A', non_word);
2207 assembler->CheckCharacterLT('Z' + 1, word);
2209 assembler->CheckNotCharacter('_', non_word);
2211 assembler->CheckCharacter('_', word);
2221 RegExpMacroAssembler* assembler = compiler->macro_assembler();
2231 assembler->CheckAtStart(&ok);
2235 assembler->LoadCurrentCharacter(new_trace.cp_offset() -1,
2238 if (!assembler->CheckSpecialCharacterClass('n',
2242 assembler->CheckCharacterAfterAnd(0x2028, 0xfffe, &ok);
2244 assembler
2245 assembler->CheckNotCharacter('\r', new_trace.backtrack());
2247 assembler->Bind(&ok);
2258 RegExpMacroAssembler* assembler = compiler->macro_assembler();
2271 assembler->GoTo(on_non_word);
2276 assembler->CheckAtStart(on_non_word);
2280 assembler->LoadCurrentCharacter(prev_char_offset, NULL, false, 1);
2281 EmitWordCheck(assembler, on_word, on_non_word, expect_word_character);
2286 assembler->Bind(&done);
2297 RegExpMacroAssembler* assembler = compiler->macro_assembler();
2301 assembler->LoadCurrentCharacter(trace->cp_offset(), &before_non_word);
2304 EmitWordCheck(assembler, &before_word, &before_non_word, false);
2323 assembler->Bind(&before_non_word);
2327 assembler->CheckAtStart(not_boundary);
2331 assembler->LoadCurrentCharacter(new_trace.cp_offset() - 1,
2335 EmitWordCheck(assembler, boundary, not_boundary, false);
2336 assembler->GoTo(not_boundary);
2339 assembler->Bind(&before_word);
2343 assembler->CheckAtStart(boundary);
2347 assembler->LoadCurrentCharacter(new_trace.cp_offset() - 1,
2351 EmitWordCheck(assembler, not_boundary, boundary, fall_through_on_word);
2353 assembler->Bind(&ok);
2375 RegExpMacroAssembler* assembler = compiler->macro_assembler();
2379 assembler->CheckPosition(trace->cp_offset(), &ok);
2380 assembler->GoTo(trace->backtrack());
2381 assembler->Bind(&ok);
2386 assembler->GoTo(trace->backtrack());
2390 assembler->CheckNotAtStart(trace->backtrack());
2465 RegExpMacroAssembler* assembler = compiler->macro_assembler();
2483 assembler->GoTo(backtrack);
2516 EmitCharClass(assembler,
3093 RegExpMacroAssembler* assembler = compiler->macro_assembler();
3140 assembler->WriteCurrentPositionToRegister(
3142 assembler->WriteStackPointerToRegister(
3156 assembler->GoTo(trace->backtrack());
3169 assembler->IfRegisterLT(rep_reg, limit, &skip_empty_check);
3173 assembler->IfRegisterEqPos(data_.u_empty_match_check.start_register,
3175 assembler->Bind(&skip_empty_check);
3185 assembler->ReadCurrentPositionFromRegister(
3187 assembler->ReadStackPointerFromRegister(
3200 assembler->Bind(&clear_registers_backtrack);
3202 assembler->ClearRegisters(clear_registers_from, clear_registers_to);
3205 assembler->Backtrack();
3215 RegExpMacroAssembler* assembler = compiler->macro_assembler();
3229 assembler->CheckNotBackReferenceIgnoreCase(start_reg_,
3232 assembler->CheckNotBackReference(start_reg_, trace->backtrack());
5303 // Create the correct assembler for the architecture.
5327 // Inserted here, instead of in Assembler, because it depends on information