OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
821 ? Deoptimizer::LAZY | 821 ? Deoptimizer::LAZY |
822 : Deoptimizer::EAGER; | 822 : Deoptimizer::EAGER; |
823 Address entry = | 823 Address entry = |
824 Deoptimizer::GetDeoptimizationEntry(isolate(), id, bailout_type); | 824 Deoptimizer::GetDeoptimizationEntry(isolate(), id, bailout_type); |
825 if (entry == NULL) { | 825 if (entry == NULL) { |
826 Abort("bailout was not prepared"); | 826 Abort("bailout was not prepared"); |
827 return; | 827 return; |
828 } | 828 } |
829 | 829 |
830 ASSERT(FLAG_deopt_every_n_times < 2); // Other values not supported on MIPS. | 830 ASSERT(FLAG_deopt_every_n_times < 2); // Other values not supported on MIPS. |
831 if (FLAG_deopt_every_n_times == 1 && info_->opt_count() == id) { | 831 if (FLAG_deopt_every_n_times == 1 && |
| 832 !info()->IsStub() && |
| 833 info()->opt_count() == id) { |
832 __ Jump(entry, RelocInfo::RUNTIME_ENTRY); | 834 __ Jump(entry, RelocInfo::RUNTIME_ENTRY); |
833 return; | 835 return; |
834 } | 836 } |
835 | 837 |
836 if (FLAG_trap_on_deopt) { | 838 if (FLAG_trap_on_deopt) { |
837 Label skip; | 839 Label skip; |
838 if (cc != al) { | 840 if (cc != al) { |
839 __ Branch(&skip, NegateCondition(cc), src1, src2); | 841 __ Branch(&skip, NegateCondition(cc), src1, src2); |
840 } | 842 } |
841 __ stop("trap_on_deopt"); | 843 __ stop("trap_on_deopt"); |
(...skipping 5255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6097 __ Subu(scratch, result, scratch); | 6099 __ Subu(scratch, result, scratch); |
6098 __ lw(result, FieldMemOperand(scratch, | 6100 __ lw(result, FieldMemOperand(scratch, |
6099 FixedArray::kHeaderSize - kPointerSize)); | 6101 FixedArray::kHeaderSize - kPointerSize)); |
6100 __ bind(&done); | 6102 __ bind(&done); |
6101 } | 6103 } |
6102 | 6104 |
6103 | 6105 |
6104 #undef __ | 6106 #undef __ |
6105 | 6107 |
6106 } } // namespace v8::internal | 6108 } } // namespace v8::internal |
OLD | NEW |