OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 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 | 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 // Class for intrinsifying functions. | 4 // Class for intrinsifying functions. |
5 | 5 |
6 #ifndef VM_INTRINSIFIER_H_ | 6 #ifndef VM_INTRINSIFIER_H_ |
7 #define VM_INTRINSIFIER_H_ | 7 #define VM_INTRINSIFIER_H_ |
8 | 8 |
9 #include "vm/allocation.h" | 9 #include "vm/allocation.h" |
10 | 10 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 V(_StringBase, charCodeAt, String_charCodeAt) \ | 78 V(_StringBase, charCodeAt, String_charCodeAt) \ |
79 V(_StringBase, hashCode, String_hashCode) \ | 79 V(_StringBase, hashCode, String_hashCode) \ |
80 V(_StringBase, isEmpty, String_isEmpty) \ | 80 V(_StringBase, isEmpty, String_isEmpty) \ |
81 V(_ByteArrayBase, get:length, ByteArrayBase_getLength) \ | 81 V(_ByteArrayBase, get:length, ByteArrayBase_getLength) \ |
82 V(_Int8Array, [], Int8Array_getIndexed) \ | 82 V(_Int8Array, [], Int8Array_getIndexed) \ |
83 V(_Uint8Array, [], Uint8Array_getIndexed) \ | 83 V(_Uint8Array, [], Uint8Array_getIndexed) \ |
84 V(_Int16Array, [], Int16Array_getIndexed) \ | 84 V(_Int16Array, [], Int16Array_getIndexed) \ |
85 V(_Uint16Array, [], Uint16Array_getIndexed) \ | 85 V(_Uint16Array, [], Uint16Array_getIndexed) \ |
86 V(_Int32Array, [], Int32Array_getIndexed) \ | 86 V(_Int32Array, [], Int32Array_getIndexed) \ |
87 V(_Uint32Array, [], Uint32Array_getIndexed) \ | 87 V(_Uint32Array, [], Uint32Array_getIndexed) \ |
| 88 V(_Int64Array, [], Int64Array_getIndexed) \ |
| 89 V(_Uint64Array, [], Uint64Array_getIndexed) \ |
88 V(_Float32Array, [], Float32Array_getIndexed) \ | 90 V(_Float32Array, [], Float32Array_getIndexed) \ |
89 V(_Float32Array, []=, Float32Array_setIndexed) \ | 91 V(_Float32Array, []=, Float32Array_setIndexed) \ |
90 V(_Float64Array, [], Float64Array_getIndexed) \ | 92 V(_Float64Array, [], Float64Array_getIndexed) \ |
91 V(_Float64Array, []=, Float64Array_setIndexed) \ | 93 V(_Float64Array, []=, Float64Array_setIndexed) \ |
92 | 94 |
93 // Forward declarations. | 95 // Forward declarations. |
94 class Assembler; | 96 class Assembler; |
95 class Function; | 97 class Function; |
96 | 98 |
97 class Intrinsifier : public AllStatic { | 99 class Intrinsifier : public AllStatic { |
98 public: | 100 public: |
99 // Try to intrinsify 'function'. Returns true if the function intrinsified | 101 // Try to intrinsify 'function'. Returns true if the function intrinsified |
100 // completely and the code does not need to be generated (i.e., no slow | 102 // completely and the code does not need to be generated (i.e., no slow |
101 // path possible). | 103 // path possible). |
102 static bool Intrinsify(const Function& function, Assembler* assembler); | 104 static bool Intrinsify(const Function& function, Assembler* assembler); |
103 static bool CanIntrinsify(const Function& function); | 105 static bool CanIntrinsify(const Function& function); |
104 | 106 |
105 private: | 107 private: |
106 #define DECLARE_FUNCTION(test_class_name, test_function_name, destination) \ | 108 #define DECLARE_FUNCTION(test_class_name, test_function_name, destination) \ |
107 static bool destination(Assembler* assembler); | 109 static bool destination(Assembler* assembler); |
108 | 110 |
109 INTRINSIC_LIST(DECLARE_FUNCTION) | 111 INTRINSIC_LIST(DECLARE_FUNCTION) |
110 #undef DECLARE_FUNCTION | 112 #undef DECLARE_FUNCTION |
111 }; | 113 }; |
112 | 114 |
113 } // namespace dart | 115 } // namespace dart |
114 | 116 |
115 #endif // VM_INTRINSIFIER_H_ | 117 #endif // VM_INTRINSIFIER_H_ |
OLD | NEW |