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

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

Issue 5158002: Replace some hard-coded return address calculations with Call. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 10 years, 1 month 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 | src/arm/full-codegen-arm.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 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 1874 matching lines...) Expand 10 before | Expand all | Expand 10 after
1885 Condition cc = if_true ? cc_reg_ : NegateCondition(cc_reg_); 1885 Condition cc = if_true ? cc_reg_ : NegateCondition(cc_reg_);
1886 target->Branch(cc); 1886 target->Branch(cc);
1887 cc_reg_ = al; 1887 cc_reg_ = al;
1888 } 1888 }
1889 1889
1890 1890
1891 void CodeGenerator::CheckStack() { 1891 void CodeGenerator::CheckStack() {
1892 frame_->SpillAll(); 1892 frame_->SpillAll();
1893 Comment cmnt(masm_, "[ check stack"); 1893 Comment cmnt(masm_, "[ check stack");
1894 __ LoadRoot(ip, Heap::kStackLimitRootIndex); 1894 __ LoadRoot(ip, Heap::kStackLimitRootIndex);
1895 // Put the lr setup instruction in the delay slot. kInstrSize is added to
1896 // the implicit 8 byte offset that always applies to operations with pc and
1897 // gives a return address 12 bytes down.
1898 masm_->add(lr, pc, Operand(Assembler::kInstrSize));
1899 masm_->cmp(sp, Operand(ip)); 1895 masm_->cmp(sp, Operand(ip));
1900 StackCheckStub stub; 1896 StackCheckStub stub;
1901 // Call the stub if lower. 1897 // Call the stub if lower.
1902 masm_->mov(pc, 1898 masm_->mov(ip,
1903 Operand(reinterpret_cast<intptr_t>(stub.GetCode().location()), 1899 Operand(reinterpret_cast<intptr_t>(stub.GetCode().location()),
1904 RelocInfo::CODE_TARGET), 1900 RelocInfo::CODE_TARGET),
1905 LeaveCC, 1901 LeaveCC,
1906 lo); 1902 lo);
1903 masm_->Call(ip, lo);
1907 } 1904 }
1908 1905
1909 1906
1910 void CodeGenerator::VisitStatements(ZoneList<Statement*>* statements) { 1907 void CodeGenerator::VisitStatements(ZoneList<Statement*>* statements) {
1911 #ifdef DEBUG 1908 #ifdef DEBUG
1912 int original_height = frame_->height(); 1909 int original_height = frame_->height();
1913 #endif 1910 #endif
1914 for (int i = 0; frame_ != NULL && i < statements->length(); i++) { 1911 for (int i = 0; frame_ != NULL && i < statements->length(); i++) {
1915 Visit(statements->at(i)); 1912 Visit(statements->at(i));
1916 } 1913 }
(...skipping 5342 matching lines...) Expand 10 before | Expand all | Expand 10 after
7259 BinaryOpIC::GetName(runtime_operands_type_)); 7256 BinaryOpIC::GetName(runtime_operands_type_));
7260 return name_; 7257 return name_;
7261 } 7258 }
7262 7259
7263 7260
7264 #undef __ 7261 #undef __
7265 7262
7266 } } // namespace v8::internal 7263 } } // namespace v8::internal
7267 7264
7268 #endif // V8_TARGET_ARCH_ARM 7265 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « no previous file | src/arm/full-codegen-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698