OLD | NEW |
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 namespace v8 { | 8 namespace v8 { |
9 namespace internal { | 9 namespace internal { |
10 | 10 |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 | 95 |
96 RecordWriteStub(uint32_t key, Isolate* isolate) | 96 RecordWriteStub(uint32_t key, Isolate* isolate) |
97 : PlatformCodeStub(key, isolate), regs_(object(), address(), value()) {} | 97 : PlatformCodeStub(key, isolate), regs_(object(), address(), value()) {} |
98 | 98 |
99 enum Mode { | 99 enum Mode { |
100 STORE_BUFFER_ONLY, | 100 STORE_BUFFER_ONLY, |
101 INCREMENTAL, | 101 INCREMENTAL, |
102 INCREMENTAL_COMPACTION | 102 INCREMENTAL_COMPACTION |
103 }; | 103 }; |
104 | 104 |
105 bool SometimesSetsUpAFrame() OVERRIDE { return false; } | 105 bool SometimesSetsUpAFrame() override { return false; } |
106 | 106 |
107 static void PatchBranchIntoNop(MacroAssembler* masm, int pos) { | 107 static void PatchBranchIntoNop(MacroAssembler* masm, int pos) { |
108 const unsigned offset = masm->instr_at(pos) & kImm16Mask; | 108 const unsigned offset = masm->instr_at(pos) & kImm16Mask; |
109 masm->instr_at_put(pos, BNE | (zero_reg.code() << kRsShift) | | 109 masm->instr_at_put(pos, BNE | (zero_reg.code() << kRsShift) | |
110 (zero_reg.code() << kRtShift) | (offset & kImm16Mask)); | 110 (zero_reg.code() << kRtShift) | (offset & kImm16Mask)); |
111 DCHECK(Assembler::IsBne(masm->instr_at(pos))); | 111 DCHECK(Assembler::IsBne(masm->instr_at(pos))); |
112 } | 112 } |
113 | 113 |
114 static void PatchNopIntoBranch(MacroAssembler* masm, int pos) { | 114 static void PatchNopIntoBranch(MacroAssembler* masm, int pos) { |
115 const unsigned offset = masm->instr_at(pos) & kImm16Mask; | 115 const unsigned offset = masm->instr_at(pos) & kImm16Mask; |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 Register scratch1_; | 222 Register scratch1_; |
223 | 223 |
224 friend class RecordWriteStub; | 224 friend class RecordWriteStub; |
225 }; | 225 }; |
226 | 226 |
227 enum OnNoNeedToInformIncrementalMarker { | 227 enum OnNoNeedToInformIncrementalMarker { |
228 kReturnOnNoNeedToInformIncrementalMarker, | 228 kReturnOnNoNeedToInformIncrementalMarker, |
229 kUpdateRememberedSetOnNoNeedToInformIncrementalMarker | 229 kUpdateRememberedSetOnNoNeedToInformIncrementalMarker |
230 }; | 230 }; |
231 | 231 |
232 inline Major MajorKey() const FINAL { return RecordWrite; } | 232 inline Major MajorKey() const final { return RecordWrite; } |
233 | 233 |
234 void Generate(MacroAssembler* masm) OVERRIDE; | 234 void Generate(MacroAssembler* masm) override; |
235 void GenerateIncremental(MacroAssembler* masm, Mode mode); | 235 void GenerateIncremental(MacroAssembler* masm, Mode mode); |
236 void CheckNeedsToInformIncrementalMarker( | 236 void CheckNeedsToInformIncrementalMarker( |
237 MacroAssembler* masm, | 237 MacroAssembler* masm, |
238 OnNoNeedToInformIncrementalMarker on_no_need, | 238 OnNoNeedToInformIncrementalMarker on_no_need, |
239 Mode mode); | 239 Mode mode); |
240 void InformIncrementalMarker(MacroAssembler* masm); | 240 void InformIncrementalMarker(MacroAssembler* masm); |
241 | 241 |
242 void Activate(Code* code) OVERRIDE { | 242 void Activate(Code* code) override { |
243 code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code); | 243 code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code); |
244 } | 244 } |
245 | 245 |
246 Register object() const { | 246 Register object() const { |
247 return Register::from_code(ObjectBits::decode(minor_key_)); | 247 return Register::from_code(ObjectBits::decode(minor_key_)); |
248 } | 248 } |
249 | 249 |
250 Register value() const { | 250 Register value() const { |
251 return Register::from_code(ValueBits::decode(minor_key_)); | 251 return Register::from_code(ValueBits::decode(minor_key_)); |
252 } | 252 } |
(...skipping 27 matching lines...) Expand all Loading... |
280 // in the presence of compacting GC (which can move code objects) we need to | 280 // in the presence of compacting GC (which can move code objects) we need to |
281 // keep the code which called into native pinned in the memory. Currently the | 281 // keep the code which called into native pinned in the memory. Currently the |
282 // simplest approach is to generate such stub early enough so it can never be | 282 // simplest approach is to generate such stub early enough so it can never be |
283 // moved by GC | 283 // moved by GC |
284 class DirectCEntryStub: public PlatformCodeStub { | 284 class DirectCEntryStub: public PlatformCodeStub { |
285 public: | 285 public: |
286 explicit DirectCEntryStub(Isolate* isolate) : PlatformCodeStub(isolate) {} | 286 explicit DirectCEntryStub(Isolate* isolate) : PlatformCodeStub(isolate) {} |
287 void GenerateCall(MacroAssembler* masm, Register target); | 287 void GenerateCall(MacroAssembler* masm, Register target); |
288 | 288 |
289 private: | 289 private: |
290 bool NeedsImmovableCode() OVERRIDE { return true; } | 290 bool NeedsImmovableCode() override { return true; } |
291 | 291 |
292 DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR(); | 292 DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR(); |
293 DEFINE_PLATFORM_CODE_STUB(DirectCEntry, PlatformCodeStub); | 293 DEFINE_PLATFORM_CODE_STUB(DirectCEntry, PlatformCodeStub); |
294 }; | 294 }; |
295 | 295 |
296 | 296 |
297 class NameDictionaryLookupStub: public PlatformCodeStub { | 297 class NameDictionaryLookupStub: public PlatformCodeStub { |
298 public: | 298 public: |
299 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; | 299 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; |
300 | 300 |
(...skipping 11 matching lines...) Expand all Loading... |
312 Register scratch0); | 312 Register scratch0); |
313 | 313 |
314 static void GeneratePositiveLookup(MacroAssembler* masm, | 314 static void GeneratePositiveLookup(MacroAssembler* masm, |
315 Label* miss, | 315 Label* miss, |
316 Label* done, | 316 Label* done, |
317 Register elements, | 317 Register elements, |
318 Register name, | 318 Register name, |
319 Register r0, | 319 Register r0, |
320 Register r1); | 320 Register r1); |
321 | 321 |
322 bool SometimesSetsUpAFrame() OVERRIDE { return false; } | 322 bool SometimesSetsUpAFrame() override { return false; } |
323 | 323 |
324 private: | 324 private: |
325 static const int kInlinedProbes = 4; | 325 static const int kInlinedProbes = 4; |
326 static const int kTotalProbes = 20; | 326 static const int kTotalProbes = 20; |
327 | 327 |
328 static const int kCapacityOffset = | 328 static const int kCapacityOffset = |
329 NameDictionary::kHeaderSize + | 329 NameDictionary::kHeaderSize + |
330 NameDictionary::kCapacityIndex * kPointerSize; | 330 NameDictionary::kCapacityIndex * kPointerSize; |
331 | 331 |
332 static const int kElementsStartOffset = | 332 static const int kElementsStartOffset = |
333 NameDictionary::kHeaderSize + | 333 NameDictionary::kHeaderSize + |
334 NameDictionary::kElementsStartIndex * kPointerSize; | 334 NameDictionary::kElementsStartIndex * kPointerSize; |
335 | 335 |
336 LookupMode mode() const { return LookupModeBits::decode(minor_key_); } | 336 LookupMode mode() const { return LookupModeBits::decode(minor_key_); } |
337 | 337 |
338 class LookupModeBits: public BitField<LookupMode, 0, 1> {}; | 338 class LookupModeBits: public BitField<LookupMode, 0, 1> {}; |
339 | 339 |
340 DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR(); | 340 DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR(); |
341 DEFINE_PLATFORM_CODE_STUB(NameDictionaryLookup, PlatformCodeStub); | 341 DEFINE_PLATFORM_CODE_STUB(NameDictionaryLookup, PlatformCodeStub); |
342 }; | 342 }; |
343 | 343 |
344 | 344 |
345 } } // namespace v8::internal | 345 } } // namespace v8::internal |
346 | 346 |
347 #endif // V8_MIPS_CODE_STUBS_ARM_H_ | 347 #endif // V8_MIPS_CODE_STUBS_ARM_H_ |
OLD | NEW |