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_X87_CODE_STUBS_X87_H_ | 5 #ifndef V8_X87_CODE_STUBS_X87_H_ |
6 #define V8_X87_CODE_STUBS_X87_H_ | 6 #define V8_X87_CODE_STUBS_X87_H_ |
7 | 7 |
8 namespace v8 { | 8 namespace v8 { |
9 namespace internal { | 9 namespace internal { |
10 | 10 |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
59 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; | 59 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; |
60 | 60 |
61 NameDictionaryLookupStub(Isolate* isolate, Register dictionary, | 61 NameDictionaryLookupStub(Isolate* isolate, Register dictionary, |
62 Register result, Register index, LookupMode mode) | 62 Register result, Register index, LookupMode mode) |
63 : PlatformCodeStub(isolate) { | 63 : PlatformCodeStub(isolate) { |
64 minor_key_ = DictionaryBits::encode(dictionary.code()) | | 64 minor_key_ = DictionaryBits::encode(dictionary.code()) | |
65 ResultBits::encode(result.code()) | | 65 ResultBits::encode(result.code()) | |
66 IndexBits::encode(index.code()) | LookupModeBits::encode(mode); | 66 IndexBits::encode(index.code()) | LookupModeBits::encode(mode); |
67 } | 67 } |
68 | 68 |
69 void Generate(MacroAssembler* masm); | |
70 | |
71 static void GenerateNegativeLookup(MacroAssembler* masm, | 69 static void GenerateNegativeLookup(MacroAssembler* masm, |
72 Label* miss, | 70 Label* miss, |
73 Label* done, | 71 Label* done, |
74 Register properties, | 72 Register properties, |
75 Handle<Name> name, | 73 Handle<Name> name, |
76 Register r0); | 74 Register r0); |
77 | 75 |
78 static void GeneratePositiveLookup(MacroAssembler* masm, | 76 static void GeneratePositiveLookup(MacroAssembler* masm, |
79 Label* miss, | 77 Label* miss, |
80 Label* done, | 78 Label* done, |
(...skipping 28 matching lines...) Expand all Loading... |
109 return Register::from_code(IndexBits::decode(minor_key_)); | 107 return Register::from_code(IndexBits::decode(minor_key_)); |
110 } | 108 } |
111 | 109 |
112 LookupMode mode() const { return LookupModeBits::decode(minor_key_); } | 110 LookupMode mode() const { return LookupModeBits::decode(minor_key_); } |
113 | 111 |
114 class DictionaryBits: public BitField<int, 0, 3> {}; | 112 class DictionaryBits: public BitField<int, 0, 3> {}; |
115 class ResultBits: public BitField<int, 3, 3> {}; | 113 class ResultBits: public BitField<int, 3, 3> {}; |
116 class IndexBits: public BitField<int, 6, 3> {}; | 114 class IndexBits: public BitField<int, 6, 3> {}; |
117 class LookupModeBits: public BitField<LookupMode, 9, 1> {}; | 115 class LookupModeBits: public BitField<LookupMode, 9, 1> {}; |
118 | 116 |
119 DEFINE_CODE_STUB(NameDictionaryLookup, PlatformCodeStub); | 117 DEFINE_PLATFORM_CODE_STUB(NameDictionaryLookup, PlatformCodeStub); |
120 }; | 118 }; |
121 | 119 |
122 | 120 |
123 class RecordWriteStub: public PlatformCodeStub { | 121 class RecordWriteStub: public PlatformCodeStub { |
124 public: | 122 public: |
125 RecordWriteStub(Isolate* isolate, | 123 RecordWriteStub(Isolate* isolate, |
126 Register object, | 124 Register object, |
127 Register value, | 125 Register value, |
128 Register address, | 126 Register address, |
129 RememberedSetAction remembered_set_action) | 127 RememberedSetAction remembered_set_action) |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 friend class RecordWriteStub; | 315 friend class RecordWriteStub; |
318 }; | 316 }; |
319 | 317 |
320 enum OnNoNeedToInformIncrementalMarker { | 318 enum OnNoNeedToInformIncrementalMarker { |
321 kReturnOnNoNeedToInformIncrementalMarker, | 319 kReturnOnNoNeedToInformIncrementalMarker, |
322 kUpdateRememberedSetOnNoNeedToInformIncrementalMarker | 320 kUpdateRememberedSetOnNoNeedToInformIncrementalMarker |
323 }; | 321 }; |
324 | 322 |
325 virtual inline Major MajorKey() const FINAL OVERRIDE { return RecordWrite; } | 323 virtual inline Major MajorKey() const FINAL OVERRIDE { return RecordWrite; } |
326 | 324 |
327 void Generate(MacroAssembler* masm); | 325 virtual void Generate(MacroAssembler* masm) OVERRIDE; |
328 void GenerateIncremental(MacroAssembler* masm, Mode mode); | 326 void GenerateIncremental(MacroAssembler* masm, Mode mode); |
329 void CheckNeedsToInformIncrementalMarker( | 327 void CheckNeedsToInformIncrementalMarker( |
330 MacroAssembler* masm, | 328 MacroAssembler* masm, |
331 OnNoNeedToInformIncrementalMarker on_no_need, | 329 OnNoNeedToInformIncrementalMarker on_no_need, |
332 Mode mode); | 330 Mode mode); |
333 void InformIncrementalMarker(MacroAssembler* masm); | 331 void InformIncrementalMarker(MacroAssembler* masm); |
334 | 332 |
335 void Activate(Code* code) { | 333 void Activate(Code* code) { |
336 code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code); | 334 code->GetHeap()->incremental_marking()->ActivateGeneratedStub(code); |
337 } | 335 } |
(...skipping 21 matching lines...) Expand all Loading... |
359 | 357 |
360 RegisterAllocation regs_; | 358 RegisterAllocation regs_; |
361 | 359 |
362 DISALLOW_COPY_AND_ASSIGN(RecordWriteStub); | 360 DISALLOW_COPY_AND_ASSIGN(RecordWriteStub); |
363 }; | 361 }; |
364 | 362 |
365 | 363 |
366 } } // namespace v8::internal | 364 } } // namespace v8::internal |
367 | 365 |
368 #endif // V8_X87_CODE_STUBS_X87_H_ | 366 #endif // V8_X87_CODE_STUBS_X87_H_ |
OLD | NEW |