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 #include "src/builtins/builtins.h" | 5 #include "src/builtins/builtins.h" |
6 #include "src/builtins/builtins-utils.h" | 6 #include "src/builtins/builtins-utils.h" |
7 | 7 |
8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
9 | 9 |
10 namespace v8 { | 10 namespace v8 { |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
183 } | 183 } |
184 } | 184 } |
185 | 185 |
186 assembler->Bind(&if_equal); | 186 assembler->Bind(&if_equal); |
187 assembler->Return(assembler->BooleanConstant(mode == kDontNegateResult)); | 187 assembler->Return(assembler->BooleanConstant(mode == kDontNegateResult)); |
188 | 188 |
189 assembler->Bind(&if_notequal); | 189 assembler->Bind(&if_notequal); |
190 assembler->Return(assembler->BooleanConstant(mode == kNegateResult)); | 190 assembler->Return(assembler->BooleanConstant(mode == kNegateResult)); |
191 } | 191 } |
192 | 192 |
193 enum RelationalComparisonMode { | 193 enum RelationalComparisonMode { |
Igor Sheludko
2016/10/06 08:51:01
We have a CSA::RelationalComparisonMode. Is this o
| |
194 kLessThan, | 194 kLessThan, |
195 kLessThanOrEqual, | 195 kLessThanOrEqual, |
196 kGreaterThan, | 196 kGreaterThan, |
197 kGreaterThanOrEqual | 197 kGreaterThanOrEqual |
198 }; | 198 }; |
199 | 199 |
200 void GenerateStringRelationalComparison(CodeStubAssembler* assembler, | 200 void GenerateStringRelationalComparison(CodeStubAssembler* assembler, |
Igor Sheludko
2016/10/06 08:51:01
I guess this thing is now called CSA::RelationalCo
| |
201 RelationalComparisonMode mode) { | 201 RelationalComparisonMode mode) { |
202 typedef CodeStubAssembler::Label Label; | 202 typedef CodeStubAssembler::Label Label; |
203 typedef compiler::Node Node; | 203 typedef compiler::Node Node; |
204 typedef CodeStubAssembler::Variable Variable; | 204 typedef CodeStubAssembler::Variable Variable; |
205 | 205 |
206 Node* lhs = assembler->Parameter(0); | 206 Node* lhs = assembler->Parameter(0); |
207 Node* rhs = assembler->Parameter(1); | 207 Node* rhs = assembler->Parameter(1); |
208 Node* context = assembler->Parameter(2); | 208 Node* context = assembler->Parameter(2); |
209 | 209 |
210 Label if_less(assembler), if_equal(assembler), if_greater(assembler); | 210 Label if_less(assembler), if_equal(assembler), if_greater(assembler); |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
387 GenerateStringEqual(assembler, kDontNegateResult); | 387 GenerateStringEqual(assembler, kDontNegateResult); |
388 } | 388 } |
389 | 389 |
390 // static | 390 // static |
391 void Builtins::Generate_StringNotEqual(CodeStubAssembler* assembler) { | 391 void Builtins::Generate_StringNotEqual(CodeStubAssembler* assembler) { |
392 GenerateStringEqual(assembler, kNegateResult); | 392 GenerateStringEqual(assembler, kNegateResult); |
393 } | 393 } |
394 | 394 |
395 // static | 395 // static |
396 void Builtins::Generate_StringLessThan(CodeStubAssembler* assembler) { | 396 void Builtins::Generate_StringLessThan(CodeStubAssembler* assembler) { |
397 GenerateStringRelationalComparison(assembler, kLessThan); | 397 GenerateStringRelationalComparison(assembler, |
398 RelationalComparisonMode::kLessThan); | |
398 } | 399 } |
399 | 400 |
400 // static | 401 // static |
401 void Builtins::Generate_StringLessThanOrEqual(CodeStubAssembler* assembler) { | 402 void Builtins::Generate_StringLessThanOrEqual(CodeStubAssembler* assembler) { |
402 GenerateStringRelationalComparison(assembler, kLessThanOrEqual); | 403 GenerateStringRelationalComparison( |
404 assembler, RelationalComparisonMode::kLessThanOrEqual); | |
403 } | 405 } |
404 | 406 |
405 // static | 407 // static |
406 void Builtins::Generate_StringGreaterThan(CodeStubAssembler* assembler) { | 408 void Builtins::Generate_StringGreaterThan(CodeStubAssembler* assembler) { |
407 GenerateStringRelationalComparison(assembler, kGreaterThan); | 409 GenerateStringRelationalComparison(assembler, |
410 RelationalComparisonMode::kGreaterThan); | |
408 } | 411 } |
409 | 412 |
410 // static | 413 // static |
411 void Builtins::Generate_StringGreaterThanOrEqual(CodeStubAssembler* assembler) { | 414 void Builtins::Generate_StringGreaterThanOrEqual(CodeStubAssembler* assembler) { |
412 GenerateStringRelationalComparison(assembler, kGreaterThanOrEqual); | 415 GenerateStringRelationalComparison( |
416 assembler, RelationalComparisonMode::kGreaterThanOrEqual); | |
413 } | 417 } |
414 | 418 |
415 // ----------------------------------------------------------------------------- | 419 // ----------------------------------------------------------------------------- |
416 // ES6 section 21.1 String Objects | 420 // ES6 section 21.1 String Objects |
417 | 421 |
418 // ES6 section 21.1.2.1 String.fromCharCode ( ...codeUnits ) | 422 // ES6 section 21.1.2.1 String.fromCharCode ( ...codeUnits ) |
419 void Builtins::Generate_StringFromCharCode(CodeStubAssembler* assembler) { | 423 void Builtins::Generate_StringFromCharCode(CodeStubAssembler* assembler) { |
420 typedef CodeStubAssembler::Label Label; | 424 typedef CodeStubAssembler::Label Label; |
421 typedef compiler::Node Node; | 425 typedef compiler::Node Node; |
422 typedef CodeStubAssembler::Variable Variable; | 426 typedef CodeStubAssembler::Variable Variable; |
(...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1339 Runtime::kThrowIncompatibleMethodReceiver, context, | 1343 Runtime::kThrowIncompatibleMethodReceiver, context, |
1340 assembler->HeapConstant(assembler->factory()->NewStringFromAsciiChecked( | 1344 assembler->HeapConstant(assembler->factory()->NewStringFromAsciiChecked( |
1341 "String Iterator.prototype.next", TENURED)), | 1345 "String Iterator.prototype.next", TENURED)), |
1342 iterator); | 1346 iterator); |
1343 assembler->Return(result); // Never reached. | 1347 assembler->Return(result); // Never reached. |
1344 } | 1348 } |
1345 } | 1349 } |
1346 | 1350 |
1347 } // namespace internal | 1351 } // namespace internal |
1348 } // namespace v8 | 1352 } // namespace v8 |
OLD | NEW |