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

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

Issue 12213080: Use EXTERNAL_REFERENCE instead of RUNTIME_ENTRY for deoptimization entries for ARM and MIPS (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 7 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 | « src/arm/assembler-arm-inl.h ('k') | src/assembler.h » ('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 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 816 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 : Deoptimizer::EAGER; 827 : Deoptimizer::EAGER;
828 Address entry = Deoptimizer::GetDeoptimizationEntry(id, bailout_type); 828 Address entry = Deoptimizer::GetDeoptimizationEntry(id, bailout_type);
829 if (entry == NULL) { 829 if (entry == NULL) {
830 Abort("bailout was not prepared"); 830 Abort("bailout was not prepared");
831 return; 831 return;
832 } 832 }
833 833
834 ASSERT(FLAG_deopt_every_n_times < 2); // Other values not supported on ARM. 834 ASSERT(FLAG_deopt_every_n_times < 2); // Other values not supported on ARM.
835 835
836 if (FLAG_deopt_every_n_times == 1 && info_->opt_count() == id) { 836 if (FLAG_deopt_every_n_times == 1 && info_->opt_count() == id) {
837 __ Jump(entry, RelocInfo::RUNTIME_ENTRY); 837 __ Jump(entry, RelocInfo::EXTERNAL_REFERENCE);
838 return; 838 return;
839 } 839 }
840 840
841 if (FLAG_trap_on_deopt) __ stop("trap_on_deopt", cc); 841 if (FLAG_trap_on_deopt) __ stop("trap_on_deopt", cc);
842 842
843 bool needs_lazy_deopt = info()->IsStub(); 843 bool needs_lazy_deopt = info()->IsStub();
844 ASSERT(info()->IsStub() || frame_is_built_); 844 ASSERT(info()->IsStub() || frame_is_built_);
845 if (cc == al && !needs_lazy_deopt) { 845 if (cc == al && !needs_lazy_deopt) {
846 __ Jump(entry, RelocInfo::RUNTIME_ENTRY); 846 __ Jump(entry, RelocInfo::EXTERNAL_REFERENCE);
847 } else { 847 } else {
848 // We often have several deopts to the same entry, reuse the last 848 // We often have several deopts to the same entry, reuse the last
849 // jump entry if this is the case. 849 // jump entry if this is the case.
850 if (deopt_jump_table_.is_empty() || 850 if (deopt_jump_table_.is_empty() ||
851 (deopt_jump_table_.last().address != entry) || 851 (deopt_jump_table_.last().address != entry) ||
852 (deopt_jump_table_.last().is_lazy_deopt != needs_lazy_deopt) || 852 (deopt_jump_table_.last().is_lazy_deopt != needs_lazy_deopt) ||
853 (deopt_jump_table_.last().needs_frame != !frame_is_built_)) { 853 (deopt_jump_table_.last().needs_frame != !frame_is_built_)) {
854 JumpTableEntry table_entry(entry, !frame_is_built_, needs_lazy_deopt); 854 JumpTableEntry table_entry(entry, !frame_is_built_, needs_lazy_deopt);
855 deopt_jump_table_.Add(table_entry, zone()); 855 deopt_jump_table_.Add(table_entry, zone());
856 } 856 }
(...skipping 5442 matching lines...) Expand 10 before | Expand all | Expand 10 after
6299 __ sub(scratch, result, Operand(index, LSL, kPointerSizeLog2 - kSmiTagSize)); 6299 __ sub(scratch, result, Operand(index, LSL, kPointerSizeLog2 - kSmiTagSize));
6300 __ ldr(result, FieldMemOperand(scratch, 6300 __ ldr(result, FieldMemOperand(scratch,
6301 FixedArray::kHeaderSize - kPointerSize)); 6301 FixedArray::kHeaderSize - kPointerSize));
6302 __ bind(&done); 6302 __ bind(&done);
6303 } 6303 }
6304 6304
6305 6305
6306 #undef __ 6306 #undef __
6307 6307
6308 } } // namespace v8::internal 6308 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm/assembler-arm-inl.h ('k') | src/assembler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698