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

Side by Side Diff: runtime/vm/stub_code_arm.cc

Issue 1153963002: Remove value check from ICData checks/house-keeping (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: C Created 5 years, 7 months 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
« no previous file with comments | « runtime/vm/stub_code.h ('k') | runtime/vm/stub_code_arm64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 4
5 #include "vm/globals.h" 5 #include "vm/globals.h"
6 #if defined(TARGET_ARCH_ARM) 6 #if defined(TARGET_ARCH_ARM)
7 7
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/code_generator.h" 9 #include "vm/code_generator.h"
10 #include "vm/cpu.h" 10 #include "vm/cpu.h"
(...skipping 1527 matching lines...) Expand 10 before | Expand all | Expand 10 after
1538 void StubCode::GenerateTwoArgsCheckInlineCacheStub(Assembler* assembler) { 1538 void StubCode::GenerateTwoArgsCheckInlineCacheStub(Assembler* assembler) {
1539 GenerateUsageCounterIncrement(assembler, R6); 1539 GenerateUsageCounterIncrement(assembler, R6);
1540 GenerateNArgsCheckInlineCacheStub(assembler, 1540 GenerateNArgsCheckInlineCacheStub(assembler,
1541 2, 1541 2,
1542 kInlineCacheMissHandlerTwoArgsRuntimeEntry, 1542 kInlineCacheMissHandlerTwoArgsRuntimeEntry,
1543 Token::kILLEGAL, 1543 Token::kILLEGAL,
1544 kIgnoreRanges); 1544 kIgnoreRanges);
1545 } 1545 }
1546 1546
1547 1547
1548 void StubCode::GenerateThreeArgsCheckInlineCacheStub(Assembler* assembler) {
1549 GenerateUsageCounterIncrement(assembler, R6);
1550 GenerateNArgsCheckInlineCacheStub(assembler,
1551 3,
1552 kInlineCacheMissHandlerThreeArgsRuntimeEntry,
1553 Token::kILLEGAL,
1554 kIgnoreRanges);
1555 }
1556
1557
1558 void StubCode::GenerateSmiAddInlineCacheStub(Assembler* assembler) { 1548 void StubCode::GenerateSmiAddInlineCacheStub(Assembler* assembler) {
1559 GenerateUsageCounterIncrement(assembler, R6); 1549 GenerateUsageCounterIncrement(assembler, R6);
1560 GenerateNArgsCheckInlineCacheStub(assembler, 1550 GenerateNArgsCheckInlineCacheStub(assembler,
1561 2, 1551 2,
1562 kInlineCacheMissHandlerTwoArgsRuntimeEntry, 1552 kInlineCacheMissHandlerTwoArgsRuntimeEntry,
1563 Token::kADD, 1553 Token::kADD,
1564 kCollectRanges); 1554 kCollectRanges);
1565 } 1555 }
1566 1556
1567 1557
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1612 1602
1613 void StubCode::GenerateTwoArgsOptimizedCheckInlineCacheStub( 1603 void StubCode::GenerateTwoArgsOptimizedCheckInlineCacheStub(
1614 Assembler* assembler) { 1604 Assembler* assembler) {
1615 GenerateOptimizedUsageCounterIncrement(assembler); 1605 GenerateOptimizedUsageCounterIncrement(assembler);
1616 GenerateNArgsCheckInlineCacheStub(assembler, 2, 1606 GenerateNArgsCheckInlineCacheStub(assembler, 2,
1617 kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kILLEGAL, 1607 kInlineCacheMissHandlerTwoArgsRuntimeEntry, Token::kILLEGAL,
1618 kIgnoreRanges); 1608 kIgnoreRanges);
1619 } 1609 }
1620 1610
1621 1611
1622 void StubCode::GenerateThreeArgsOptimizedCheckInlineCacheStub(
1623 Assembler* assembler) {
1624 GenerateOptimizedUsageCounterIncrement(assembler);
1625 GenerateNArgsCheckInlineCacheStub(assembler, 3,
1626 kInlineCacheMissHandlerThreeArgsRuntimeEntry, Token::kILLEGAL,
1627 kIgnoreRanges);
1628 }
1629
1630
1631 // Intermediary stub between a static call and its target. ICData contains 1612 // Intermediary stub between a static call and its target. ICData contains
1632 // the target function and the call count. 1613 // the target function and the call count.
1633 // R5: ICData 1614 // R5: ICData
1634 void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) { 1615 void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) {
1635 GenerateUsageCounterIncrement(assembler, R6); 1616 GenerateUsageCounterIncrement(assembler, R6);
1636 #if defined(DEBUG) 1617 #if defined(DEBUG)
1637 { Label ok; 1618 { Label ok;
1638 // Check that the IC data array has NumArgsTested() == 0. 1619 // Check that the IC data array has NumArgsTested() == 0.
1639 // 'NumArgsTested' is stored in the least significant bits of 'state_bits'. 1620 // 'NumArgsTested' is stored in the least significant bits of 'state_bits'.
1640 __ ldr(R6, FieldAddress(R5, ICData::state_bits_offset())); 1621 __ ldr(R6, FieldAddress(R5, ICData::state_bits_offset()));
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
2130 // Result: 2111 // Result:
2131 // R1: entry point. 2112 // R1: entry point.
2132 void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) { 2113 void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) {
2133 EmitMegamorphicLookup(assembler, R0, R1, R1); 2114 EmitMegamorphicLookup(assembler, R0, R1, R1);
2134 __ Ret(); 2115 __ Ret();
2135 } 2116 }
2136 2117
2137 } // namespace dart 2118 } // namespace dart
2138 2119
2139 #endif // defined TARGET_ARCH_ARM 2120 #endif // defined TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « runtime/vm/stub_code.h ('k') | runtime/vm/stub_code_arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698