Home | History | Annotate | Download | only in src

Lines Matching full: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"
789 RegExpEngine::CompilationResult Assemble(RegExpMacroAssembler* assembler,
966 void Trace::RestoreAffectedRegisters(RegExpMacroAssembler* assembler,
971 if (registers_to_pop.Get(reg)) assembler->PopRegister(reg);
977 assembler->ClearRegisters(reg, clear_to);
983 void Trace::PerformDeferredActions(RegExpMacroAssembler* assembler,
989 const int push_limit = (assembler->stack_limit_slack() + 1) / 2;
1092 assembler->PushRegister(reg, stack_check);
1100 assembler->WriteCurrentPositionToRegister(reg, store_position);
1102 assembler->ClearRegisters(reg, reg);
1104 assembler->SetRegister(reg, value);
1106 assembler->AdvanceRegister(reg, value);
1116 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1124 if (cp_offset_ != 0) assembler->AdvanceCurrentPosition(cp_offset_);
1138 assembler->PushCurrentPosition();
1144 PerformDeferredActions(assembler,
1150 assembler->AdvanceCurrentPosition(cp_offset_);
1155 assembler->PushBacktrack(&undo);
1160 assembler->Bind(&undo);
1161 RestoreAffectedRegisters(assembler,
1166 assembler->Backtrack();
1168 assembler->PopCurrentPosition();
1169 assembler->GoTo(backtrack());
1175 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1182 assembler->Bind(label());
1187 assembler->ReadCurrentPositionFromRegister(current_position_register_);
1188 assembler->ReadStackPointerFromRegister(stack_pointer_register_);
1193 assembler->ClearRegisters(clear_capture_start_, clear_capture_end);
1197 assembler->Backtrack();
1206 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1208 assembler->Bind(label());
1212 assembler->Succeed();
1215 assembler->GoTo(trace->backtrack());
1371 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1374 assembler->LoadCurrentCharacter(
1380 assembler->CheckNotCharacter(c, on_failure);
1853 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1856 assembler->LoadCurrentCharacter(trace->cp_offset(),
1890 assembler->CheckCharacterAfterAnd(value, mask, on_possible_success);
1892 assembler->CheckCharacter(value, on_possible_success);
1896 assembler->CheckNotCharacterAfterAnd(value, mask, trace->backtrack());
1898 assembler->CheckNotCharacter(value, trace->backtrack());
2177 static void EmitWordCheck(RegExpMacroAssembler* assembler,
2181 if (assembler->CheckSpecialCharacterClass(
2187 assembler->CheckCharacterGT('z', non_word);
2188 assembler->CheckCharacterLT('0', non_word);
2189 assembler->CheckCharacterGT('a' - 1, word);
2190 assembler->CheckCharacterLT('9' + 1, word);
2191 assembler->CheckCharacterLT('A', non_word);
2192 assembler->CheckCharacterLT('Z' + 1, word);
2194 assembler->CheckNotCharacter('_', non_word);
2196 assembler->CheckCharacter('_', word);
2206 RegExpMacroAssembler* assembler = compiler->macro_assembler();
2216 assembler->CheckAtStart(&ok);
2220 assembler->LoadCurrentCharacter(new_trace.cp_offset() -1,
2223 if (!assembler->CheckSpecialCharacterClass('n',
2227 assembler->CheckCharacterAfterAnd(0x2028, 0xfffe, &ok);
2229 assembler->CheckCharacter('\n', &ok);
2230 assembler->CheckNotCharacter('\r', new_trace.backtrack());
2232 assembler->Bind(&ok);
2243 RegExpMacroAssembler* assembler = compiler->macro_assembler();
2256 assembler->GoTo(on_non_word);
2261 assembler->CheckAtStart(on_non_word);
2265 assembler->LoadCurrentCharacter(prev_char_offset, NULL, false, 1);
2266 EmitWordCheck(assembler, on_word, on_non_word, expect_word_character);
2271 assembler->Bind(&done);
2282 RegExpMacroAssembler* assembler = compiler->macro_assembler();
2286 assembler->LoadCurrentCharacter(trace->cp_offset(), &before_non_word);
2289 EmitWordCheck(assembler, &before_word, &before_non_word, false);
2308 assembler->Bind(&before_non_word);
2312 assembler->CheckAtStart(not_boundary);
2316 assembler->LoadCurrentCharacter(new_trace.cp_offset() - 1,
2320 EmitWordCheck(assembler, boundary, not_boundary, false);
2321 assembler->GoTo(not_boundary);
2324 assembler->Bind(&before_word);
2328 assembler->CheckAtStart(boundary);
2332 assembler->LoadCurrentCharacter(new_trace.cp_offset() - 1,
2336 EmitWordCheck(assembler, not_boundary, boundary, fall_through_on_word);
2338 assembler->Bind(&ok);
2360 RegExpMacroAssembler* assembler = compiler->macro_assembler();
2364 assembler->CheckPosition(trace->cp_offset(), &ok);
2365 assembler->GoTo(trace->backtrack());
2366 assembler->Bind(&ok);
2371 assembler->GoTo(trace->backtrack());
2375 assembler->CheckNotAtStart(trace->backtrack());
2450 RegExpMacroAssembler* assembler = compiler->macro_assembler();
2468 assembler->GoTo(backtrack);
2501 EmitCharClass(assembler,
3075 RegExpMacroAssembler* assembler = compiler->macro_assembler();
3122 assembler->WriteCurrentPositionToRegister(
3124 assembler->WriteStackPointerToRegister(
3138 assembler->GoTo(trace->backtrack());
3151 assembler->IfRegisterLT(rep_reg, limit, &skip_empty_check);
3155 assembler->IfRegisterEqPos(data_.u_empty_match_check.start_register,
3157 assembler->Bind(&skip_empty_check);
3167 assembler->ReadCurrentPositionFromRegister(
3169 assembler->ReadStackPointerFromRegister(
3182 assembler->Bind(&clear_registers_backtrack);
3184 assembler->ClearRegisters(clear_registers_from, clear_registers_to);
3187 assembler->Backtrack();
3197 RegExpMacroAssembler* assembler = compiler->macro_assembler();
3211 assembler->CheckNotBackReferenceIgnoreCase(start_reg_,
3214 assembler->CheckNotBackReference(start_reg_, trace->backtrack());
5345 // Create the correct assembler for the architecture.
5369 // Inserted here, instead of in Assembler, because it depends on information