Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(337)

Side by Side Diff: src/code-stubs.cc

Issue 2550683003: [stubs] Cleanup usages of CSA::Select(). (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/code-stubs.h" 5 #include "src/code-stubs.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "src/ast/ast.h" 9 #include "src/ast/ast.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 1043 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 { 1054 {
1055 Label rhs_is_smi(assembler), rhs_is_not_smi(assembler); 1055 Label rhs_is_smi(assembler), rhs_is_not_smi(assembler);
1056 assembler->Branch(assembler->TaggedIsSmi(rhs), &rhs_is_smi, 1056 assembler->Branch(assembler->TaggedIsSmi(rhs), &rhs_is_smi,
1057 &rhs_is_not_smi); 1057 &rhs_is_not_smi);
1058 1058
1059 assembler->Bind(&rhs_is_smi); 1059 assembler->Bind(&rhs_is_smi);
1060 { 1060 {
1061 // Both {lhs} and {rhs} are Smis. The result is not necessarily a smi, 1061 // Both {lhs} and {rhs} are Smis. The result is not necessarily a smi,
1062 // in case of overflow. 1062 // in case of overflow.
1063 var_result.Bind(assembler->SmiMul(lhs, rhs)); 1063 var_result.Bind(assembler->SmiMul(lhs, rhs));
1064 var_type_feedback.Bind(assembler->Select( 1064 var_type_feedback.Bind(assembler->SelectInt32Constant(
1065 assembler->TaggedIsSmi(var_result.value()), 1065 assembler->TaggedIsSmi(var_result.value()),
1066 assembler->Int32Constant(BinaryOperationFeedback::kSignedSmall), 1066 BinaryOperationFeedback::kSignedSmall,
1067 assembler->Int32Constant(BinaryOperationFeedback::kNumber), 1067 BinaryOperationFeedback::kNumber));
1068 MachineRepresentation::kWord32));
1069 assembler->Goto(&end); 1068 assembler->Goto(&end);
1070 } 1069 }
1071 1070
1072 assembler->Bind(&rhs_is_not_smi); 1071 assembler->Bind(&rhs_is_not_smi);
1073 { 1072 {
1074 Node* rhs_map = assembler->LoadMap(rhs); 1073 Node* rhs_map = assembler->LoadMap(rhs);
1075 1074
1076 // Check if {rhs} is a HeapNumber. 1075 // Check if {rhs} is a HeapNumber.
1077 assembler->GotoUnless(assembler->IsHeapNumberMap(rhs_map), 1076 assembler->GotoUnless(assembler->IsHeapNumberMap(rhs_map),
1078 &check_rhsisoddball); 1077 &check_rhsisoddball);
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
1435 1434
1436 assembler->Bind(&dividend_is_smi); 1435 assembler->Bind(&dividend_is_smi);
1437 { 1436 {
1438 Label divisor_is_smi(assembler), divisor_is_not_smi(assembler); 1437 Label divisor_is_smi(assembler), divisor_is_not_smi(assembler);
1439 assembler->Branch(assembler->TaggedIsSmi(divisor), &divisor_is_smi, 1438 assembler->Branch(assembler->TaggedIsSmi(divisor), &divisor_is_smi,
1440 &divisor_is_not_smi); 1439 &divisor_is_not_smi);
1441 1440
1442 assembler->Bind(&divisor_is_smi); 1441 assembler->Bind(&divisor_is_smi);
1443 { 1442 {
1444 var_result.Bind(assembler->SmiMod(dividend, divisor)); 1443 var_result.Bind(assembler->SmiMod(dividend, divisor));
1445 var_type_feedback.Bind(assembler->Select( 1444 var_type_feedback.Bind(assembler->SelectInt32Constant(
1446 assembler->TaggedIsSmi(var_result.value()), 1445 assembler->TaggedIsSmi(var_result.value()),
1447 assembler->Int32Constant(BinaryOperationFeedback::kSignedSmall), 1446 BinaryOperationFeedback::kSignedSmall,
1448 assembler->Int32Constant(BinaryOperationFeedback::kNumber))); 1447 BinaryOperationFeedback::kNumber));
1449 assembler->Goto(&end); 1448 assembler->Goto(&end);
1450 } 1449 }
1451 1450
1452 assembler->Bind(&divisor_is_not_smi); 1451 assembler->Bind(&divisor_is_not_smi);
1453 { 1452 {
1454 Node* divisor_map = assembler->LoadMap(divisor); 1453 Node* divisor_map = assembler->LoadMap(divisor);
1455 1454
1456 // Check if {divisor} is a HeapNumber. 1455 // Check if {divisor} is a HeapNumber.
1457 assembler->GotoUnless(assembler->IsHeapNumberMap(divisor_map), 1456 assembler->GotoUnless(assembler->IsHeapNumberMap(divisor_map),
1458 &check_divisor_for_oddball); 1457 &check_divisor_for_oddball);
(...skipping 1029 matching lines...) Expand 10 before | Expand all | Expand 10 after
2488 assembler->Int32Constant( 2487 assembler->Int32Constant(
2489 (FunctionKind::kAccessorFunction | 2488 (FunctionKind::kAccessorFunction |
2490 FunctionKind::kArrowFunction | 2489 FunctionKind::kArrowFunction |
2491 FunctionKind::kConciseMethod) 2490 FunctionKind::kConciseMethod)
2492 << SharedFunctionInfo::kFunctionKindShift))); 2491 << SharedFunctionInfo::kFunctionKindShift)));
2493 } 2492 }
2494 assembler->Goto(&if_function_without_prototype); 2493 assembler->Goto(&if_function_without_prototype);
2495 2494
2496 assembler->Bind(&if_normal); 2495 assembler->Bind(&if_normal);
2497 { 2496 {
2498 map_index.Bind(assembler->Select( 2497 map_index.Bind(assembler->SelectIntPtrConstant(
2499 is_strict, 2498 is_strict, Context::STRICT_FUNCTION_MAP_INDEX,
2500 assembler->IntPtrConstant(Context::STRICT_FUNCTION_MAP_INDEX), 2499 Context::SLOPPY_FUNCTION_MAP_INDEX));
2501 assembler->IntPtrConstant(Context::SLOPPY_FUNCTION_MAP_INDEX)));
2502 assembler->Goto(&load_map); 2500 assembler->Goto(&load_map);
2503 } 2501 }
2504 2502
2505 assembler->Bind(&if_generator); 2503 assembler->Bind(&if_generator);
2506 { 2504 {
2507 map_index.Bind(assembler->Select( 2505 map_index.Bind(assembler->SelectIntPtrConstant(
2508 is_strict, 2506 is_strict, Context::STRICT_GENERATOR_FUNCTION_MAP_INDEX,
2509 assembler->IntPtrConstant(Context::STRICT_GENERATOR_FUNCTION_MAP_INDEX), 2507 Context::SLOPPY_GENERATOR_FUNCTION_MAP_INDEX));
2510 assembler->IntPtrConstant(
2511 Context::SLOPPY_GENERATOR_FUNCTION_MAP_INDEX)));
2512 assembler->Goto(&load_map); 2508 assembler->Goto(&load_map);
2513 } 2509 }
2514 2510
2515 assembler->Bind(&if_async); 2511 assembler->Bind(&if_async);
2516 { 2512 {
2517 map_index.Bind(assembler->Select( 2513 map_index.Bind(assembler->SelectIntPtrConstant(
2518 is_strict, 2514 is_strict, Context::STRICT_ASYNC_FUNCTION_MAP_INDEX,
2519 assembler->IntPtrConstant(Context::STRICT_ASYNC_FUNCTION_MAP_INDEX), 2515 Context::SLOPPY_ASYNC_FUNCTION_MAP_INDEX));
2520 assembler->IntPtrConstant(Context::SLOPPY_ASYNC_FUNCTION_MAP_INDEX)));
2521 assembler->Goto(&load_map); 2516 assembler->Goto(&load_map);
2522 } 2517 }
2523 2518
2524 assembler->Bind(&if_class_constructor); 2519 assembler->Bind(&if_class_constructor);
2525 { 2520 {
2526 map_index.Bind( 2521 map_index.Bind(
2527 assembler->IntPtrConstant(Context::STRICT_FUNCTION_MAP_INDEX)); 2522 assembler->IntPtrConstant(Context::STRICT_FUNCTION_MAP_INDEX));
2528 assembler->Goto(&load_map); 2523 assembler->Goto(&load_map);
2529 } 2524 }
2530 2525
(...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after
3203 } 3198 }
3204 3199
3205 ArrayConstructorStub::ArrayConstructorStub(Isolate* isolate) 3200 ArrayConstructorStub::ArrayConstructorStub(Isolate* isolate)
3206 : PlatformCodeStub(isolate) {} 3201 : PlatformCodeStub(isolate) {}
3207 3202
3208 InternalArrayConstructorStub::InternalArrayConstructorStub(Isolate* isolate) 3203 InternalArrayConstructorStub::InternalArrayConstructorStub(Isolate* isolate)
3209 : PlatformCodeStub(isolate) {} 3204 : PlatformCodeStub(isolate) {}
3210 3205
3211 } // namespace internal 3206 } // namespace internal
3212 } // namespace v8 3207 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698