OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, 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 #library('node_scanner_bench'); | |
6 #import('../util/characters.dart'); | |
7 #import('../../../../frog/lib/node/node.dart'); | |
8 #import('scannerlib.dart'); | |
9 #import('scanner_implementation.dart'); | |
10 #import('scanner_bench.dart'); | |
11 #import('../../../utf/utf.dart'); | |
12 #source('byte_strings.dart'); | |
13 #source('byte_array_scanner.dart'); | |
14 | |
15 class NodeScannerBench extends ScannerBench { | |
16 int getBytes(String filename, void callback(bytes)) { | |
17 // This actually returns a buffer, not a String. | |
18 var s = fs.readFileSync(filename, null); | |
19 callback(s); | |
20 return s.length; | |
21 } | |
22 | |
23 Scanner makeScanner(bytes) => new InflexibleByteArrayScanner(bytes); | |
24 | |
25 void checkExistence(String filename) { | |
26 if (!path.existsSync(filename)) { | |
27 throw "no such file: ${filename}"; | |
28 } | |
29 } | |
30 } | |
31 | |
32 class InflexibleByteArrayScanner extends ByteArrayScanner { | |
33 InflexibleByteArrayScanner(List<int> bytes) : super(bytes); | |
34 | |
35 int byteAt(int index) => (bytes.length > index) ? bytes[index] : $EOF; | |
36 | |
37 int advance() { | |
38 // This method should be equivalent to the one in super. However, | |
39 // this is a *HOT* method and V8 performs better if it is easy to | |
40 // inline. | |
41 int index = ++byteOffset; | |
42 int next = (bytes.length > index) ? bytes[index] : $EOF; | |
43 return next; | |
44 } | |
45 } | |
46 | |
47 main() { | |
48 new NodeScannerBench().main(argv); | |
49 } | |
OLD | NEW |