Line data Source code
1 : // Copyright 2008-2009 the V8 project authors. All rights reserved.
2 : // Use of this source code is governed by a BSD-style license that can be
3 : // found in the LICENSE file.
4 :
5 : #ifndef V8_REGEXP_REGEXP_MACRO_ASSEMBLER_IRREGEXP_INL_H_
6 : #define V8_REGEXP_REGEXP_MACRO_ASSEMBLER_IRREGEXP_INL_H_
7 :
8 : #include "src/regexp/regexp-macro-assembler-irregexp.h"
9 :
10 : #include "src/ast/ast.h"
11 : #include "src/regexp/bytecodes-irregexp.h"
12 :
13 : namespace v8 {
14 : namespace internal {
15 :
16 599522 : void RegExpMacroAssemblerIrregexp::Emit(uint32_t byte,
17 : uint32_t twenty_four_bits) {
18 599522 : uint32_t word = ((twenty_four_bits << BYTECODE_SHIFT) | byte);
19 : DCHECK(pc_ <= buffer_.length());
20 1993586 : if (pc_ + 3 >= buffer_.length()) {
21 209 : Expand();
22 : }
23 996793 : *reinterpret_cast<uint32_t*>(buffer_.start() + pc_) = word;
24 996793 : pc_ += 4;
25 599522 : }
26 :
27 :
28 21562 : void RegExpMacroAssemblerIrregexp::Emit16(uint32_t word) {
29 : DCHECK(pc_ <= buffer_.length());
30 43124 : if (pc_ + 1 >= buffer_.length()) {
31 10 : Expand();
32 : }
33 21562 : *reinterpret_cast<uint16_t*>(buffer_.start() + pc_) = word;
34 21562 : pc_ += 2;
35 21562 : }
36 :
37 :
38 : void RegExpMacroAssemblerIrregexp::Emit8(uint32_t word) {
39 : DCHECK(pc_ <= buffer_.length());
40 50080 : if (pc_ == buffer_.length()) {
41 5 : Expand();
42 : }
43 25040 : *reinterpret_cast<unsigned char*>(buffer_.start() + pc_) = word;
44 25040 : pc_ += 1;
45 : }
46 :
47 :
48 640349 : void RegExpMacroAssemblerIrregexp::Emit32(uint32_t word) {
49 : DCHECK(pc_ <= buffer_.length());
50 1280698 : if (pc_ + 3 >= buffer_.length()) {
51 180 : Expand();
52 : }
53 640349 : *reinterpret_cast<uint32_t*>(buffer_.start() + pc_) = word;
54 640349 : pc_ += 4;
55 640349 : }
56 :
57 : } // namespace internal
58 : } // namespace v8
59 :
60 : #endif // V8_REGEXP_REGEXP_MACRO_ASSEMBLER_IRREGEXP_INL_H_
|