OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of dart2js.js_emitter.full_emitter; | 5 part of dart2js.js_emitter.full_emitter; |
6 | 6 |
7 /// Enables debugging of fast/slow objects using V8-specific primitives. | 7 /// Enables debugging of fast/slow objects using V8-specific primitives. |
8 const DEBUG_FAST_OBJECTS = false; | 8 const DEBUG_FAST_OBJECTS = false; |
9 | 9 |
10 /** | |
11 * Call-back for adding property with [name] and [value]. | |
12 */ | |
13 typedef jsAst.Property AddPropertyFunction( | |
14 jsAst.Name name, jsAst.Expression value); | |
15 | |
16 // Compact field specifications. The format of the field specification is | 10 // Compact field specifications. The format of the field specification is |
17 // <accessorName>:<fieldName><suffix> where the suffix and accessor name | 11 // <accessorName>:<fieldName><suffix> where the suffix and accessor name |
18 // prefix are optional. The suffix directs the generation of getter and | 12 // prefix are optional. The suffix directs the generation of getter and |
19 // setter methods. Each of the getter and setter has two bits to determine | 13 // setter methods. Each of the getter and setter has two bits to determine |
20 // the calling convention. Setter listed below, getter is similar. | 14 // the calling convention. Setter listed below, getter is similar. |
21 // | 15 // |
22 // 00: no setter | 16 // 00: no setter |
23 // 01: function(value) { this.field = value; } | 17 // 01: function(value) { this.field = value; } |
24 // 10: function(receiver, value) { receiver.field = value; } | 18 // 10: function(receiver, value) { receiver.field = value; } |
25 // 11: function(receiver, value) { this.field = value; } | 19 // 11: function(receiver, value) { this.field = value; } |
26 // | 20 // |
27 // The suffix encodes 4 bits using three ASCII ranges of non-identifier | 21 // The suffix encodes 4 bits using three ASCII ranges of non-identifier |
28 // characters. | 22 // characters. |
29 const FIELD_CODE_CHARACTERS = r"<=>?@{|}~%&'()*"; | 23 const FIELD_CODE_CHARACTERS = r"<=>?@{|}~%&'()*"; |
30 const NO_FIELD_CODE = 0; | 24 const NO_FIELD_CODE = 0; |
31 const FIRST_FIELD_CODE = 1; | 25 const FIRST_FIELD_CODE = 1; |
32 const RANGE1_FIRST = 0x3c; // <=>?@ encodes 1..5 | 26 const RANGE1_FIRST = 0x3c; // <=>?@ encodes 1..5 |
33 const RANGE1_LAST = 0x40; | 27 const RANGE1_LAST = 0x40; |
34 const RANGE2_FIRST = 0x7b; // {|}~ encodes 6..9 | 28 const RANGE2_FIRST = 0x7b; // {|}~ encodes 6..9 |
35 const RANGE2_LAST = 0x7e; | 29 const RANGE2_LAST = 0x7e; |
36 const RANGE3_FIRST = 0x25; // %&'()*+ encodes 10..16 | 30 const RANGE3_FIRST = 0x25; // %&'()*+ encodes 10..16 |
37 const RANGE3_LAST = 0x2b; | 31 const RANGE3_LAST = 0x2b; |
OLD | NEW |