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

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

Issue 369873002: MIPS: Start using OStreams. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 5 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 | src/mips/code-stubs-mips.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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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_MIPS_CODE_STUBS_ARM_H_ 5 #ifndef V8_MIPS_CODE_STUBS_ARM_H_
6 #define V8_MIPS_CODE_STUBS_ARM_H_ 6 #define V8_MIPS_CODE_STUBS_ARM_H_
7 7
8 #include "src/ic-inl.h" 8 #include "src/ic-inl.h"
9 9
10 10
(...skipping 10 matching lines...) Expand all
21 : PlatformCodeStub(isolate), save_doubles_(save_fp) {} 21 : PlatformCodeStub(isolate), save_doubles_(save_fp) {}
22 22
23 void Generate(MacroAssembler* masm); 23 void Generate(MacroAssembler* masm);
24 24
25 static void GenerateFixedRegStubsAheadOfTime(Isolate* isolate); 25 static void GenerateFixedRegStubsAheadOfTime(Isolate* isolate);
26 virtual bool SometimesSetsUpAFrame() { return false; } 26 virtual bool SometimesSetsUpAFrame() { return false; }
27 27
28 private: 28 private:
29 SaveFPRegsMode save_doubles_; 29 SaveFPRegsMode save_doubles_;
30 30
31 Major MajorKey() { return StoreBufferOverflow; } 31 Major MajorKey() const { return StoreBufferOverflow; }
32 int MinorKey() { return (save_doubles_ == kSaveFPRegs) ? 1 : 0; } 32 int MinorKey() const { return (save_doubles_ == kSaveFPRegs) ? 1 : 0; }
33 }; 33 };
34 34
35 35
36 class StringHelper : public AllStatic { 36 class StringHelper : public AllStatic {
37 public: 37 public:
38 // Generate code for copying a large number of characters. This function 38 // Generate code for copying a large number of characters. This function
39 // is allowed to spend extra time setting up conditions to make copying 39 // is allowed to spend extra time setting up conditions to make copying
40 // faster. Copying of overlapping regions is not supported. 40 // faster. Copying of overlapping regions is not supported.
41 // Dest register ends at the position after the last character written. 41 // Dest register ends at the position after the last character written.
42 static void GenerateCopyCharacters(MacroAssembler* masm, 42 static void GenerateCopyCharacters(MacroAssembler* masm,
(...skipping 19 matching lines...) Expand all
62 private: 62 private:
63 DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper); 63 DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper);
64 }; 64 };
65 65
66 66
67 class SubStringStub: public PlatformCodeStub { 67 class SubStringStub: public PlatformCodeStub {
68 public: 68 public:
69 explicit SubStringStub(Isolate* isolate) : PlatformCodeStub(isolate) {} 69 explicit SubStringStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
70 70
71 private: 71 private:
72 Major MajorKey() { return SubString; } 72 Major MajorKey() const { return SubString; }
73 int MinorKey() { return 0; } 73 int MinorKey() const { return 0; }
74 74
75 void Generate(MacroAssembler* masm); 75 void Generate(MacroAssembler* masm);
76 }; 76 };
77 77
78
78 class StoreRegistersStateStub: public PlatformCodeStub { 79 class StoreRegistersStateStub: public PlatformCodeStub {
79 public: 80 public:
80 explicit StoreRegistersStateStub(Isolate* isolate, SaveFPRegsMode with_fp) 81 explicit StoreRegistersStateStub(Isolate* isolate, SaveFPRegsMode with_fp)
81 : PlatformCodeStub(isolate), save_doubles_(with_fp) {} 82 : PlatformCodeStub(isolate), save_doubles_(with_fp) {}
82 83
83 static void GenerateAheadOfTime(Isolate* isolate); 84 static void GenerateAheadOfTime(Isolate* isolate);
84 private: 85 private:
85 Major MajorKey() { return StoreRegistersState; } 86 Major MajorKey() const { return StoreRegistersState; }
86 int MinorKey() { return (save_doubles_ == kSaveFPRegs) ? 1 : 0; } 87 int MinorKey() const { return (save_doubles_ == kSaveFPRegs) ? 1 : 0; }
87 SaveFPRegsMode save_doubles_; 88 SaveFPRegsMode save_doubles_;
88 89
89 void Generate(MacroAssembler* masm); 90 void Generate(MacroAssembler* masm);
90 }; 91 };
91 92
92 class RestoreRegistersStateStub: public PlatformCodeStub { 93 class RestoreRegistersStateStub: public PlatformCodeStub {
93 public: 94 public:
94 explicit RestoreRegistersStateStub(Isolate* isolate, SaveFPRegsMode with_fp) 95 explicit RestoreRegistersStateStub(Isolate* isolate, SaveFPRegsMode with_fp)
95 : PlatformCodeStub(isolate), save_doubles_(with_fp) {} 96 : PlatformCodeStub(isolate), save_doubles_(with_fp) {}
96 97
97 static void GenerateAheadOfTime(Isolate* isolate); 98 static void GenerateAheadOfTime(Isolate* isolate);
98 private: 99 private:
99 Major MajorKey() { return RestoreRegistersState; } 100 Major MajorKey() const { return RestoreRegistersState; }
100 int MinorKey() { return (save_doubles_ == kSaveFPRegs) ? 1 : 0; } 101 int MinorKey() const { return (save_doubles_ == kSaveFPRegs) ? 1 : 0; }
101 SaveFPRegsMode save_doubles_; 102 SaveFPRegsMode save_doubles_;
102 103
103 void Generate(MacroAssembler* masm); 104 void Generate(MacroAssembler* masm);
104 }; 105 };
105 106
106 class StringCompareStub: public PlatformCodeStub { 107 class StringCompareStub: public PlatformCodeStub {
107 public: 108 public:
108 explicit StringCompareStub(Isolate* isolate) : PlatformCodeStub(isolate) { } 109 explicit StringCompareStub(Isolate* isolate) : PlatformCodeStub(isolate) { }
109 110
110 // Compare two flat ASCII strings and returns result in v0. 111 // Compare two flat ASCII strings and returns result in v0.
111 static void GenerateCompareFlatAsciiStrings(MacroAssembler* masm, 112 static void GenerateCompareFlatAsciiStrings(MacroAssembler* masm,
112 Register left, 113 Register left,
113 Register right, 114 Register right,
114 Register scratch1, 115 Register scratch1,
115 Register scratch2, 116 Register scratch2,
116 Register scratch3, 117 Register scratch3,
117 Register scratch4); 118 Register scratch4);
118 119
119 // Compares two flat ASCII strings for equality and returns result 120 // Compares two flat ASCII strings for equality and returns result
120 // in v0. 121 // in v0.
121 static void GenerateFlatAsciiStringEquals(MacroAssembler* masm, 122 static void GenerateFlatAsciiStringEquals(MacroAssembler* masm,
122 Register left, 123 Register left,
123 Register right, 124 Register right,
124 Register scratch1, 125 Register scratch1,
125 Register scratch2, 126 Register scratch2,
126 Register scratch3); 127 Register scratch3);
127 128
128 private: 129 private:
129 virtual Major MajorKey() { return StringCompare; } 130 virtual Major MajorKey() const { return StringCompare; }
130 virtual int MinorKey() { return 0; } 131 virtual int MinorKey() const { return 0; }
131 virtual void Generate(MacroAssembler* masm); 132 virtual void Generate(MacroAssembler* masm);
132 133
133 static void GenerateAsciiCharsCompareLoop(MacroAssembler* masm, 134 static void GenerateAsciiCharsCompareLoop(MacroAssembler* masm,
134 Register left, 135 Register left,
135 Register right, 136 Register right,
136 Register length, 137 Register length,
137 Register scratch1, 138 Register scratch1,
138 Register scratch2, 139 Register scratch2,
139 Register scratch3, 140 Register scratch3,
140 Label* chars_not_equal); 141 Label* chars_not_equal);
(...skipping 28 matching lines...) Expand all
169 Register the_heap_number_; 170 Register the_heap_number_;
170 Register scratch_; 171 Register scratch_;
171 Register sign_; 172 Register sign_;
172 173
173 // Minor key encoding in 16 bits. 174 // Minor key encoding in 16 bits.
174 class IntRegisterBits: public BitField<int, 0, 4> {}; 175 class IntRegisterBits: public BitField<int, 0, 4> {};
175 class HeapNumberRegisterBits: public BitField<int, 4, 4> {}; 176 class HeapNumberRegisterBits: public BitField<int, 4, 4> {};
176 class ScratchRegisterBits: public BitField<int, 8, 4> {}; 177 class ScratchRegisterBits: public BitField<int, 8, 4> {};
177 class SignRegisterBits: public BitField<int, 12, 4> {}; 178 class SignRegisterBits: public BitField<int, 12, 4> {};
178 179
179 Major MajorKey() { return WriteInt32ToHeapNumber; } 180 Major MajorKey() const { return WriteInt32ToHeapNumber; }
180 int MinorKey() { 181 int MinorKey() const {
181 // Encode the parameters in a unique 16 bit value. 182 // Encode the parameters in a unique 16 bit value.
182 return IntRegisterBits::encode(the_int_.code()) 183 return IntRegisterBits::encode(the_int_.code())
183 | HeapNumberRegisterBits::encode(the_heap_number_.code()) 184 | HeapNumberRegisterBits::encode(the_heap_number_.code())
184 | ScratchRegisterBits::encode(scratch_.code()) 185 | ScratchRegisterBits::encode(scratch_.code())
185 | SignRegisterBits::encode(sign_.code()); 186 | SignRegisterBits::encode(sign_.code());
186 } 187 }
187 188
188 void Generate(MacroAssembler* masm); 189 void Generate(MacroAssembler* masm);
189 }; 190 };
190 191
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 }; 341 };
341 342
342 void Generate(MacroAssembler* masm); 343 void Generate(MacroAssembler* masm);
343 void GenerateIncremental(MacroAssembler* masm, Mode mode); 344 void GenerateIncremental(MacroAssembler* masm, Mode mode);
344 void CheckNeedsToInformIncrementalMarker( 345 void CheckNeedsToInformIncrementalMarker(
345 MacroAssembler* masm, 346 MacroAssembler* masm,
346 OnNoNeedToInformIncrementalMarker on_no_need, 347 OnNoNeedToInformIncrementalMarker on_no_need,
347 Mode mode); 348 Mode mode);
348 void InformIncrementalMarker(MacroAssembler* masm); 349 void InformIncrementalMarker(MacroAssembler* masm);
349 350
350 Major MajorKey() { return RecordWrite; } 351 Major MajorKey() const { return RecordWrite; }
351 352
352 int MinorKey() { 353 int MinorKey() const {
353 return ObjectBits::encode(object_.code()) | 354 return ObjectBits::encode(object_.code()) |
354 ValueBits::encode(value_.code()) | 355 ValueBits::encode(value_.code()) |
355 AddressBits::encode(address_.code()) | 356 AddressBits::encode(address_.code()) |
356 RememberedSetActionBits::encode(remembered_set_action_) | 357 RememberedSetActionBits::encode(remembered_set_action_) |
357 SaveFPRegsModeBits::encode(save_fp_regs_mode_); 358 SaveFPRegsModeBits::encode(save_fp_regs_mode_);
358 } 359 }
359 360
360 void Activate(Code* code) { 361 void Activate(Code* code) {
361 code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code); 362 code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code);
362 } 363 }
(...skipping 19 matching lines...) Expand all
382 // keep the code which called into native pinned in the memory. Currently the 383 // keep the code which called into native pinned in the memory. Currently the
383 // simplest approach is to generate such stub early enough so it can never be 384 // simplest approach is to generate such stub early enough so it can never be
384 // moved by GC 385 // moved by GC
385 class DirectCEntryStub: public PlatformCodeStub { 386 class DirectCEntryStub: public PlatformCodeStub {
386 public: 387 public:
387 explicit DirectCEntryStub(Isolate* isolate) : PlatformCodeStub(isolate) {} 388 explicit DirectCEntryStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
388 void Generate(MacroAssembler* masm); 389 void Generate(MacroAssembler* masm);
389 void GenerateCall(MacroAssembler* masm, Register target); 390 void GenerateCall(MacroAssembler* masm, Register target);
390 391
391 private: 392 private:
392 Major MajorKey() { return DirectCEntry; } 393 Major MajorKey() const { return DirectCEntry; }
393 int MinorKey() { return 0; } 394 int MinorKey() const { return 0; }
394 395
395 bool NeedsImmovableCode() { return true; } 396 bool NeedsImmovableCode() { return true; }
396 }; 397 };
397 398
398 399
399 class NameDictionaryLookupStub: public PlatformCodeStub { 400 class NameDictionaryLookupStub: public PlatformCodeStub {
400 public: 401 public:
401 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; 402 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP };
402 403
403 NameDictionaryLookupStub(Isolate* isolate, LookupMode mode) 404 NameDictionaryLookupStub(Isolate* isolate, LookupMode mode)
(...skipping 24 matching lines...) Expand all
428 static const int kTotalProbes = 20; 429 static const int kTotalProbes = 20;
429 430
430 static const int kCapacityOffset = 431 static const int kCapacityOffset =
431 NameDictionary::kHeaderSize + 432 NameDictionary::kHeaderSize +
432 NameDictionary::kCapacityIndex * kPointerSize; 433 NameDictionary::kCapacityIndex * kPointerSize;
433 434
434 static const int kElementsStartOffset = 435 static const int kElementsStartOffset =
435 NameDictionary::kHeaderSize + 436 NameDictionary::kHeaderSize +
436 NameDictionary::kElementsStartIndex * kPointerSize; 437 NameDictionary::kElementsStartIndex * kPointerSize;
437 438
438 Major MajorKey() { return NameDictionaryLookup; } 439 Major MajorKey() const { return NameDictionaryLookup; }
439 440
440 int MinorKey() { 441 int MinorKey() const { return LookupModeBits::encode(mode_); }
441 return LookupModeBits::encode(mode_);
442 }
443 442
444 class LookupModeBits: public BitField<LookupMode, 0, 1> {}; 443 class LookupModeBits: public BitField<LookupMode, 0, 1> {};
445 444
446 LookupMode mode_; 445 LookupMode mode_;
447 }; 446 };
448 447
449 448
450 } } // namespace v8::internal 449 } } // namespace v8::internal
451 450
452 #endif // V8_MIPS_CODE_STUBS_ARM_H_ 451 #endif // V8_MIPS_CODE_STUBS_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/mips/code-stubs-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698