Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Side by Side Diff: runtime/vm/regexp_assembler_bytecode_inl.h

Issue 1201383002: Port irregexp bytecode compiler and interpreter from V8 r24065. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/vm/regexp_assembler_bytecode.cc ('k') | runtime/vm/regexp_assembler_ir.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 // A light-weight assembler for the Irregexp byte code.
6
7 #include "vm/regexp_bytecodes.h"
8
9 #ifndef VM_REGEXP_ASSEMBLER_BYTECODE_INL_H_
10 #define VM_REGEXP_ASSEMBLER_BYTECODE_INL_H_
11
12 namespace dart {
13
14 void BytecodeRegExpMacroAssembler::Emit(uint32_t byte,
15 uint32_t twenty_four_bits) {
16 uint32_t word = ((twenty_four_bits << BYTECODE_SHIFT) | byte);
17 ASSERT(pc_ <= buffer_->length());
18 if (pc_ + 3 >= buffer_->length()) {
19 Expand();
20 }
21 *reinterpret_cast<uint32_t*>(buffer_->data() + pc_) = word;
22 pc_ += 4;
23 }
24
25
26 void BytecodeRegExpMacroAssembler::Emit16(uint32_t word) {
27 ASSERT(pc_ <= buffer_->length());
28 if (pc_ + 1 >= buffer_->length()) {
29 Expand();
30 }
31 *reinterpret_cast<uint16_t*>(buffer_->data() + pc_) = word;
32 pc_ += 2;
33 }
34
35
36 void BytecodeRegExpMacroAssembler::Emit8(uint32_t word) {
37 ASSERT(pc_ <= buffer_->length());
38 if (pc_ == buffer_->length()) {
39 Expand();
40 }
41 *reinterpret_cast<unsigned char*>(buffer_->data() + pc_) = word;
42 pc_ += 1;
43 }
44
45
46 void BytecodeRegExpMacroAssembler::Emit32(uint32_t word) {
47 ASSERT(pc_ <= buffer_->length());
48 if (pc_ + 3 >= buffer_->length()) {
49 Expand();
50 }
51 *reinterpret_cast<uint32_t*>(buffer_->data() + pc_) = word;
52 pc_ += 4;
53 }
54
55 } // namespace dart
56
57 #endif // VM_REGEXP_ASSEMBLER_BYTECODE_INL_H_
OLDNEW
« no previous file with comments | « runtime/vm/regexp_assembler_bytecode.cc ('k') | runtime/vm/regexp_assembler_ir.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698