diff options
Diffstat (limited to 'js/src/new-regexp/regexp-bytecode-generator.h')
-rw-r--r-- | js/src/new-regexp/regexp-bytecode-generator.h | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/js/src/new-regexp/regexp-bytecode-generator.h b/js/src/new-regexp/regexp-bytecode-generator.h deleted file mode 100644 index 274fd3953d..0000000000 --- a/js/src/new-regexp/regexp-bytecode-generator.h +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2012 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef V8_REGEXP_REGEXP_BYTECODE_GENERATOR_H_ -#define V8_REGEXP_REGEXP_BYTECODE_GENERATOR_H_ - -#include "new-regexp/regexp-macro-assembler.h" - -namespace v8 { -namespace internal { - -// An assembler/generator for the Irregexp byte code. -class V8_EXPORT_PRIVATE RegExpBytecodeGenerator : public RegExpMacroAssembler { - public: - // Create an assembler. Instructions and relocation information are emitted - // into a buffer, with the instructions starting from the beginning and the - // relocation information starting from the end of the buffer. See CodeDesc - // for a detailed comment on the layout (globals.h). - // - // The assembler allocates and grows its own buffer, and buffer_size - // determines the initial buffer size. The buffer is owned by the assembler - // and deallocated upon destruction of the assembler. - RegExpBytecodeGenerator(Isolate* isolate, Zone* zone); - virtual ~RegExpBytecodeGenerator(); - // The byte-code interpreter checks on each push anyway. - virtual int stack_limit_slack() { return 1; } - virtual bool CanReadUnaligned() { return false; } - virtual void Bind(Label* label); - virtual void AdvanceCurrentPosition(int by); // Signed cp change. - virtual void PopCurrentPosition(); - virtual void PushCurrentPosition(); - virtual void Backtrack(); - virtual void GoTo(Label* label); - virtual void PushBacktrack(Label* label); - virtual bool Succeed(); - virtual void Fail(); - virtual void PopRegister(int register_index); - virtual void PushRegister(int register_index, - StackCheckFlag check_stack_limit); - virtual void AdvanceRegister(int reg, int by); // r[reg] += by. - virtual void SetCurrentPositionFromEnd(int by); - virtual void SetRegister(int register_index, int to); - virtual void WriteCurrentPositionToRegister(int reg, int cp_offset); - virtual void ClearRegisters(int reg_from, int reg_to); - virtual void ReadCurrentPositionFromRegister(int reg); - virtual void WriteStackPointerToRegister(int reg); - virtual void ReadStackPointerFromRegister(int reg); - virtual void LoadCurrentCharacterImpl(int cp_offset, Label* on_end_of_input, - bool check_bounds, int characters, - int eats_at_least); - virtual void CheckCharacter(unsigned c, Label* on_equal); - virtual void CheckCharacterAfterAnd(unsigned c, unsigned mask, - Label* on_equal); - virtual void CheckCharacterGT(uc16 limit, Label* on_greater); - virtual void CheckCharacterLT(uc16 limit, Label* on_less); - virtual void CheckGreedyLoop(Label* on_tos_equals_current_position); - virtual void CheckAtStart(int cp_offset, Label* on_at_start); - virtual void CheckNotAtStart(int cp_offset, Label* on_not_at_start); - virtual void CheckNotCharacter(unsigned c, Label* on_not_equal); - virtual void CheckNotCharacterAfterAnd(unsigned c, unsigned mask, - Label* on_not_equal); - virtual void CheckNotCharacterAfterMinusAnd(uc16 c, uc16 minus, uc16 mask, - Label* on_not_equal); - virtual void CheckCharacterInRange(uc16 from, uc16 to, Label* on_in_range); - virtual void CheckCharacterNotInRange(uc16 from, uc16 to, - Label* on_not_in_range); - virtual void CheckBitInTable(Handle<ByteArray> table, Label* on_bit_set); - virtual void CheckNotBackReference(int start_reg, bool read_backward, - Label* on_no_match); - virtual void CheckNotBackReferenceIgnoreCase(int start_reg, - bool read_backward, - Label* on_no_match); - virtual void IfRegisterLT(int register_index, int comparand, Label* if_lt); - virtual void IfRegisterGE(int register_index, int comparand, Label* if_ge); - virtual void IfRegisterEqPos(int register_index, Label* if_eq); - - virtual IrregexpImplementation Implementation(); - virtual Handle<HeapObject> GetCode(Handle<String> source); - - private: - void Expand(); - // Code and bitmap emission. - inline void EmitOrLink(Label* label); - inline void Emit32(uint32_t x); - inline void Emit16(uint32_t x); - inline void Emit8(uint32_t x); - inline void Emit(uint32_t bc, uint32_t arg); - // Bytecode buffer. - int length(); - void Copy(byte* a); - - // The buffer into which code and relocation info are generated. - Vector<byte> buffer_; - // The program counter. - int pc_; - Label backtrack_; - - int advance_current_start_; - int advance_current_offset_; - int advance_current_end_; - - // Stores jump edges emitted for the bytecode (used by - // RegExpBytecodePeepholeOptimization). - // Key: jump source (offset in buffer_ where jump destination is stored). - // Value: jump destination (offset in buffer_ to jump to). - ZoneUnorderedMap<int, int> jump_edges_; - - Isolate* isolate_; - - static const int kInvalidPC = -1; - - DISALLOW_IMPLICIT_CONSTRUCTORS(RegExpBytecodeGenerator); -}; - -} // namespace internal -} // namespace v8 - -#endif // V8_REGEXP_REGEXP_BYTECODE_GENERATOR_H_ |