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

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

Issue 252383005: MIPS: CodeStubs contain their corresponding Isolate* now. (part 1) (Closed) Base URL: https://github.com/v8/v8.git@gbl
Patch Set: Created 6 years, 8 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/mips/builtins-mips.cc ('k') | 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 // 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 22 matching lines...) Expand all
33 33
34 namespace v8 { 34 namespace v8 {
35 namespace internal { 35 namespace internal {
36 36
37 37
38 void ArrayNativeCode(MacroAssembler* masm, Label* call_generic_code); 38 void ArrayNativeCode(MacroAssembler* masm, Label* call_generic_code);
39 39
40 40
41 class StoreBufferOverflowStub: public PlatformCodeStub { 41 class StoreBufferOverflowStub: public PlatformCodeStub {
42 public: 42 public:
43 explicit StoreBufferOverflowStub(SaveFPRegsMode save_fp) 43 StoreBufferOverflowStub(Isolate* isolate, SaveFPRegsMode save_fp)
44 : save_doubles_(save_fp) {} 44 : PlatformCodeStub(isolate), save_doubles_(save_fp) {}
45 45
46 void Generate(MacroAssembler* masm); 46 void Generate(MacroAssembler* masm);
47 47
48 static void GenerateFixedRegStubsAheadOfTime(Isolate* isolate); 48 static void GenerateFixedRegStubsAheadOfTime(Isolate* isolate);
49 virtual bool SometimesSetsUpAFrame() { return false; } 49 virtual bool SometimesSetsUpAFrame() { return false; }
50 50
51 private: 51 private:
52 SaveFPRegsMode save_doubles_; 52 SaveFPRegsMode save_doubles_;
53 53
54 Major MajorKey() { return StoreBufferOverflow; } 54 Major MajorKey() { return StoreBufferOverflow; }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 static void GenerateHashGetHash(MacroAssembler* masm, 86 static void GenerateHashGetHash(MacroAssembler* masm,
87 Register hash); 87 Register hash);
88 88
89 private: 89 private:
90 DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper); 90 DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper);
91 }; 91 };
92 92
93 93
94 class SubStringStub: public PlatformCodeStub { 94 class SubStringStub: public PlatformCodeStub {
95 public: 95 public:
96 SubStringStub() {} 96 explicit SubStringStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
97 97
98 private: 98 private:
99 Major MajorKey() { return SubString; } 99 Major MajorKey() { return SubString; }
100 int MinorKey() { return 0; } 100 int MinorKey() { return 0; }
101 101
102 void Generate(MacroAssembler* masm); 102 void Generate(MacroAssembler* masm);
103 }; 103 };
104 104
105 class StoreRegistersStateStub: public PlatformCodeStub { 105 class StoreRegistersStateStub: public PlatformCodeStub {
106 public: 106 public:
107 explicit StoreRegistersStateStub(SaveFPRegsMode with_fp) 107 explicit StoreRegistersStateStub(Isolate* isolate, SaveFPRegsMode with_fp)
108 : save_doubles_(with_fp) {} 108 : PlatformCodeStub(isolate), save_doubles_(with_fp) {}
109 109
110 static void GenerateAheadOfTime(Isolate* isolate); 110 static void GenerateAheadOfTime(Isolate* isolate);
111 private: 111 private:
112 Major MajorKey() { return StoreRegistersState; } 112 Major MajorKey() { return StoreRegistersState; }
113 int MinorKey() { return (save_doubles_ == kSaveFPRegs) ? 1 : 0; } 113 int MinorKey() { return (save_doubles_ == kSaveFPRegs) ? 1 : 0; }
114 SaveFPRegsMode save_doubles_; 114 SaveFPRegsMode save_doubles_;
115 115
116 void Generate(MacroAssembler* masm); 116 void Generate(MacroAssembler* masm);
117 }; 117 };
118 118
119 class RestoreRegistersStateStub: public PlatformCodeStub { 119 class RestoreRegistersStateStub: public PlatformCodeStub {
120 public: 120 public:
121 explicit RestoreRegistersStateStub(SaveFPRegsMode with_fp) 121 explicit RestoreRegistersStateStub(Isolate* isolate, SaveFPRegsMode with_fp)
122 : save_doubles_(with_fp) {} 122 : PlatformCodeStub(isolate), save_doubles_(with_fp) {}
123 123
124 static void GenerateAheadOfTime(Isolate* isolate); 124 static void GenerateAheadOfTime(Isolate* isolate);
125 private: 125 private:
126 Major MajorKey() { return RestoreRegistersState; } 126 Major MajorKey() { return RestoreRegistersState; }
127 int MinorKey() { return (save_doubles_ == kSaveFPRegs) ? 1 : 0; } 127 int MinorKey() { return (save_doubles_ == kSaveFPRegs) ? 1 : 0; }
128 SaveFPRegsMode save_doubles_; 128 SaveFPRegsMode save_doubles_;
129 129
130 void Generate(MacroAssembler* masm); 130 void Generate(MacroAssembler* masm);
131 }; 131 };
132 132
133 class StringCompareStub: public PlatformCodeStub { 133 class StringCompareStub: public PlatformCodeStub {
134 public: 134 public:
135 StringCompareStub() { } 135 explicit StringCompareStub(Isolate* isolate) : PlatformCodeStub(isolate) { }
136 136
137 // Compare two flat ASCII strings and returns result in v0. 137 // Compare two flat ASCII strings and returns result in v0.
138 static void GenerateCompareFlatAsciiStrings(MacroAssembler* masm, 138 static void GenerateCompareFlatAsciiStrings(MacroAssembler* masm,
139 Register left, 139 Register left,
140 Register right, 140 Register right,
141 Register scratch1, 141 Register scratch1,
142 Register scratch2, 142 Register scratch2,
143 Register scratch3, 143 Register scratch3,
144 Register scratch4); 144 Register scratch4);
145 145
(...skipping 20 matching lines...) Expand all
166 Register scratch3, 166 Register scratch3,
167 Label* chars_not_equal); 167 Label* chars_not_equal);
168 }; 168 };
169 169
170 170
171 // This stub can convert a signed int32 to a heap number (double). It does 171 // This stub can convert a signed int32 to a heap number (double). It does
172 // not work for int32s that are in Smi range! No GC occurs during this stub 172 // not work for int32s that are in Smi range! No GC occurs during this stub
173 // so you don't have to set up the frame. 173 // so you don't have to set up the frame.
174 class WriteInt32ToHeapNumberStub : public PlatformCodeStub { 174 class WriteInt32ToHeapNumberStub : public PlatformCodeStub {
175 public: 175 public:
176 WriteInt32ToHeapNumberStub(Register the_int, 176 WriteInt32ToHeapNumberStub(Isolate* isolate,
177 Register the_int,
177 Register the_heap_number, 178 Register the_heap_number,
178 Register scratch, 179 Register scratch,
179 Register scratch2) 180 Register scratch2)
180 : the_int_(the_int), 181 : PlatformCodeStub(isolate),
182 the_int_(the_int),
181 the_heap_number_(the_heap_number), 183 the_heap_number_(the_heap_number),
182 scratch_(scratch), 184 scratch_(scratch),
183 sign_(scratch2) { 185 sign_(scratch2) {
184 ASSERT(IntRegisterBits::is_valid(the_int_.code())); 186 ASSERT(IntRegisterBits::is_valid(the_int_.code()));
185 ASSERT(HeapNumberRegisterBits::is_valid(the_heap_number_.code())); 187 ASSERT(HeapNumberRegisterBits::is_valid(the_heap_number_.code()));
186 ASSERT(ScratchRegisterBits::is_valid(scratch_.code())); 188 ASSERT(ScratchRegisterBits::is_valid(scratch_.code()));
187 ASSERT(SignRegisterBits::is_valid(sign_.code())); 189 ASSERT(SignRegisterBits::is_valid(sign_.code()));
188 } 190 }
189 191
190 static void GenerateFixedRegStubsAheadOfTime(Isolate* isolate); 192 static void GenerateFixedRegStubsAheadOfTime(Isolate* isolate);
(...skipping 18 matching lines...) Expand all
209 | ScratchRegisterBits::encode(scratch_.code()) 211 | ScratchRegisterBits::encode(scratch_.code())
210 | SignRegisterBits::encode(sign_.code()); 212 | SignRegisterBits::encode(sign_.code());
211 } 213 }
212 214
213 void Generate(MacroAssembler* masm); 215 void Generate(MacroAssembler* masm);
214 }; 216 };
215 217
216 218
217 class RecordWriteStub: public PlatformCodeStub { 219 class RecordWriteStub: public PlatformCodeStub {
218 public: 220 public:
219 RecordWriteStub(Register object, 221 RecordWriteStub(Isolate* isolate,
222 Register object,
220 Register value, 223 Register value,
221 Register address, 224 Register address,
222 RememberedSetAction remembered_set_action, 225 RememberedSetAction remembered_set_action,
223 SaveFPRegsMode fp_mode) 226 SaveFPRegsMode fp_mode)
224 : object_(object), 227 : PlatformCodeStub(isolate),
228 object_(object),
225 value_(value), 229 value_(value),
226 address_(address), 230 address_(address),
227 remembered_set_action_(remembered_set_action), 231 remembered_set_action_(remembered_set_action),
228 save_fp_regs_mode_(fp_mode), 232 save_fp_regs_mode_(fp_mode),
229 regs_(object, // An input reg. 233 regs_(object, // An input reg.
230 address, // An input reg. 234 address, // An input reg.
231 value) { // One scratch reg. 235 value) { // One scratch reg.
232 } 236 }
233 237
234 enum Mode { 238 enum Mode {
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 }; 403 };
400 404
401 405
402 // Trampoline stub to call into native code. To call safely into native code 406 // Trampoline stub to call into native code. To call safely into native code
403 // in the presence of compacting GC (which can move code objects) we need to 407 // in the presence of compacting GC (which can move code objects) we need to
404 // keep the code which called into native pinned in the memory. Currently the 408 // keep the code which called into native pinned in the memory. Currently the
405 // simplest approach is to generate such stub early enough so it can never be 409 // simplest approach is to generate such stub early enough so it can never be
406 // moved by GC 410 // moved by GC
407 class DirectCEntryStub: public PlatformCodeStub { 411 class DirectCEntryStub: public PlatformCodeStub {
408 public: 412 public:
409 DirectCEntryStub() {} 413 explicit DirectCEntryStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
410 void Generate(MacroAssembler* masm); 414 void Generate(MacroAssembler* masm);
411 void GenerateCall(MacroAssembler* masm, Register target); 415 void GenerateCall(MacroAssembler* masm, Register target);
412 416
413 private: 417 private:
414 Major MajorKey() { return DirectCEntry; } 418 Major MajorKey() { return DirectCEntry; }
415 int MinorKey() { return 0; } 419 int MinorKey() { return 0; }
416 420
417 bool NeedsImmovableCode() { return true; } 421 bool NeedsImmovableCode() { return true; }
418 }; 422 };
419 423
420 424
421 class NameDictionaryLookupStub: public PlatformCodeStub { 425 class NameDictionaryLookupStub: public PlatformCodeStub {
422 public: 426 public:
423 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; 427 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP };
424 428
425 explicit NameDictionaryLookupStub(LookupMode mode) : mode_(mode) { } 429 NameDictionaryLookupStub(Isolate* isolate, LookupMode mode)
430 : PlatformCodeStub(isolate), mode_(mode) { }
426 431
427 void Generate(MacroAssembler* masm); 432 void Generate(MacroAssembler* masm);
428 433
429 static void GenerateNegativeLookup(MacroAssembler* masm, 434 static void GenerateNegativeLookup(MacroAssembler* masm,
430 Label* miss, 435 Label* miss,
431 Label* done, 436 Label* done,
432 Register receiver, 437 Register receiver,
433 Register properties, 438 Register properties,
434 Handle<Name> name, 439 Handle<Name> name,
435 Register scratch0); 440 Register scratch0);
(...skipping 28 matching lines...) Expand all
464 469
465 class LookupModeBits: public BitField<LookupMode, 0, 1> {}; 470 class LookupModeBits: public BitField<LookupMode, 0, 1> {};
466 471
467 LookupMode mode_; 472 LookupMode mode_;
468 }; 473 };
469 474
470 475
471 } } // namespace v8::internal 476 } } // namespace v8::internal
472 477
473 #endif // V8_MIPS_CODE_STUBS_ARM_H_ 478 #endif // V8_MIPS_CODE_STUBS_ARM_H_
OLDNEW
« no previous file with comments | « src/mips/builtins-mips.cc ('k') | src/mips/code-stubs-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698