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

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

Issue 15946002: Allow breakpoints on strict equal (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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 | Annotate | Revision Log
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" // Needed here to get TARGET_ARCH_ARM. 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM.
6 #if defined(TARGET_ARCH_ARM) 6 #if defined(TARGET_ARCH_ARM)
7 7
8 #include "vm/flow_graph_compiler.h" 8 #include "vm/flow_graph_compiler.h"
9 9
10 #include "lib/error.h" 10 #include "lib/error.h"
(...skipping 1297 matching lines...) Expand 10 before | Expand all | Expand 10 after
1308 &StubCode::CallStaticFunctionLabel(), 1308 &StubCode::CallStaticFunctionLabel(),
1309 PcDescriptors::kFuncCall, 1309 PcDescriptors::kFuncCall,
1310 locs); 1310 locs);
1311 AddStaticCallTarget(function); 1311 AddStaticCallTarget(function);
1312 __ Drop(argument_count); 1312 __ Drop(argument_count);
1313 } 1313 }
1314 1314
1315 1315
1316 void FlowGraphCompiler::EmitEqualityRegConstCompare(Register reg, 1316 void FlowGraphCompiler::EmitEqualityRegConstCompare(Register reg,
1317 const Object& obj, 1317 const Object& obj,
1318 bool needs_number_check) { 1318 bool needs_number_check,
1319 intptr_t token_pos) {
1319 if (needs_number_check && 1320 if (needs_number_check &&
1320 (obj.IsMint() || obj.IsDouble() || obj.IsBigint())) { 1321 (obj.IsMint() || obj.IsDouble() || obj.IsBigint())) {
1321 __ Push(reg); 1322 __ Push(reg);
1322 __ PushObject(obj); 1323 __ PushObject(obj);
1323 __ BranchLink(&StubCode::IdenticalWithNumberCheckLabel()); 1324 __ BranchLink(&StubCode::IdenticalWithNumberCheckLabel());
1325 AddCurrentDescriptor(PcDescriptors::kRuntimeCall,
1326 Isolate::kNoDeoptId,
1327 token_pos);
1324 __ Drop(1); // Discard constant. 1328 __ Drop(1); // Discard constant.
1325 __ Pop(reg); // Restore 'reg'. 1329 __ Pop(reg); // Restore 'reg'.
1326 return; 1330 return;
1327 } 1331 }
1328 1332
1329 __ CompareObject(reg, obj); 1333 __ CompareObject(reg, obj);
1330 } 1334 }
1331 1335
1332 1336
1333 void FlowGraphCompiler::EmitEqualityRegRegCompare(Register left, 1337 void FlowGraphCompiler::EmitEqualityRegRegCompare(Register left,
1334 Register right, 1338 Register right,
1335 bool needs_number_check) { 1339 bool needs_number_check,
1340 intptr_t token_pos) {
1336 if (needs_number_check) { 1341 if (needs_number_check) {
1337 __ Push(left); 1342 __ Push(left);
1338 __ Push(right); 1343 __ Push(right);
1339 __ BranchLink(&StubCode::IdenticalWithNumberCheckLabel()); 1344 __ BranchLink(&StubCode::IdenticalWithNumberCheckLabel());
1345 AddCurrentDescriptor(PcDescriptors::kRuntimeCall,
1346 Isolate::kNoDeoptId,
1347 token_pos);
1340 // Stub returns result in flags (result of a cmpl, we need ZF computed). 1348 // Stub returns result in flags (result of a cmpl, we need ZF computed).
1341 __ Pop(right); 1349 __ Pop(right);
1342 __ Pop(left); 1350 __ Pop(left);
1343 } else { 1351 } else {
1344 __ cmp(left, ShifterOperand(right)); 1352 __ cmp(left, ShifterOperand(right));
1345 } 1353 }
1346 } 1354 }
1347 1355
1348 1356
1349 void FlowGraphCompiler::EmitSuperEqualityCallPrologue(Register result, 1357 void FlowGraphCompiler::EmitSuperEqualityCallPrologue(Register result,
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1680 void ParallelMoveResolver::RestoreFpuScratch(FpuRegister reg) { 1688 void ParallelMoveResolver::RestoreFpuScratch(FpuRegister reg) {
1681 __ vldrd(reg, Address(SP, kDoubleSize, Address::PostIndex)); 1689 __ vldrd(reg, Address(SP, kDoubleSize, Address::PostIndex));
1682 } 1690 }
1683 1691
1684 1692
1685 #undef __ 1693 #undef __
1686 1694
1687 } // namespace dart 1695 } // namespace dart
1688 1696
1689 #endif // defined TARGET_ARCH_ARM 1697 #endif // defined TARGET_ARCH_ARM
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698