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

Side by Side Diff: runtime/vm/stub_code_ia32.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_arm64.cc ('k') | runtime/vm/stub_code_mips.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_IA32) 6 #if defined(TARGET_ARCH_IA32)
7 7
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/compiler.h" 9 #include "vm/compiler.h"
10 #include "vm/dart_entry.h" 10 #include "vm/dart_entry.h"
(...skipping 1487 matching lines...) Expand 10 before | Expand all | Expand 10 after
1498 1498
1499 void StubCode::GenerateTwoArgsCheckInlineCacheStub(Assembler* assembler) { 1499 void StubCode::GenerateTwoArgsCheckInlineCacheStub(Assembler* assembler) {
1500 GenerateUsageCounterIncrement(assembler, EBX); 1500 GenerateUsageCounterIncrement(assembler, EBX);
1501 GenerateNArgsCheckInlineCacheStub(assembler, 2, 1501 GenerateNArgsCheckInlineCacheStub(assembler, 2,
1502 kInlineCacheMissHandlerTwoArgsRuntimeEntry, 1502 kInlineCacheMissHandlerTwoArgsRuntimeEntry,
1503 Token::kILLEGAL, 1503 Token::kILLEGAL,
1504 kIgnoreRanges); 1504 kIgnoreRanges);
1505 } 1505 }
1506 1506
1507 1507
1508 void StubCode::GenerateThreeArgsCheckInlineCacheStub(Assembler* assembler) {
1509 GenerateUsageCounterIncrement(assembler, EBX);
1510 GenerateNArgsCheckInlineCacheStub(assembler, 3,
1511 kInlineCacheMissHandlerThreeArgsRuntimeEntry,
1512 Token::kILLEGAL,
1513 kIgnoreRanges);
1514 }
1515
1516
1517 void StubCode::GenerateSmiAddInlineCacheStub(Assembler* assembler) { 1508 void StubCode::GenerateSmiAddInlineCacheStub(Assembler* assembler) {
1518 GenerateUsageCounterIncrement(assembler, EBX); 1509 GenerateUsageCounterIncrement(assembler, EBX);
1519 GenerateNArgsCheckInlineCacheStub(assembler, 2, 1510 GenerateNArgsCheckInlineCacheStub(assembler, 2,
1520 kInlineCacheMissHandlerTwoArgsRuntimeEntry, 1511 kInlineCacheMissHandlerTwoArgsRuntimeEntry,
1521 Token::kADD, 1512 Token::kADD,
1522 kCollectRanges); 1513 kCollectRanges);
1523 } 1514 }
1524 1515
1525 1516
1526 void StubCode::GenerateSmiSubInlineCacheStub(Assembler* assembler) { 1517 void StubCode::GenerateSmiSubInlineCacheStub(Assembler* assembler) {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1585 void StubCode::GenerateTwoArgsOptimizedCheckInlineCacheStub( 1576 void StubCode::GenerateTwoArgsOptimizedCheckInlineCacheStub(
1586 Assembler* assembler) { 1577 Assembler* assembler) {
1587 GenerateOptimizedUsageCounterIncrement(assembler); 1578 GenerateOptimizedUsageCounterIncrement(assembler);
1588 GenerateNArgsCheckInlineCacheStub(assembler, 2, 1579 GenerateNArgsCheckInlineCacheStub(assembler, 2,
1589 kInlineCacheMissHandlerTwoArgsRuntimeEntry, 1580 kInlineCacheMissHandlerTwoArgsRuntimeEntry,
1590 Token::kILLEGAL, 1581 Token::kILLEGAL,
1591 kIgnoreRanges); 1582 kIgnoreRanges);
1592 } 1583 }
1593 1584
1594 1585
1595 void StubCode::GenerateThreeArgsOptimizedCheckInlineCacheStub(
1596 Assembler* assembler) {
1597 GenerateOptimizedUsageCounterIncrement(assembler);
1598 GenerateNArgsCheckInlineCacheStub(assembler, 3,
1599 kInlineCacheMissHandlerThreeArgsRuntimeEntry,
1600 Token::kILLEGAL,
1601 kIgnoreRanges);
1602 }
1603
1604
1605 // Intermediary stub between a static call and its target. ICData contains 1586 // Intermediary stub between a static call and its target. ICData contains
1606 // the target function and the call count. 1587 // the target function and the call count.
1607 // ECX: ICData 1588 // ECX: ICData
1608 void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) { 1589 void StubCode::GenerateZeroArgsUnoptimizedStaticCallStub(Assembler* assembler) {
1609 GenerateUsageCounterIncrement(assembler, EBX); 1590 GenerateUsageCounterIncrement(assembler, EBX);
1610 1591
1611 #if defined(DEBUG) 1592 #if defined(DEBUG)
1612 { Label ok; 1593 { Label ok;
1613 // Check that the IC data array has NumArgsTested() == num_args. 1594 // Check that the IC data array has NumArgsTested() == num_args.
1614 // 'NumArgsTested' is stored in the least significant bits of 'state_bits'. 1595 // 'NumArgsTested' is stored in the least significant bits of 'state_bits'.
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
2122 // EBX: entry point. 2103 // EBX: entry point.
2123 void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) { 2104 void StubCode::GenerateMegamorphicLookupStub(Assembler* assembler) {
2124 EmitMegamorphicLookup(assembler, EDI, EBX, EBX); 2105 EmitMegamorphicLookup(assembler, EDI, EBX, EBX);
2125 __ ret(); 2106 __ ret();
2126 } 2107 }
2127 2108
2128 2109
2129 } // namespace dart 2110 } // namespace dart
2130 2111
2131 #endif // defined TARGET_ARCH_IA32 2112 #endif // defined TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « runtime/vm/stub_code_arm64.cc ('k') | runtime/vm/stub_code_mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698