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

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

Issue 1297203002: Add CompileInfo::GetDebugName() (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@interpreter_immed_bytecodes
Patch Set: Fix test crash Created 5 years, 4 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 | « no previous file | src/code-stubs.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 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 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 return MinorKeyBits::decode(key); 192 return MinorKeyBits::decode(key);
193 } 193 }
194 194
195 // Gets the major key from a code object that is a code stub or binary op IC. 195 // Gets the major key from a code object that is a code stub or binary op IC.
196 static Major GetMajorKey(Code* code_stub) { 196 static Major GetMajorKey(Code* code_stub) {
197 return MajorKeyFromKey(code_stub->stub_key()); 197 return MajorKeyFromKey(code_stub->stub_key());
198 } 198 }
199 199
200 static uint32_t NoCacheKey() { return MajorKeyBits::encode(NoCache); } 200 static uint32_t NoCacheKey() { return MajorKeyBits::encode(NoCache); }
201 201
202 static const char* MajorName(Major major_key, bool allow_unknown_keys); 202 static const char* MajorName(Major major_key);
203 203
204 explicit CodeStub(Isolate* isolate) : minor_key_(0), isolate_(isolate) {} 204 explicit CodeStub(Isolate* isolate) : minor_key_(0), isolate_(isolate) {}
205 virtual ~CodeStub() {} 205 virtual ~CodeStub() {}
206 206
207 static void GenerateStubsAheadOfTime(Isolate* isolate); 207 static void GenerateStubsAheadOfTime(Isolate* isolate);
208 static void GenerateFPStubs(Isolate* isolate); 208 static void GenerateFPStubs(Isolate* isolate);
209 209
210 // Some stubs put untagged junk on the stack that cannot be scanned by the 210 // Some stubs put untagged junk on the stack that cannot be scanned by the
211 // GC. This means that we must be statically sure that no GC can occur while 211 // GC. This means that we must be statically sure that no GC can occur while
212 // they are running. If that is the case they should override this to return 212 // they are running. If that is the case they should override this to return
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 class MajorKeyBits: public BitField<uint32_t, 0, kStubMajorKeyBits> {}; 309 class MajorKeyBits: public BitField<uint32_t, 0, kStubMajorKeyBits> {};
310 class MinorKeyBits: public BitField<uint32_t, 310 class MinorKeyBits: public BitField<uint32_t,
311 kStubMajorKeyBits, kStubMinorKeyBits> {}; // NOLINT 311 kStubMajorKeyBits, kStubMinorKeyBits> {}; // NOLINT
312 312
313 friend class BreakPointIterator; 313 friend class BreakPointIterator;
314 314
315 Isolate* isolate_; 315 Isolate* isolate_;
316 }; 316 };
317 317
318 318
319 // TODO(svenpanne) This class is only used to construct a more or less sensible
320 // CompilationInfo for testing purposes, basically pretending that we are
321 // currently compiling some kind of code stub. Remove this when the pipeline and
322 // testing machinery is restructured in such a way that we don't have to come up
323 // with a CompilationInfo out of thin air, although we only need a few parts of
324 // it.
325 struct FakeStubForTesting : public CodeStub {
326 explicit FakeStubForTesting(Isolate* isolate) : CodeStub(isolate) {}
327
328 // Only used by pipeline.cc's GetDebugName in DEBUG mode.
329 Major MajorKey() const override { return CodeStub::NoCache; }
330
331 CallInterfaceDescriptor GetCallInterfaceDescriptor() const override {
332 return ContextOnlyDescriptor(isolate());
333 }
334
335 Handle<Code> GenerateCode() override {
336 UNREACHABLE();
337 return Handle<Code>();
338 }
339 };
340
341
342 #define DEFINE_CODE_STUB_BASE(NAME, SUPER) \ 319 #define DEFINE_CODE_STUB_BASE(NAME, SUPER) \
343 public: \ 320 public: \
344 NAME(uint32_t key, Isolate* isolate) : SUPER(key, isolate) {} \ 321 NAME(uint32_t key, Isolate* isolate) : SUPER(key, isolate) {} \
345 \ 322 \
346 private: \ 323 private: \
347 DISALLOW_COPY_AND_ASSIGN(NAME) 324 DISALLOW_COPY_AND_ASSIGN(NAME)
348 325
349 326
350 #define DEFINE_CODE_STUB(NAME, SUPER) \ 327 #define DEFINE_CODE_STUB(NAME, SUPER) \
351 protected: \ 328 protected: \
(...skipping 2798 matching lines...) Expand 10 before | Expand all | Expand 10 after
3150 #undef DEFINE_PLATFORM_CODE_STUB 3127 #undef DEFINE_PLATFORM_CODE_STUB
3151 #undef DEFINE_HANDLER_CODE_STUB 3128 #undef DEFINE_HANDLER_CODE_STUB
3152 #undef DEFINE_HYDROGEN_CODE_STUB 3129 #undef DEFINE_HYDROGEN_CODE_STUB
3153 #undef DEFINE_CODE_STUB 3130 #undef DEFINE_CODE_STUB
3154 #undef DEFINE_CODE_STUB_BASE 3131 #undef DEFINE_CODE_STUB_BASE
3155 3132
3156 extern Representation RepresentationFromType(Type* type); 3133 extern Representation RepresentationFromType(Type* type);
3157 } } // namespace v8::internal 3134 } } // namespace v8::internal
3158 3135
3159 #endif // V8_CODE_STUBS_H_ 3136 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « no previous file | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698