OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_CODE_STUB_ASSEMBLER_H_ | 5 #ifndef V8_CODE_STUB_ASSEMBLER_H_ |
6 #define V8_CODE_STUB_ASSEMBLER_H_ | 6 #define V8_CODE_STUB_ASSEMBLER_H_ |
7 | 7 |
8 #include <functional> | 8 #include <functional> |
9 | 9 |
10 #include "src/compiler/code-assembler.h" | 10 #include "src/compiler/code-assembler.h" |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 compiler::Node* NumberInc(compiler::Node* value); | 154 compiler::Node* NumberInc(compiler::Node* value); |
155 | 155 |
156 // Allocate an object of the given size. | 156 // Allocate an object of the given size. |
157 compiler::Node* Allocate(compiler::Node* size, AllocationFlags flags = kNone); | 157 compiler::Node* Allocate(compiler::Node* size, AllocationFlags flags = kNone); |
158 compiler::Node* Allocate(int size, AllocationFlags flags = kNone); | 158 compiler::Node* Allocate(int size, AllocationFlags flags = kNone); |
159 compiler::Node* InnerAllocate(compiler::Node* previous, int offset); | 159 compiler::Node* InnerAllocate(compiler::Node* previous, int offset); |
160 compiler::Node* InnerAllocate(compiler::Node* previous, | 160 compiler::Node* InnerAllocate(compiler::Node* previous, |
161 compiler::Node* offset); | 161 compiler::Node* offset); |
162 compiler::Node* IsRegularHeapObjectSize(compiler::Node* size); | 162 compiler::Node* IsRegularHeapObjectSize(compiler::Node* size); |
163 | 163 |
164 void Assert(compiler::Node* condition, const char* string = nullptr, | 164 typedef std::function<compiler::Node*()> ConditionBody; |
| 165 void Assert(ConditionBody condition_body, const char* string = nullptr, |
165 const char* file = nullptr, int line = 0); | 166 const char* file = nullptr, int line = 0); |
166 | 167 |
167 // Check a value for smi-ness | 168 // Check a value for smi-ness |
168 compiler::Node* TaggedIsSmi(compiler::Node* a); | 169 compiler::Node* TaggedIsSmi(compiler::Node* a); |
169 // Check that the value is a non-negative smi. | 170 // Check that the value is a non-negative smi. |
170 compiler::Node* WordIsPositiveSmi(compiler::Node* a); | 171 compiler::Node* WordIsPositiveSmi(compiler::Node* a); |
171 // Check that a word has a word-aligned address. | 172 // Check that a word has a word-aligned address. |
172 compiler::Node* WordIsWordAligned(compiler::Node* word); | 173 compiler::Node* WordIsWordAligned(compiler::Node* word); |
173 compiler::Node* WordIsPowerOfTwo(compiler::Node* value); | 174 compiler::Node* WordIsPowerOfTwo(compiler::Node* value); |
174 | 175 |
(...skipping 1081 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1256 | 1257 |
1257 private: | 1258 private: |
1258 compiler::Node* GetArguments(); | 1259 compiler::Node* GetArguments(); |
1259 | 1260 |
1260 CodeStubAssembler* assembler_; | 1261 CodeStubAssembler* assembler_; |
1261 compiler::Node* argc_; | 1262 compiler::Node* argc_; |
1262 compiler::Node* arguments_; | 1263 compiler::Node* arguments_; |
1263 compiler::Node* fp_; | 1264 compiler::Node* fp_; |
1264 }; | 1265 }; |
1265 | 1266 |
1266 #define CSA_ASSERT(x) Assert((x), #x, __FILE__, __LINE__) | 1267 #ifdef DEBUG |
| 1268 #define CSA_ASSERT(csa, x) \ |
| 1269 (csa)->Assert([&] { return (x); }, #x, __FILE__, __LINE__) |
| 1270 #else |
| 1271 #define CSA_ASSERT(csa, x) ((void)0) |
| 1272 #endif |
| 1273 |
1267 #ifdef ENABLE_SLOW_DCHECKS | 1274 #ifdef ENABLE_SLOW_DCHECKS |
1268 #define CSA_SLOW_ASSERT(x) \ | 1275 #define CSA_SLOW_ASSERT(csa, x) \ |
1269 if (FLAG_enable_slow_asserts) { \ | 1276 if (FLAG_enable_slow_asserts) { \ |
1270 Assert((x), #x, __FILE__, __LINE__); \ | 1277 (csa)->Assert([&] { return (x); }, #x, __FILE__, __LINE__); \ |
1271 } | 1278 } |
1272 #else | 1279 #else |
1273 #define CSA_SLOW_ASSERT(x) | 1280 #define CSA_SLOW_ASSERT(csa, x) ((void)0) |
1274 #endif | 1281 #endif |
1275 | 1282 |
1276 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); | 1283 DEFINE_OPERATORS_FOR_FLAGS(CodeStubAssembler::AllocationFlags); |
1277 | 1284 |
1278 } // namespace internal | 1285 } // namespace internal |
1279 } // namespace v8 | 1286 } // namespace v8 |
1280 #endif // V8_CODE_STUB_ASSEMBLER_H_ | 1287 #endif // V8_CODE_STUB_ASSEMBLER_H_ |
OLD | NEW |