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

Side by Side Diff: src/arm/lithium-codegen-arm.cc

Issue 6447003: ARM: Fix condition usage in DeoptimizeIf(). (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 10 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after
640 } 640 }
641 641
642 ASSERT(FLAG_deopt_every_n_times < 2); // Other values not supported on ARM. 642 ASSERT(FLAG_deopt_every_n_times < 2); // Other values not supported on ARM.
643 643
644 if (FLAG_deopt_every_n_times == 1 && 644 if (FLAG_deopt_every_n_times == 1 &&
645 info_->shared_info()->opt_count() == id) { 645 info_->shared_info()->opt_count() == id) {
646 __ Jump(entry, RelocInfo::RUNTIME_ENTRY); 646 __ Jump(entry, RelocInfo::RUNTIME_ENTRY);
647 return; 647 return;
648 } 648 }
649 649
650 if (cc == kNoCondition) { 650 if (cc == al) {
651 if (FLAG_trap_on_deopt) __ stop("trap_on_deopt"); 651 if (FLAG_trap_on_deopt) __ stop("trap_on_deopt");
652 __ Jump(entry, RelocInfo::RUNTIME_ENTRY); 652 __ Jump(entry, RelocInfo::RUNTIME_ENTRY);
653 } else { 653 } else {
654 if (FLAG_trap_on_deopt) { 654 if (FLAG_trap_on_deopt) {
655 Label done; 655 Label done;
656 __ b(&done, NegateCondition(cc)); 656 __ b(&done, NegateCondition(cc));
657 __ stop("trap_on_deopt"); 657 __ stop("trap_on_deopt");
658 __ Jump(entry, RelocInfo::RUNTIME_ENTRY); 658 __ Jump(entry, RelocInfo::RUNTIME_ENTRY);
659 __ bind(&done); 659 __ bind(&done);
660 } else { 660 } else {
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
1182 __ mul(left, left, right); 1182 __ mul(left, left, right);
1183 } 1183 }
1184 1184
1185 if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) { 1185 if (instr->hydrogen()->CheckFlag(HValue::kBailoutOnMinusZero)) {
1186 // Bail out if the result is supposed to be negative zero. 1186 // Bail out if the result is supposed to be negative zero.
1187 Label done; 1187 Label done;
1188 __ tst(left, Operand(left)); 1188 __ tst(left, Operand(left));
1189 __ b(ne, &done); 1189 __ b(ne, &done);
1190 if (instr->InputAt(1)->IsConstantOperand()) { 1190 if (instr->InputAt(1)->IsConstantOperand()) {
1191 if (ToInteger32(LConstantOperand::cast(instr->InputAt(1))) < 0) { 1191 if (ToInteger32(LConstantOperand::cast(instr->InputAt(1))) < 0) {
1192 DeoptimizeIf(kNoCondition, instr->environment()); 1192 DeoptimizeIf(al, instr->environment());
1193 } 1193 }
1194 } else { 1194 } else {
1195 // Test the non-zero operand for negative sign. 1195 // Test the non-zero operand for negative sign.
1196 __ cmp(ToRegister(instr->TempAt(0)), Operand(0)); 1196 __ cmp(ToRegister(instr->TempAt(0)), Operand(0));
1197 DeoptimizeIf(mi, instr->environment()); 1197 DeoptimizeIf(mi, instr->environment());
1198 } 1198 }
1199 __ bind(&done); 1199 __ bind(&done);
1200 } 1200 }
1201 } 1201 }
1202 1202
(...skipping 2624 matching lines...) Expand 10 before | Expand all | Expand 10 after
3827 } 3827 }
3828 3828
3829 3829
3830 void LCodeGen::DoLazyBailout(LLazyBailout* instr) { 3830 void LCodeGen::DoLazyBailout(LLazyBailout* instr) {
3831 // No code for lazy bailout instruction. Used to capture environment after a 3831 // No code for lazy bailout instruction. Used to capture environment after a
3832 // call for populating the safepoint data with deoptimization data. 3832 // call for populating the safepoint data with deoptimization data.
3833 } 3833 }
3834 3834
3835 3835
3836 void LCodeGen::DoDeoptimize(LDeoptimize* instr) { 3836 void LCodeGen::DoDeoptimize(LDeoptimize* instr) {
3837 DeoptimizeIf(kNoCondition, instr->environment()); 3837 DeoptimizeIf(al, instr->environment());
3838 } 3838 }
3839 3839
3840 3840
3841 void LCodeGen::DoDeleteProperty(LDeleteProperty* instr) { 3841 void LCodeGen::DoDeleteProperty(LDeleteProperty* instr) {
3842 Register object = ToRegister(instr->object()); 3842 Register object = ToRegister(instr->object());
3843 Register key = ToRegister(instr->key()); 3843 Register key = ToRegister(instr->key());
3844 __ Push(object, key); 3844 __ Push(object, key);
3845 ASSERT(instr->HasPointerMap() && instr->HasDeoptimizationEnvironment()); 3845 ASSERT(instr->HasPointerMap() && instr->HasDeoptimizationEnvironment());
3846 LPointerMap* pointers = instr->pointer_map(); 3846 LPointerMap* pointers = instr->pointer_map();
3847 LEnvironment* env = instr->deoptimization_environment(); 3847 LEnvironment* env = instr->deoptimization_environment();
(...skipping 19 matching lines...) Expand all
3867 3867
3868 3868
3869 void LCodeGen::DoOsrEntry(LOsrEntry* instr) { 3869 void LCodeGen::DoOsrEntry(LOsrEntry* instr) {
3870 Abort("DoOsrEntry unimplemented."); 3870 Abort("DoOsrEntry unimplemented.");
3871 } 3871 }
3872 3872
3873 3873
3874 #undef __ 3874 #undef __
3875 3875
3876 } } // namespace v8::internal 3876 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698