| OLD | NEW |
| 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 24 matching lines...) Expand all Loading... |
| 35 namespace internal { | 35 namespace internal { |
| 36 | 36 |
| 37 | 37 |
| 38 void ArrayNativeCode(MacroAssembler* masm, | 38 void ArrayNativeCode(MacroAssembler* masm, |
| 39 bool construct_call, | 39 bool construct_call, |
| 40 Label* call_generic_code); | 40 Label* call_generic_code); |
| 41 | 41 |
| 42 | 42 |
| 43 class StoreBufferOverflowStub: public PlatformCodeStub { | 43 class StoreBufferOverflowStub: public PlatformCodeStub { |
| 44 public: | 44 public: |
| 45 explicit StoreBufferOverflowStub(SaveFPRegsMode save_fp) | 45 StoreBufferOverflowStub(Isolate* isolate, SaveFPRegsMode save_fp) |
| 46 : save_doubles_(save_fp) { | 46 : PlatformCodeStub(isolate), save_doubles_(save_fp) { |
| 47 ASSERT(CpuFeatures::IsSafeForSnapshot(SSE2) || save_fp == kDontSaveFPRegs); | 47 ASSERT(CpuFeatures::IsSafeForSnapshot(SSE2) || save_fp == kDontSaveFPRegs); |
| 48 } | 48 } |
| 49 | 49 |
| 50 void Generate(MacroAssembler* masm); | 50 void Generate(MacroAssembler* masm); |
| 51 | 51 |
| 52 static void GenerateFixedRegStubsAheadOfTime(Isolate* isolate); | 52 static void GenerateFixedRegStubsAheadOfTime(Isolate* isolate); |
| 53 virtual bool SometimesSetsUpAFrame() { return false; } | 53 virtual bool SometimesSetsUpAFrame() { return false; } |
| 54 | 54 |
| 55 private: | 55 private: |
| 56 SaveFPRegsMode save_doubles_; | 56 SaveFPRegsMode save_doubles_; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 85 Register hash, | 85 Register hash, |
| 86 Register scratch); | 86 Register scratch); |
| 87 | 87 |
| 88 private: | 88 private: |
| 89 DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper); | 89 DISALLOW_IMPLICIT_CONSTRUCTORS(StringHelper); |
| 90 }; | 90 }; |
| 91 | 91 |
| 92 | 92 |
| 93 class SubStringStub: public PlatformCodeStub { | 93 class SubStringStub: public PlatformCodeStub { |
| 94 public: | 94 public: |
| 95 SubStringStub() {} | 95 explicit SubStringStub(Isolate* isolate) : PlatformCodeStub(isolate) {} |
| 96 | 96 |
| 97 private: | 97 private: |
| 98 Major MajorKey() { return SubString; } | 98 Major MajorKey() { return SubString; } |
| 99 int MinorKey() { return 0; } | 99 int MinorKey() { return 0; } |
| 100 | 100 |
| 101 void Generate(MacroAssembler* masm); | 101 void Generate(MacroAssembler* masm); |
| 102 }; | 102 }; |
| 103 | 103 |
| 104 | 104 |
| 105 class StringCompareStub: public PlatformCodeStub { | 105 class StringCompareStub: public PlatformCodeStub { |
| 106 public: | 106 public: |
| 107 StringCompareStub() { } | 107 explicit StringCompareStub(Isolate* isolate) : PlatformCodeStub(isolate) { } |
| 108 | 108 |
| 109 // Compares two flat ASCII strings and returns result in eax. | 109 // Compares two flat ASCII strings and returns result in eax. |
| 110 static void GenerateCompareFlatAsciiStrings(MacroAssembler* masm, | 110 static void GenerateCompareFlatAsciiStrings(MacroAssembler* masm, |
| 111 Register left, | 111 Register left, |
| 112 Register right, | 112 Register right, |
| 113 Register scratch1, | 113 Register scratch1, |
| 114 Register scratch2, | 114 Register scratch2, |
| 115 Register scratch3); | 115 Register scratch3); |
| 116 | 116 |
| 117 // Compares two flat ASCII strings for equality and returns result | 117 // Compares two flat ASCII strings for equality and returns result |
| (...skipping 17 matching lines...) Expand all Loading... |
| 135 Register scratch, | 135 Register scratch, |
| 136 Label* chars_not_equal, | 136 Label* chars_not_equal, |
| 137 Label::Distance chars_not_equal_near = Label::kFar); | 137 Label::Distance chars_not_equal_near = Label::kFar); |
| 138 }; | 138 }; |
| 139 | 139 |
| 140 | 140 |
| 141 class NameDictionaryLookupStub: public PlatformCodeStub { | 141 class NameDictionaryLookupStub: public PlatformCodeStub { |
| 142 public: | 142 public: |
| 143 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; | 143 enum LookupMode { POSITIVE_LOOKUP, NEGATIVE_LOOKUP }; |
| 144 | 144 |
| 145 NameDictionaryLookupStub(Register dictionary, | 145 NameDictionaryLookupStub(Isolate* isolate, |
| 146 Register dictionary, |
| 146 Register result, | 147 Register result, |
| 147 Register index, | 148 Register index, |
| 148 LookupMode mode) | 149 LookupMode mode) |
| 149 : dictionary_(dictionary), result_(result), index_(index), mode_(mode) { } | 150 : PlatformCodeStub(isolate), |
| 151 dictionary_(dictionary), result_(result), index_(index), mode_(mode) { } |
| 150 | 152 |
| 151 void Generate(MacroAssembler* masm); | 153 void Generate(MacroAssembler* masm); |
| 152 | 154 |
| 153 static void GenerateNegativeLookup(MacroAssembler* masm, | 155 static void GenerateNegativeLookup(MacroAssembler* masm, |
| 154 Label* miss, | 156 Label* miss, |
| 155 Label* done, | 157 Label* done, |
| 156 Register properties, | 158 Register properties, |
| 157 Handle<Name> name, | 159 Handle<Name> name, |
| 158 Register r0); | 160 Register r0); |
| 159 | 161 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 | 197 |
| 196 Register dictionary_; | 198 Register dictionary_; |
| 197 Register result_; | 199 Register result_; |
| 198 Register index_; | 200 Register index_; |
| 199 LookupMode mode_; | 201 LookupMode mode_; |
| 200 }; | 202 }; |
| 201 | 203 |
| 202 | 204 |
| 203 class RecordWriteStub: public PlatformCodeStub { | 205 class RecordWriteStub: public PlatformCodeStub { |
| 204 public: | 206 public: |
| 205 RecordWriteStub(Register object, | 207 RecordWriteStub(Isolate* isolate, |
| 208 Register object, |
| 206 Register value, | 209 Register value, |
| 207 Register address, | 210 Register address, |
| 208 RememberedSetAction remembered_set_action, | 211 RememberedSetAction remembered_set_action, |
| 209 SaveFPRegsMode fp_mode) | 212 SaveFPRegsMode fp_mode) |
| 210 : object_(object), | 213 : PlatformCodeStub(isolate), |
| 214 object_(object), |
| 211 value_(value), | 215 value_(value), |
| 212 address_(address), | 216 address_(address), |
| 213 remembered_set_action_(remembered_set_action), | 217 remembered_set_action_(remembered_set_action), |
| 214 save_fp_regs_mode_(fp_mode), | 218 save_fp_regs_mode_(fp_mode), |
| 215 regs_(object, // An input reg. | 219 regs_(object, // An input reg. |
| 216 address, // An input reg. | 220 address, // An input reg. |
| 217 value) { // One scratch reg. | 221 value) { // One scratch reg. |
| 218 ASSERT(CpuFeatures::IsSafeForSnapshot(SSE2) || fp_mode == kDontSaveFPRegs); | 222 ASSERT(CpuFeatures::IsSafeForSnapshot(SSE2) || fp_mode == kDontSaveFPRegs); |
| 219 } | 223 } |
| 220 | 224 |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 454 Register address_; | 458 Register address_; |
| 455 RememberedSetAction remembered_set_action_; | 459 RememberedSetAction remembered_set_action_; |
| 456 SaveFPRegsMode save_fp_regs_mode_; | 460 SaveFPRegsMode save_fp_regs_mode_; |
| 457 RegisterAllocation regs_; | 461 RegisterAllocation regs_; |
| 458 }; | 462 }; |
| 459 | 463 |
| 460 | 464 |
| 461 } } // namespace v8::internal | 465 } } // namespace v8::internal |
| 462 | 466 |
| 463 #endif // V8_IA32_CODE_STUBS_IA32_H_ | 467 #endif // V8_IA32_CODE_STUBS_IA32_H_ |
| OLD | NEW |