OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_CODE_STUBS_H_ | 5 #ifndef V8_CODE_STUBS_H_ |
6 #define V8_CODE_STUBS_H_ | 6 #define V8_CODE_STUBS_H_ |
7 | 7 |
8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
9 #include "src/assembler.h" | 9 #include "src/assembler.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 virtual Major MajorKey() const = 0; | 233 virtual Major MajorKey() const = 0; |
234 uint32_t MinorKey() const { return minor_key_; } | 234 uint32_t MinorKey() const { return minor_key_; } |
235 | 235 |
236 // BinaryOpStub needs to override this. | 236 // BinaryOpStub needs to override this. |
237 virtual Code::Kind GetCodeKind() const; | 237 virtual Code::Kind GetCodeKind() const; |
238 | 238 |
239 virtual InlineCacheState GetICState() const { return UNINITIALIZED; } | 239 virtual InlineCacheState GetICState() const { return UNINITIALIZED; } |
240 virtual ExtraICState GetExtraICState() const { return kNoExtraICState; } | 240 virtual ExtraICState GetExtraICState() const { return kNoExtraICState; } |
241 virtual Code::StubType GetStubType() const { return Code::NORMAL; } | 241 virtual Code::StubType GetStubType() const { return Code::NORMAL; } |
242 | 242 |
| 243 Code::Flags GetCodeFlags() const; |
| 244 |
243 friend std::ostream& operator<<(std::ostream& os, const CodeStub& s) { | 245 friend std::ostream& operator<<(std::ostream& os, const CodeStub& s) { |
244 s.PrintName(os); | 246 s.PrintName(os); |
245 return os; | 247 return os; |
246 } | 248 } |
247 | 249 |
248 Isolate* isolate() const { return isolate_; } | 250 Isolate* isolate() const { return isolate_; } |
249 | 251 |
250 protected: | 252 protected: |
251 CodeStub(uint32_t key, Isolate* isolate) | 253 CodeStub(uint32_t key, Isolate* isolate) |
252 : minor_key_(MinorKeyFromKey(key)), isolate_(isolate) {} | 254 : minor_key_(MinorKeyFromKey(key)), isolate_(isolate) {} |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 | 318 |
317 #define DEFINE_CODE_STUB_BASE(NAME, SUPER) \ | 319 #define DEFINE_CODE_STUB_BASE(NAME, SUPER) \ |
318 public: \ | 320 public: \ |
319 NAME(uint32_t key, Isolate* isolate) : SUPER(key, isolate) {} \ | 321 NAME(uint32_t key, Isolate* isolate) : SUPER(key, isolate) {} \ |
320 \ | 322 \ |
321 private: \ | 323 private: \ |
322 DISALLOW_COPY_AND_ASSIGN(NAME) | 324 DISALLOW_COPY_AND_ASSIGN(NAME) |
323 | 325 |
324 | 326 |
325 #define DEFINE_CODE_STUB(NAME, SUPER) \ | 327 #define DEFINE_CODE_STUB(NAME, SUPER) \ |
| 328 public: \ |
| 329 inline Major MajorKey() const override { return NAME; }; \ |
| 330 \ |
326 protected: \ | 331 protected: \ |
327 inline Major MajorKey() const override { return NAME; }; \ | |
328 DEFINE_CODE_STUB_BASE(NAME##Stub, SUPER) | 332 DEFINE_CODE_STUB_BASE(NAME##Stub, SUPER) |
329 | 333 |
330 | 334 |
331 #define DEFINE_PLATFORM_CODE_STUB(NAME, SUPER) \ | 335 #define DEFINE_PLATFORM_CODE_STUB(NAME, SUPER) \ |
332 private: \ | 336 private: \ |
333 void Generate(MacroAssembler* masm) override; \ | 337 void Generate(MacroAssembler* masm) override; \ |
334 DEFINE_CODE_STUB(NAME, SUPER) | 338 DEFINE_CODE_STUB(NAME, SUPER) |
335 | 339 |
336 | 340 |
337 #define DEFINE_HYDROGEN_CODE_STUB(NAME, SUPER) \ | 341 #define DEFINE_HYDROGEN_CODE_STUB(NAME, SUPER) \ |
(...skipping 2636 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2974 #undef DEFINE_HYDROGEN_CODE_STUB | 2978 #undef DEFINE_HYDROGEN_CODE_STUB |
2975 #undef DEFINE_CODE_STUB | 2979 #undef DEFINE_CODE_STUB |
2976 #undef DEFINE_CODE_STUB_BASE | 2980 #undef DEFINE_CODE_STUB_BASE |
2977 | 2981 |
2978 extern Representation RepresentationFromType(Type* type); | 2982 extern Representation RepresentationFromType(Type* type); |
2979 | 2983 |
2980 } // namespace internal | 2984 } // namespace internal |
2981 } // namespace v8 | 2985 } // namespace v8 |
2982 | 2986 |
2983 #endif // V8_CODE_STUBS_H_ | 2987 #endif // V8_CODE_STUBS_H_ |
OLD | NEW |