Home | History | Annotate | Download | only in regexp

Lines Matching defs:assembler

18 #include "src/regexp/regexp-macro-assembler.h"
19 #include "src/regexp/regexp-macro-assembler-irregexp.h"
20 #include "src/regexp/regexp-macro-assembler-tracer.h"
35 #include "src/regexp/ia32/regexp-macro-assembler-ia32.h"
37 #include "src/regexp/x64/regexp-macro-assembler-x64.h"
39 #include "src/regexp/arm64/regexp-macro-assembler-arm64.h"
41 #include "src/regexp/arm/regexp-macro-assembler-arm.h"
43 #include "src/regexp/ppc/regexp-macro-assembler-ppc.h"
45 #include "src/regexp/s390/regexp-macro-assembler-s390.h"
47 #include "src/regexp/mips/regexp-macro-assembler-mips.h"
49 #include "src/regexp/mips64/regexp-macro-assembler-mips64.h"
51 #include "src/regexp/x87/regexp-macro-assembler-x87.h"
936 // regexp macro assembler).
997 RegExpEngine::CompilationResult Assemble(RegExpMacroAssembler* assembler,
1218 void Trace::RestoreAffectedRegisters(RegExpMacroAssembler* assembler,
1224 assembler->PopRegister(reg);
1230 assembler->ClearRegisters(reg, clear_to);
1236 void Trace::PerformDeferredActions(RegExpMacroAssembler* assembler,
1243 const int push_limit = (assembler->stack_limit_slack() + 1) / 2;
1347 assembler->PushRegister(reg, stack_check);
1355 assembler->WriteCurrentPositionToRegister(reg, store_position);
1357 assembler->ClearRegisters(reg, reg);
1359 assembler->SetRegister(reg, value);
1361 assembler->AdvanceRegister(reg, value);
1371 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1379 if (cp_offset_ != 0) assembler->AdvanceCurrentPosition(cp_offset_);
1393 assembler->PushCurrentPosition();
1400 PerformDeferredActions(assembler,
1407 assembler->AdvanceCurrentPosition(cp_offset_);
1412 assembler->PushBacktrack(&undo);
1418 assembler->GoTo(successor->label());
1422 assembler->Bind(&undo);
1423 RestoreAffectedRegisters(assembler,
1428 assembler->Backtrack();
1430 assembler->PopCurrentPosition();
1431 assembler->GoTo(backtrack());
1437 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1444 assembler->Bind(label());
1449 assembler->ReadCurrentPositionFromRegister(current_position_register_);
1450 assembler->ReadStackPointerFromRegister(stack_pointer_register_);
1455 assembler->ClearRegisters(clear_capture_start_, clear_capture_end);
1459 assembler->Backtrack();
1468 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1470 assembler->Bind(label());
1474 assembler->Succeed();
1477 assembler->GoTo(trace->backtrack());
1645 RegExpMacroAssembler* assembler = compiler->macro_assembler();
1648 assembler->LoadCurrentCharacter(
1654 assembler->CheckNotCharacter(c, on_failure);
2473 RegExpMacroAssembler* assembler = compiler->macro_assembler();
2481 assembler->LoadCurrentCharacter(trace->cp_offset(),
2517 assembler->CheckCharacterAfterAnd(value, mask, on_possible_success);
2519 assembler->CheckCharacter(value, on_possible_success);
2523 assembler->CheckNotCharacterAfterAnd(value, mask, trace->backtrack());
2525 assembler->CheckNotCharacter(value, trace->backtrack());
3000 static void EmitWordCheck(RegExpMacroAssembler* assembler,
3004 if (assembler->CheckSpecialCharacterClass(
3010 assembler->CheckCharacterGT('z', non_word);
3011 assembler->CheckCharacterLT('0', non_word);
3012 assembler->CheckCharacterGT('a' - 1, word);
3013 assembler->CheckCharacterLT('9' + 1, word);
3014 assembler->CheckCharacterLT('A', non_word);
3015 assembler->CheckCharacterLT('Z' + 1, word);
3017 assembler->CheckNotCharacter('_', non_word);
3019 assembler->CheckCharacter('_', word);
3029 RegExpMacroAssembler* assembler = compiler->macro_assembler();
3039 assembler->CheckAtStart(&ok);
3043 assembler->LoadCurrentCharacter(new_trace.cp_offset() -1,
3046 if (!assembler->CheckSpecialCharacterClass('n',
3050 assembler->CheckCharacterAfterAnd(0x2028, 0xfffe, &ok);
3052 assembler->CheckCharacter('\n', &ok);
3053 assembler->CheckNotCharacter('\r', new_trace.backtrack());
3055 assembler->Bind(&ok);
3062 RegExpMacroAssembler* assembler = compiler->macro_assembler();
3063 Isolate* isolate = assembler->isolate();
3091 assembler->LoadCurrentCharacter(trace->cp_offset(), &before_non_word);
3094 EmitWordCheck(assembler, &before_word, &before_non_word, false);
3096 assembler->Bind(&before_non_word);
3099 assembler->GoTo(&ok);
3101 assembler->Bind(&before_word);
3103 assembler->Bind(&ok);
3117 RegExpMacroAssembler* assembler = compiler->macro_assembler();
3133 assembler->CheckAtStart(non_word);
3137 assembler->LoadCurrentCharacter(new_trace.cp_offset() - 1, &dummy, false);
3138 EmitWordCheck(assembler, word, non_word, backtrack_if_previous == kIsNonWord);
3140 assembler->Bind(&fall_through);
3161 RegExpMacroAssembler* assembler = compiler->macro_assembler();
3165 assembler->CheckPosition(trace->cp_offset(), &ok);
3166 assembler->GoTo(trace->backtrack());
3167 assembler->Bind(&ok);
3172 assembler->GoTo(trace->backtrack());
3176 assembler->CheckNotAtStart(trace->cp_offset(), trace->backtrack());
3246 RegExpMacroAssembler* assembler = compiler->macro_assembler();
3247 Isolate* isolate = assembler->isolate();
3266 assembler->GoTo(backtrack);
3297 EmitCharClass(assembler, cc, one_byte, backtrack, cp_offset,
4279 RegExpMacroAssembler* assembler = compiler->macro_assembler();
4326 assembler->WriteCurrentPositionToRegister(
4328 assembler->WriteStackPointerToRegister(
4342 assembler->GoTo(trace->backtrack());
4355 assembler->IfRegisterLT(rep_reg, limit, &skip_empty_check);
4359 assembler->IfRegisterEqPos(data_.u_empty_match_check.start_register,
4361 assembler->Bind(&skip_empty_check);
4371 assembler->ReadCurrentPositionFromRegister(
4373 assembler->ReadStackPointerFromRegister(
4386 assembler->Bind(&clear_registers_backtrack);
4388 assembler->ClearRegisters(clear_registers_from, clear_registers_to);
4391 assembler->Backtrack();
4401 RegExpMacroAssembler* assembler = compiler->macro_assembler();
4415 assembler->CheckNotBackReferenceIgnoreCase(
4418 assembler->CheckNotBackReference(start_reg_, read_backward(),
4426 assembler->CheckNotInSurrogatePair(trace->cp_offset(), trace->backtrack());
6700 // Create the correct assembler for the architecture.
6747 // Inserted here, instead of in Assembler, because it depends on information