Chromium Code Reviews| 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 |