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

Side by Side Diff: src/type-feedback-vector.h

Issue 1369973002: Use FeedbackVectorSlotKind instead of Code::Kind for type feedback vector. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 2 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 | « src/prettyprinter.cc ('k') | src/type-feedback-vector.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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_TYPE_FEEDBACK_VECTOR_H_ 5 #ifndef V8_TYPE_FEEDBACK_VECTOR_H_
6 #define V8_TYPE_FEEDBACK_VECTOR_H_ 6 #define V8_TYPE_FEEDBACK_VECTOR_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "src/checks.h" 10 #include "src/checks.h"
11 #include "src/elements-kind.h" 11 #include "src/elements-kind.h"
12 #include "src/heap/heap.h" 12 #include "src/heap/heap.h"
13 #include "src/isolate.h" 13 #include "src/isolate.h"
14 #include "src/objects.h" 14 #include "src/objects.h"
15 #include "src/zone-containers.h" 15 #include "src/zone-containers.h"
16 16
17 namespace v8 { 17 namespace v8 {
18 namespace internal { 18 namespace internal {
19 19
20
21 enum class FeedbackVectorSlotKind {
22 UNUSED,
23 CALL_IC,
24 LOAD_IC,
25 KEYED_LOAD_IC,
26 STORE_IC,
27 KEYED_STORE_IC,
28
29 KINDS_NUMBER // Last value indicating number of kinds.
30 };
31
32
33 std::ostream& operator<<(std::ostream& os, FeedbackVectorSlotKind kind);
34
35
20 class FeedbackVectorSpec { 36 class FeedbackVectorSpec {
21 public: 37 public:
22 FeedbackVectorSpec() : slots_(0), ic_slots_(0), ic_kinds_(NULL) {} 38 FeedbackVectorSpec() : slots_(0), ic_slots_(0), ic_kinds_(NULL) {}
23 explicit FeedbackVectorSpec(int slots) 39 explicit FeedbackVectorSpec(int slots)
24 : slots_(slots), ic_slots_(0), ic_kinds_(NULL) {} 40 : slots_(slots), ic_slots_(0), ic_kinds_(NULL) {}
25 FeedbackVectorSpec(int slots, int ic_slots, Code::Kind* ic_slot_kinds) 41 FeedbackVectorSpec(int slots, int ic_slots,
42 FeedbackVectorSlotKind* ic_slot_kinds)
26 : slots_(slots), ic_slots_(ic_slots), ic_kinds_(ic_slot_kinds) {} 43 : slots_(slots), ic_slots_(ic_slots), ic_kinds_(ic_slot_kinds) {}
27 44
28 int slots() const { return slots_; } 45 int slots() const { return slots_; }
29 46
30 int ic_slots() const { return ic_slots_; } 47 int ic_slots() const { return ic_slots_; }
31 48
32 Code::Kind GetKind(int ic_slot) const { 49 FeedbackVectorSlotKind GetKind(int ic_slot) const {
33 DCHECK(ic_slots_ > 0 && ic_slot < ic_slots_); 50 DCHECK(ic_slots_ > 0 && ic_slot < ic_slots_);
34 return ic_kinds_[ic_slot]; 51 return ic_kinds_[ic_slot];
35 } 52 }
36 53
37 private: 54 private:
38 int slots_; 55 int slots_;
39 int ic_slots_; 56 int ic_slots_;
40 Code::Kind* ic_kinds_; 57 FeedbackVectorSlotKind* ic_kinds_;
41 }; 58 };
42 59
43 60
44 class ZoneFeedbackVectorSpec { 61 class ZoneFeedbackVectorSpec {
45 public: 62 public:
46 explicit ZoneFeedbackVectorSpec(Zone* zone) 63 explicit ZoneFeedbackVectorSpec(Zone* zone)
47 : slots_(0), ic_slots_(0), ic_slot_kinds_(zone) {} 64 : slots_(0), ic_slots_(0), ic_slot_kinds_(zone) {}
48 65
49 ZoneFeedbackVectorSpec(Zone* zone, int slots, int ic_slots) 66 ZoneFeedbackVectorSpec(Zone* zone, int slots, int ic_slots)
50 : slots_(slots), ic_slots_(ic_slots), ic_slot_kinds_(ic_slots, zone) {} 67 : slots_(slots), ic_slots_(ic_slots), ic_slot_kinds_(ic_slots, zone) {}
51 68
52 int slots() const { return slots_; } 69 int slots() const { return slots_; }
53 void increase_slots(int count) { slots_ += count; } 70 void increase_slots(int count) { slots_ += count; }
54 71
55 int ic_slots() const { return ic_slots_; } 72 int ic_slots() const { return ic_slots_; }
56 void increase_ic_slots(int count) { 73 void increase_ic_slots(int count) {
57 ic_slots_ += count; 74 ic_slots_ += count;
58 ic_slot_kinds_.resize(ic_slots_); 75 ic_slot_kinds_.resize(ic_slots_);
59 } 76 }
60 77
61 void SetKind(int ic_slot, Code::Kind kind) { 78 void SetKind(int ic_slot, FeedbackVectorSlotKind kind) {
62 ic_slot_kinds_[ic_slot] = kind; 79 ic_slot_kinds_[ic_slot] = static_cast<unsigned char>(kind);
63 } 80 }
64 81
65 Code::Kind GetKind(int ic_slot) const { 82 FeedbackVectorSlotKind GetKind(int ic_slot) const {
66 return static_cast<Code::Kind>(ic_slot_kinds_.at(ic_slot)); 83 return static_cast<FeedbackVectorSlotKind>(ic_slot_kinds_.at(ic_slot));
67 } 84 }
68 85
69 private: 86 private:
70 int slots_; 87 int slots_;
71 int ic_slots_; 88 int ic_slots_;
72 ZoneVector<unsigned char> ic_slot_kinds_; 89 ZoneVector<unsigned char> ic_slot_kinds_;
73 }; 90 };
74 91
75 92
76 // The shape of the TypeFeedbackVector is an array with: 93 // The shape of the TypeFeedbackVector is an array with:
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 inline FeedbackVectorSlot ToSlot(int index) const; 135 inline FeedbackVectorSlot ToSlot(int index) const;
119 inline FeedbackVectorICSlot ToICSlot(int index) const; 136 inline FeedbackVectorICSlot ToICSlot(int index) const;
120 inline Object* Get(FeedbackVectorSlot slot) const; 137 inline Object* Get(FeedbackVectorSlot slot) const;
121 inline void Set(FeedbackVectorSlot slot, Object* value, 138 inline void Set(FeedbackVectorSlot slot, Object* value,
122 WriteBarrierMode mode = UPDATE_WRITE_BARRIER); 139 WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
123 inline Object* Get(FeedbackVectorICSlot slot) const; 140 inline Object* Get(FeedbackVectorICSlot slot) const;
124 inline void Set(FeedbackVectorICSlot slot, Object* value, 141 inline void Set(FeedbackVectorICSlot slot, Object* value,
125 WriteBarrierMode mode = UPDATE_WRITE_BARRIER); 142 WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
126 143
127 // IC slots need metadata to recognize the type of IC. 144 // IC slots need metadata to recognize the type of IC.
128 Code::Kind GetKind(FeedbackVectorICSlot slot) const; 145 FeedbackVectorSlotKind GetKind(FeedbackVectorICSlot slot) const;
129 146
130 template <typename Spec> 147 template <typename Spec>
131 static Handle<TypeFeedbackVector> Allocate(Isolate* isolate, 148 static Handle<TypeFeedbackVector> Allocate(Isolate* isolate,
132 const Spec* spec); 149 const Spec* spec);
133 150
134 static Handle<TypeFeedbackVector> Copy(Isolate* isolate, 151 static Handle<TypeFeedbackVector> Copy(Isolate* isolate,
135 Handle<TypeFeedbackVector> vector); 152 Handle<TypeFeedbackVector> vector);
136 153
137 #ifdef OBJECT_PRINT 154 #ifdef OBJECT_PRINT
138 // For gdb debugging. 155 // For gdb debugging.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 static Handle<TypeFeedbackVector> DummyVector(Isolate* isolate); 195 static Handle<TypeFeedbackVector> DummyVector(Isolate* isolate);
179 static FeedbackVectorICSlot DummySlot(int dummyIndex) { 196 static FeedbackVectorICSlot DummySlot(int dummyIndex) {
180 DCHECK(dummyIndex >= 0 && dummyIndex <= kDummyKeyedStoreICSlot); 197 DCHECK(dummyIndex >= 0 && dummyIndex <= kDummyKeyedStoreICSlot);
181 return FeedbackVectorICSlot(dummyIndex); 198 return FeedbackVectorICSlot(dummyIndex);
182 } 199 }
183 200
184 static int PushAppliedArgumentsIndex(); 201 static int PushAppliedArgumentsIndex();
185 static Handle<TypeFeedbackVector> CreatePushAppliedArgumentsVector( 202 static Handle<TypeFeedbackVector> CreatePushAppliedArgumentsVector(
186 Isolate* isolate); 203 Isolate* isolate);
187 204
205 static const char* Kind2String(FeedbackVectorSlotKind kind);
206
188 private: 207 private:
189 enum VectorICKind { 208 static const int kFeedbackVectorSlotKindBits = 3;
190 KindUnused = 0x0, 209 STATIC_ASSERT(static_cast<int>(FeedbackVectorSlotKind::KINDS_NUMBER) <
191 KindCallIC = 0x1, 210 (1 << kFeedbackVectorSlotKindBits));
192 KindLoadIC = 0x2,
193 KindKeyedLoadIC = 0x3,
194 KindStoreIC = 0x4,
195 KindKeyedStoreIC = 0x5,
196 };
197 211
198 static const int kVectorICKindBits = 3; 212 void SetKind(FeedbackVectorICSlot slot, FeedbackVectorSlotKind kind);
199 static VectorICKind FromCodeKind(Code::Kind kind);
200 static Code::Kind FromVectorICKind(VectorICKind kind);
201 void SetKind(FeedbackVectorICSlot slot, Code::Kind kind);
202 213
203 typedef BitSetComputer<VectorICKind, kVectorICKindBits, kSmiValueSize, 214 typedef BitSetComputer<FeedbackVectorSlotKind, kFeedbackVectorSlotKindBits,
204 uint32_t> VectorICComputer; 215 kSmiValueSize, uint32_t> VectorICComputer;
205 216
206 void ClearSlotsImpl(SharedFunctionInfo* shared, bool force_clear); 217 void ClearSlotsImpl(SharedFunctionInfo* shared, bool force_clear);
207 void ClearICSlotsImpl(SharedFunctionInfo* shared, bool force_clear); 218 void ClearICSlotsImpl(SharedFunctionInfo* shared, bool force_clear);
208 219
209 DISALLOW_IMPLICIT_CONSTRUCTORS(TypeFeedbackVector); 220 DISALLOW_IMPLICIT_CONSTRUCTORS(TypeFeedbackVector);
210 }; 221 };
211 222
212 223
213 // The following asserts protect an optimization in type feedback vector 224 // The following asserts protect an optimization in type feedback vector
214 // code that looks into the contents of a slot assuming to find a String, 225 // code that looks into the contents of a slot assuming to find a String,
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 304
294 305
295 class CallICNexus : public FeedbackNexus { 306 class CallICNexus : public FeedbackNexus {
296 public: 307 public:
297 // Monomorphic call ics store call counts. Platform code needs to increment 308 // Monomorphic call ics store call counts. Platform code needs to increment
298 // the count appropriately (ie, by 2). 309 // the count appropriately (ie, by 2).
299 static const int kCallCountIncrement = 2; 310 static const int kCallCountIncrement = 2;
300 311
301 CallICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot) 312 CallICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot)
302 : FeedbackNexus(vector, slot) { 313 : FeedbackNexus(vector, slot) {
303 DCHECK(vector->GetKind(slot) == Code::CALL_IC); 314 DCHECK_EQ(FeedbackVectorSlotKind::CALL_IC, vector->GetKind(slot));
304 } 315 }
305 CallICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot) 316 CallICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot)
306 : FeedbackNexus(vector, slot) { 317 : FeedbackNexus(vector, slot) {
307 DCHECK(vector->GetKind(slot) == Code::CALL_IC); 318 DCHECK_EQ(FeedbackVectorSlotKind::CALL_IC, vector->GetKind(slot));
308 } 319 }
309 320
310 void Clear(Code* host); 321 void Clear(Code* host);
311 322
312 void ConfigureMonomorphicArray(); 323 void ConfigureMonomorphicArray();
313 void ConfigureMonomorphic(Handle<JSFunction> function); 324 void ConfigureMonomorphic(Handle<JSFunction> function);
314 325
315 InlineCacheState StateFromFeedback() const override; 326 InlineCacheState StateFromFeedback() const override;
316 327
317 int ExtractMaps(MapHandleList* maps) const override { 328 int ExtractMaps(MapHandleList* maps) const override {
318 // CallICs don't record map feedback. 329 // CallICs don't record map feedback.
319 return 0; 330 return 0;
320 } 331 }
321 MaybeHandle<Code> FindHandlerForMap(Handle<Map> map) const override { 332 MaybeHandle<Code> FindHandlerForMap(Handle<Map> map) const override {
322 return MaybeHandle<Code>(); 333 return MaybeHandle<Code>();
323 } 334 }
324 bool FindHandlers(CodeHandleList* code_list, int length = -1) const override { 335 bool FindHandlers(CodeHandleList* code_list, int length = -1) const override {
325 return length == 0; 336 return length == 0;
326 } 337 }
327 338
328 int ExtractCallCount(); 339 int ExtractCallCount();
329 }; 340 };
330 341
331 342
332 class LoadICNexus : public FeedbackNexus { 343 class LoadICNexus : public FeedbackNexus {
333 public: 344 public:
334 LoadICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot) 345 LoadICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot)
335 : FeedbackNexus(vector, slot) { 346 : FeedbackNexus(vector, slot) {
336 DCHECK(vector->GetKind(slot) == Code::LOAD_IC); 347 DCHECK_EQ(FeedbackVectorSlotKind::LOAD_IC, vector->GetKind(slot));
337 } 348 }
338 explicit LoadICNexus(Isolate* isolate) 349 explicit LoadICNexus(Isolate* isolate)
339 : FeedbackNexus(TypeFeedbackVector::DummyVector(isolate), 350 : FeedbackNexus(TypeFeedbackVector::DummyVector(isolate),
340 TypeFeedbackVector::DummySlot( 351 TypeFeedbackVector::DummySlot(
341 TypeFeedbackVector::kDummyLoadICSlot)) {} 352 TypeFeedbackVector::kDummyLoadICSlot)) {}
342 LoadICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot) 353 LoadICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot)
343 : FeedbackNexus(vector, slot) { 354 : FeedbackNexus(vector, slot) {
344 DCHECK(vector->GetKind(slot) == Code::LOAD_IC); 355 DCHECK_EQ(FeedbackVectorSlotKind::LOAD_IC, vector->GetKind(slot));
345 } 356 }
346 357
347 void Clear(Code* host); 358 void Clear(Code* host);
348 359
349 void ConfigureMonomorphic(Handle<Map> receiver_map, Handle<Code> handler); 360 void ConfigureMonomorphic(Handle<Map> receiver_map, Handle<Code> handler);
350 361
351 void ConfigurePolymorphic(MapHandleList* maps, CodeHandleList* handlers); 362 void ConfigurePolymorphic(MapHandleList* maps, CodeHandleList* handlers);
352 363
353 InlineCacheState StateFromFeedback() const override; 364 InlineCacheState StateFromFeedback() const override;
354 }; 365 };
355 366
356 367
357 class KeyedLoadICNexus : public FeedbackNexus { 368 class KeyedLoadICNexus : public FeedbackNexus {
358 public: 369 public:
359 KeyedLoadICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot) 370 KeyedLoadICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot)
360 : FeedbackNexus(vector, slot) { 371 : FeedbackNexus(vector, slot) {
361 DCHECK(vector->GetKind(slot) == Code::KEYED_LOAD_IC); 372 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_LOAD_IC, vector->GetKind(slot));
362 } 373 }
363 KeyedLoadICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot) 374 KeyedLoadICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot)
364 : FeedbackNexus(vector, slot) { 375 : FeedbackNexus(vector, slot) {
365 DCHECK(vector->GetKind(slot) == Code::KEYED_LOAD_IC); 376 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_LOAD_IC, vector->GetKind(slot));
366 } 377 }
367 378
368 void Clear(Code* host); 379 void Clear(Code* host);
369 380
370 // name can be a null handle for element loads. 381 // name can be a null handle for element loads.
371 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map, 382 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map,
372 Handle<Code> handler); 383 Handle<Code> handler);
373 // name can be null. 384 // name can be null.
374 void ConfigurePolymorphic(Handle<Name> name, MapHandleList* maps, 385 void ConfigurePolymorphic(Handle<Name> name, MapHandleList* maps,
375 CodeHandleList* handlers); 386 CodeHandleList* handlers);
376 387
377 InlineCacheState StateFromFeedback() const override; 388 InlineCacheState StateFromFeedback() const override;
378 Name* FindFirstName() const override; 389 Name* FindFirstName() const override;
379 }; 390 };
380 391
381 392
382 class StoreICNexus : public FeedbackNexus { 393 class StoreICNexus : public FeedbackNexus {
383 public: 394 public:
384 StoreICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot) 395 StoreICNexus(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot)
385 : FeedbackNexus(vector, slot) { 396 : FeedbackNexus(vector, slot) {
386 DCHECK(vector->GetKind(slot) == Code::STORE_IC); 397 DCHECK_EQ(FeedbackVectorSlotKind::STORE_IC, vector->GetKind(slot));
387 } 398 }
388 explicit StoreICNexus(Isolate* isolate) 399 explicit StoreICNexus(Isolate* isolate)
389 : FeedbackNexus(TypeFeedbackVector::DummyVector(isolate), 400 : FeedbackNexus(TypeFeedbackVector::DummyVector(isolate),
390 TypeFeedbackVector::DummySlot( 401 TypeFeedbackVector::DummySlot(
391 TypeFeedbackVector::kDummyStoreICSlot)) {} 402 TypeFeedbackVector::kDummyStoreICSlot)) {}
392 StoreICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot) 403 StoreICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot)
393 : FeedbackNexus(vector, slot) { 404 : FeedbackNexus(vector, slot) {
394 DCHECK(vector->GetKind(slot) == Code::STORE_IC); 405 DCHECK_EQ(FeedbackVectorSlotKind::STORE_IC, vector->GetKind(slot));
395 } 406 }
396 407
397 void Clear(Code* host); 408 void Clear(Code* host);
398 409
399 void ConfigureMonomorphic(Handle<Map> receiver_map, Handle<Code> handler); 410 void ConfigureMonomorphic(Handle<Map> receiver_map, Handle<Code> handler);
400 411
401 void ConfigurePolymorphic(MapHandleList* maps, CodeHandleList* handlers); 412 void ConfigurePolymorphic(MapHandleList* maps, CodeHandleList* handlers);
402 413
403 InlineCacheState StateFromFeedback() const override; 414 InlineCacheState StateFromFeedback() const override;
404 }; 415 };
405 416
406 417
407 class KeyedStoreICNexus : public FeedbackNexus { 418 class KeyedStoreICNexus : public FeedbackNexus {
408 public: 419 public:
409 KeyedStoreICNexus(Handle<TypeFeedbackVector> vector, 420 KeyedStoreICNexus(Handle<TypeFeedbackVector> vector,
410 FeedbackVectorICSlot slot) 421 FeedbackVectorICSlot slot)
411 : FeedbackNexus(vector, slot) { 422 : FeedbackNexus(vector, slot) {
412 DCHECK(vector->GetKind(slot) == Code::KEYED_STORE_IC); 423 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_STORE_IC, vector->GetKind(slot));
413 } 424 }
414 explicit KeyedStoreICNexus(Isolate* isolate) 425 explicit KeyedStoreICNexus(Isolate* isolate)
415 : FeedbackNexus(TypeFeedbackVector::DummyVector(isolate), 426 : FeedbackNexus(TypeFeedbackVector::DummyVector(isolate),
416 TypeFeedbackVector::DummySlot( 427 TypeFeedbackVector::DummySlot(
417 TypeFeedbackVector::kDummyKeyedStoreICSlot)) {} 428 TypeFeedbackVector::kDummyKeyedStoreICSlot)) {}
418 KeyedStoreICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot) 429 KeyedStoreICNexus(TypeFeedbackVector* vector, FeedbackVectorICSlot slot)
419 : FeedbackNexus(vector, slot) { 430 : FeedbackNexus(vector, slot) {
420 DCHECK(vector->GetKind(slot) == Code::KEYED_STORE_IC); 431 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_STORE_IC, vector->GetKind(slot));
421 } 432 }
422 433
423 void Clear(Code* host); 434 void Clear(Code* host);
424 435
425 // name can be a null handle for element loads. 436 // name can be a null handle for element loads.
426 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map, 437 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map,
427 Handle<Code> handler); 438 Handle<Code> handler);
428 // name can be null. 439 // name can be null.
429 void ConfigurePolymorphic(Handle<Name> name, MapHandleList* maps, 440 void ConfigurePolymorphic(Handle<Name> name, MapHandleList* maps,
430 CodeHandleList* handlers); 441 CodeHandleList* handlers);
431 void ConfigurePolymorphic(MapHandleList* maps, 442 void ConfigurePolymorphic(MapHandleList* maps,
432 MapHandleList* transitioned_maps, 443 MapHandleList* transitioned_maps,
433 CodeHandleList* handlers); 444 CodeHandleList* handlers);
434 445
435 KeyedAccessStoreMode GetKeyedAccessStoreMode() const; 446 KeyedAccessStoreMode GetKeyedAccessStoreMode() const;
436 IcCheckType GetKeyType() const; 447 IcCheckType GetKeyType() const;
437 448
438 InlineCacheState StateFromFeedback() const override; 449 InlineCacheState StateFromFeedback() const override;
439 Name* FindFirstName() const override; 450 Name* FindFirstName() const override;
440 }; 451 };
441 } 452 }
442 } // namespace v8::internal 453 } // namespace v8::internal
443 454
444 #endif // V8_TRANSITIONS_H_ 455 #endif // V8_TRANSITIONS_H_
OLDNEW
« no previous file with comments | « src/prettyprinter.cc ('k') | src/type-feedback-vector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698