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

Side by Side Diff: src/ppc/code-stubs-ppc.h

Issue 1271583002: PPC: Clean up register save/restore logic. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « src/compiler/ppc/code-generator-ppc.cc ('k') | src/ppc/code-stubs-ppc.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_PPC_CODE_STUBS_PPC_H_ 5 #ifndef V8_PPC_CODE_STUBS_PPC_H_
6 #define V8_PPC_CODE_STUBS_PPC_H_ 6 #define V8_PPC_CODE_STUBS_PPC_H_
7 7
8 namespace v8 { 8 namespace v8 {
9 namespace internal { 9 namespace internal {
10 10
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 174
175 // If we have to call into C then we need to save and restore all caller- 175 // If we have to call into C then we need to save and restore all caller-
176 // saved registers that were not already preserved. The scratch registers 176 // saved registers that were not already preserved. The scratch registers
177 // will be restored by other means so we don't bother pushing them here. 177 // will be restored by other means so we don't bother pushing them here.
178 void SaveCallerSaveRegisters(MacroAssembler* masm, SaveFPRegsMode mode) { 178 void SaveCallerSaveRegisters(MacroAssembler* masm, SaveFPRegsMode mode) {
179 masm->mflr(r0); 179 masm->mflr(r0);
180 masm->push(r0); 180 masm->push(r0);
181 masm->MultiPush(kJSCallerSaved & ~scratch1_.bit()); 181 masm->MultiPush(kJSCallerSaved & ~scratch1_.bit());
182 if (mode == kSaveFPRegs) { 182 if (mode == kSaveFPRegs) {
183 // Save all volatile FP registers except d0. 183 // Save all volatile FP registers except d0.
184 masm->SaveFPRegs(sp, 1, DoubleRegister::kNumVolatileRegisters - 1); 184 masm->MultiPushDoubles(kCallerSavedDoubles & ~d0.bit());
185 } 185 }
186 } 186 }
187 187
188 inline void RestoreCallerSaveRegisters(MacroAssembler* masm, 188 inline void RestoreCallerSaveRegisters(MacroAssembler* masm,
189 SaveFPRegsMode mode) { 189 SaveFPRegsMode mode) {
190 if (mode == kSaveFPRegs) { 190 if (mode == kSaveFPRegs) {
191 // Restore all volatile FP registers except d0. 191 // Restore all volatile FP registers except d0.
192 masm->RestoreFPRegs(sp, 1, DoubleRegister::kNumVolatileRegisters - 1); 192 masm->MultiPopDoubles(kCallerSavedDoubles & ~d0.bit());
193 } 193 }
194 masm->MultiPop(kJSCallerSaved & ~scratch1_.bit()); 194 masm->MultiPop(kJSCallerSaved & ~scratch1_.bit());
195 masm->pop(r0); 195 masm->pop(r0);
196 masm->mtlr(r0); 196 masm->mtlr(r0);
197 } 197 }
198 198
199 inline Register object() { return object_; } 199 inline Register object() { return object_; }
200 inline Register address() { return address_; } 200 inline Register address() { return address_; }
201 inline Register scratch0() { return scratch0_; } 201 inline Register scratch0() { return scratch0_; }
202 inline Register scratch1() { return scratch1_; } 202 inline Register scratch1() { return scratch1_; }
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 316
317 class LookupModeBits : public BitField<LookupMode, 0, 1> {}; 317 class LookupModeBits : public BitField<LookupMode, 0, 1> {};
318 318
319 DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR(); 319 DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR();
320 DEFINE_PLATFORM_CODE_STUB(NameDictionaryLookup, PlatformCodeStub); 320 DEFINE_PLATFORM_CODE_STUB(NameDictionaryLookup, PlatformCodeStub);
321 }; 321 };
322 } 322 }
323 } // namespace v8::internal 323 } // namespace v8::internal
324 324
325 #endif // V8_PPC_CODE_STUBS_PPC_H_ 325 #endif // V8_PPC_CODE_STUBS_PPC_H_
OLDNEW
« no previous file with comments | « src/compiler/ppc/code-generator-ppc.cc ('k') | src/ppc/code-stubs-ppc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698