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

Side by Side Diff: src/stub-cache.h

Issue 422853003: Remove all compilation related interface from the StubCache (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Make the PropertyICCompiler constructor private Created 6 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 | Annotate | Revision Log
« no previous file with comments | « src/ic.cc ('k') | src/stub-cache.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_STUB_CACHE_H_ 5 #ifndef V8_STUB_CACHE_H_
6 #define V8_STUB_CACHE_H_ 6 #define V8_STUB_CACHE_H_
7 7
8 #include "src/allocation.h" 8 #include "src/allocation.h"
9 #include "src/arguments.h" 9 #include "src/arguments.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
11 #include "src/ic-inl.h" 11 #include "src/ic-inl.h"
12 #include "src/macro-assembler.h" 12 #include "src/macro-assembler.h"
13 #include "src/objects.h" 13 #include "src/objects.h"
14 #include "src/zone-inl.h" 14 #include "src/zone-inl.h"
15 15
16 namespace v8 { 16 namespace v8 {
17 namespace internal { 17 namespace internal {
18 18
19 19
20 // The stub cache is used for megamorphic calls and property accesses. 20 // The stub cache is used for megamorphic property accesses.
21 // It maps (map, name, type)->Code* 21 // It maps (map, name, type) to property access handlers. The cache does not
22 22 // need explicit invalidation when a prototype chain is modified, since the
23 // The design of the table uses the inline cache stubs used for 23 // handlers verify the chain.
24 // mono-morphic calls. The beauty of this, we do not have to
25 // invalidate the cache whenever a prototype map is changed. The stub
26 // validates the map chain as in the mono-morphic case.
27 24
28 25
29 class CallOptimization; 26 class CallOptimization;
30 class SmallMapList; 27 class SmallMapList;
31 class StubCache; 28 class StubCache;
32 29
33 30
34 class SCTableReference { 31 class SCTableReference {
35 public: 32 public:
36 Address address() const { return address_; } 33 Address address() const { return address_; }
37 34
38 private: 35 private:
39 explicit SCTableReference(Address address) : address_(address) {} 36 explicit SCTableReference(Address address) : address_(address) {}
40 37
41 Address address_; 38 Address address_;
42 39
43 friend class StubCache; 40 friend class StubCache;
44 }; 41 };
45 42
46 43
47 class StubCache { 44 class StubCache {
48 public: 45 public:
49 struct Entry { 46 struct Entry {
50 Name* key; 47 Name* key;
51 Code* value; 48 Code* value;
52 Map* map; 49 Map* map;
53 }; 50 };
54 51
55 void Initialize(); 52 void Initialize();
56 53 // Access cache for entry hash(name, map).
57 Handle<Code> ComputeMonomorphicIC(Code::Kind kind,
58 Handle<Name> name,
59 Handle<HeapType> type,
60 Handle<Code> handler,
61 ExtraICState extra_ic_state);
62
63 Handle<Code> ComputeLoadNonexistent(Handle<Name> name, Handle<HeapType> type);
64
65 Handle<Code> ComputeKeyedLoadElement(Handle<Map> receiver_map);
66
67 Handle<Code> ComputeKeyedStoreElement(Handle<Map> receiver_map,
68 StrictMode strict_mode,
69 KeyedAccessStoreMode store_mode);
70
71 // ---
72
73 Handle<Code> ComputeLoad(InlineCacheState ic_state, ExtraICState extra_state);
74 Handle<Code> ComputeStore(InlineCacheState ic_state,
75 ExtraICState extra_state);
76
77 // ---
78
79 Handle<Code> ComputeCompareNil(Handle<Map> receiver_map,
80 CompareNilICStub* stub);
81
82 // ---
83
84 Handle<Code> ComputeLoadElementPolymorphic(MapHandleList* receiver_maps);
85 Handle<Code> ComputeStoreElementPolymorphic(MapHandleList* receiver_maps,
86 KeyedAccessStoreMode store_mode,
87 StrictMode strict_mode);
88
89 Handle<Code> ComputePolymorphicIC(Code::Kind kind,
90 TypeHandleList* types,
91 CodeHandleList* handlers,
92 int number_of_valid_maps,
93 Handle<Name> name,
94 ExtraICState extra_ic_state);
95
96 // Finds the Code object stored in the Heap::non_monomorphic_cache().
97 Code* FindPreMonomorphicIC(Code::Kind kind, ExtraICState extra_ic_state);
98
99 // Update cache for entry hash(name, map).
100 Code* Set(Name* name, Map* map, Code* code); 54 Code* Set(Name* name, Map* map, Code* code);
101
102 Code* Get(Name* name, Map* map, Code::Flags flags); 55 Code* Get(Name* name, Map* map, Code::Flags flags);
103
104 // Clear the lookup table (@ mark compact collection). 56 // Clear the lookup table (@ mark compact collection).
105 void Clear(); 57 void Clear();
106
107 // Collect all maps that match the name and flags. 58 // Collect all maps that match the name and flags.
108 void CollectMatchingMaps(SmallMapList* types, 59 void CollectMatchingMaps(SmallMapList* types,
109 Handle<Name> name, 60 Handle<Name> name,
110 Code::Flags flags, 61 Code::Flags flags,
111 Handle<Context> native_context, 62 Handle<Context> native_context,
112 Zone* zone); 63 Zone* zone);
113
114 // Generate code for probing the stub cache table. 64 // Generate code for probing the stub cache table.
115 // Arguments extra, extra2 and extra3 may be used to pass additional scratch 65 // Arguments extra, extra2 and extra3 may be used to pass additional scratch
116 // registers. Set to no_reg if not needed. 66 // registers. Set to no_reg if not needed.
117 void GenerateProbe(MacroAssembler* masm, 67 void GenerateProbe(MacroAssembler* masm,
118 Code::Flags flags, 68 Code::Flags flags,
119 Register receiver, 69 Register receiver,
120 Register name, 70 Register name,
121 Register scratch, 71 Register scratch,
122 Register extra, 72 Register extra,
123 Register extra2 = no_reg, 73 Register extra2 = no_reg,
124 Register extra3 = no_reg); 74 Register extra3 = no_reg);
125 75
126 enum Table { 76 enum Table {
127 kPrimary, 77 kPrimary,
128 kSecondary 78 kSecondary
129 }; 79 };
130 80
131
132 SCTableReference key_reference(StubCache::Table table) { 81 SCTableReference key_reference(StubCache::Table table) {
133 return SCTableReference( 82 return SCTableReference(
134 reinterpret_cast<Address>(&first_entry(table)->key)); 83 reinterpret_cast<Address>(&first_entry(table)->key));
135 } 84 }
136 85
137
138 SCTableReference map_reference(StubCache::Table table) { 86 SCTableReference map_reference(StubCache::Table table) {
139 return SCTableReference( 87 return SCTableReference(
140 reinterpret_cast<Address>(&first_entry(table)->map)); 88 reinterpret_cast<Address>(&first_entry(table)->map));
141 } 89 }
142 90
143
144 SCTableReference value_reference(StubCache::Table table) { 91 SCTableReference value_reference(StubCache::Table table) {
145 return SCTableReference( 92 return SCTableReference(
146 reinterpret_cast<Address>(&first_entry(table)->value)); 93 reinterpret_cast<Address>(&first_entry(table)->value));
147 } 94 }
148 95
149
150 StubCache::Entry* first_entry(StubCache::Table table) { 96 StubCache::Entry* first_entry(StubCache::Table table) {
151 switch (table) { 97 switch (table) {
152 case StubCache::kPrimary: return StubCache::primary_; 98 case StubCache::kPrimary: return StubCache::primary_;
153 case StubCache::kSecondary: return StubCache::secondary_; 99 case StubCache::kSecondary: return StubCache::secondary_;
154 } 100 }
155 UNREACHABLE(); 101 UNREACHABLE();
156 return NULL; 102 return NULL;
157 } 103 }
158 104
159 Isolate* isolate() { return isolate_; } 105 Isolate* isolate() { return isolate_; }
160 Heap* heap() { return isolate()->heap(); }
161 Factory* factory() { return isolate()->factory(); }
162
163 // These constants describe the structure of the interceptor arguments on the
164 // stack. The arguments are pushed by the (platform-specific)
165 // PushInterceptorArguments and read by LoadPropertyWithInterceptorOnly and
166 // LoadWithInterceptor.
167 static const int kInterceptorArgsNameIndex = 0;
168 static const int kInterceptorArgsInfoIndex = 1;
169 static const int kInterceptorArgsThisIndex = 2;
170 static const int kInterceptorArgsHolderIndex = 3;
171 static const int kInterceptorArgsLength = 4;
172 106
173 // Setting the entry size such that the index is shifted by Name::kHashShift 107 // Setting the entry size such that the index is shifted by Name::kHashShift
174 // is convenient; shifting down the length field (to extract the hash code) 108 // is convenient; shifting down the length field (to extract the hash code)
175 // automatically discards the hash bit field. 109 // automatically discards the hash bit field.
176 static const int kCacheIndexShift = Name::kHashShift; 110 static const int kCacheIndexShift = Name::kHashShift;
177 111
178 private: 112 private:
179 explicit StubCache(Isolate* isolate); 113 explicit StubCache(Isolate* isolate);
180 114
181 // The stub cache has a primary and secondary level. The two levels have 115 // The stub cache has a primary and secondary level. The two levels have
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 Code::Kind kind_; 262 Code::Kind kind_;
329 CacheHolderFlag cache_holder_; 263 CacheHolderFlag cache_holder_;
330 264
331 Isolate* isolate_; 265 Isolate* isolate_;
332 MacroAssembler masm_; 266 MacroAssembler masm_;
333 }; 267 };
334 268
335 269
336 class PropertyICCompiler : public PropertyAccessCompiler { 270 class PropertyICCompiler : public PropertyAccessCompiler {
337 public: 271 public:
272 // Finds the Code object stored in the Heap::non_monomorphic_cache().
273 static Code* FindPreMonomorphicIC(Isolate* isolate, Code::Kind kind,
274 ExtraICState extra_ic_state);
275
276 // Named
277 static Handle<Code> ComputeLoad(Isolate* isolate, InlineCacheState ic_state,
278 ExtraICState extra_state);
279 static Handle<Code> ComputeStore(Isolate* isolate, InlineCacheState ic_state,
280 ExtraICState extra_state);
281
282 static Handle<Code> ComputeMonomorphicIC(Code::Kind kind, Handle<Name> name,
283 Handle<HeapType> type,
284 Handle<Code> handler,
285 ExtraICState extra_ic_state);
286 static Handle<Code> ComputePolymorphicIC(
287 Code::Kind kind, TypeHandleList* types, CodeHandleList* handlers,
288 int number_of_valid_maps, Handle<Name> name, ExtraICState extra_ic_state);
289
290 // Keyed
291 static Handle<Code> ComputeKeyedLoadElement(Handle<Map> receiver_map);
292
293 static Handle<Code> ComputeKeyedStoreElement(Handle<Map> receiver_map,
294 StrictMode strict_mode,
295 KeyedAccessStoreMode store_mode);
296 static Handle<Code> ComputeLoadElementPolymorphic(
297 MapHandleList* receiver_maps);
298 static Handle<Code> ComputeStoreElementPolymorphic(
299 MapHandleList* receiver_maps, KeyedAccessStoreMode store_mode,
300 StrictMode strict_mode);
301
302 // Compare nil
303 static Handle<Code> ComputeCompareNil(Handle<Map> receiver_map,
304 CompareNilICStub* stub);
305
306
307 private:
338 PropertyICCompiler(Isolate* isolate, Code::Kind kind, 308 PropertyICCompiler(Isolate* isolate, Code::Kind kind,
339 ExtraICState extra_ic_state = kNoExtraICState, 309 ExtraICState extra_ic_state = kNoExtraICState,
340 CacheHolderFlag cache_holder = kCacheOnReceiver) 310 CacheHolderFlag cache_holder = kCacheOnReceiver)
341 : PropertyAccessCompiler(isolate, kind, cache_holder), 311 : PropertyAccessCompiler(isolate, kind, cache_holder),
342 extra_ic_state_(extra_ic_state) {} 312 extra_ic_state_(extra_ic_state) {}
343 313
344 static Handle<Code> Find(Handle<Name> name, Handle<Map> stub_holder_map, 314 static Handle<Code> Find(Handle<Name> name, Handle<Map> stub_holder_map,
345 Code::Kind kind, 315 Code::Kind kind,
346 ExtraICState extra_ic_state = kNoExtraICState, 316 ExtraICState extra_ic_state = kNoExtraICState,
347 CacheHolderFlag cache_holder = kCacheOnReceiver); 317 CacheHolderFlag cache_holder = kCacheOnReceiver);
348 318
349 Handle<Code> CompileLoadInitialize(Code::Flags flags); 319 Handle<Code> CompileLoadInitialize(Code::Flags flags);
350 Handle<Code> CompileLoadPreMonomorphic(Code::Flags flags); 320 Handle<Code> CompileLoadPreMonomorphic(Code::Flags flags);
351 Handle<Code> CompileLoadMegamorphic(Code::Flags flags); 321 Handle<Code> CompileLoadMegamorphic(Code::Flags flags);
352 Handle<Code> CompileStoreInitialize(Code::Flags flags); 322 Handle<Code> CompileStoreInitialize(Code::Flags flags);
353 Handle<Code> CompileStorePreMonomorphic(Code::Flags flags); 323 Handle<Code> CompileStorePreMonomorphic(Code::Flags flags);
354 Handle<Code> CompileStoreGeneric(Code::Flags flags); 324 Handle<Code> CompileStoreGeneric(Code::Flags flags);
355 Handle<Code> CompileStoreMegamorphic(Code::Flags flags); 325 Handle<Code> CompileStoreMegamorphic(Code::Flags flags);
356 326
357 Handle<Code> CompileMonomorphic(Handle<HeapType> type, Handle<Code> handler, 327 Handle<Code> CompileMonomorphic(Handle<HeapType> type, Handle<Code> handler,
358 Handle<Name> name, IcCheckType check); 328 Handle<Name> name, IcCheckType check);
359
360 Handle<Code> CompilePolymorphic(TypeHandleList* types, 329 Handle<Code> CompilePolymorphic(TypeHandleList* types,
361 CodeHandleList* handlers, Handle<Name> name, 330 CodeHandleList* handlers, Handle<Name> name,
362 Code::StubType type, IcCheckType check); 331 Code::StubType type, IcCheckType check);
363 332
364 Handle<Code> CompileIndexedStoreMonomorphic(Handle<Map> receiver_map, 333 Handle<Code> CompileIndexedStoreMonomorphic(Handle<Map> receiver_map,
365 KeyedAccessStoreMode store_mode); 334 KeyedAccessStoreMode store_mode);
366 Handle<Code> CompileIndexedStorePolymorphic(MapHandleList* receiver_maps, 335 Handle<Code> CompileIndexedStorePolymorphic(MapHandleList* receiver_maps,
367 KeyedAccessStoreMode store_mode); 336 KeyedAccessStoreMode store_mode);
337 Handle<Code> CompileIndexedStorePolymorphic(MapHandleList* receiver_maps,
338 CodeHandleList* handler_stubs,
339 MapHandleList* transitioned_maps);
368 340
369 private:
370 bool IncludesNumberType(TypeHandleList* types); 341 bool IncludesNumberType(TypeHandleList* types);
371 342
372 Handle<Code> GetCode(Code::Kind kind, Code::StubType type, Handle<Name> name, 343 Handle<Code> GetCode(Code::Kind kind, Code::StubType type, Handle<Name> name,
373 InlineCacheState state = MONOMORPHIC); 344 InlineCacheState state = MONOMORPHIC);
374 345
375 Logger::LogEventsAndTags log_kind(Handle<Code> code) { 346 Logger::LogEventsAndTags log_kind(Handle<Code> code) {
376 if (kind() == Code::LOAD_IC) { 347 if (kind() == Code::LOAD_IC) {
377 return code->ic_state() == MONOMORPHIC ? Logger::LOAD_IC_TAG 348 return code->ic_state() == MONOMORPHIC ? Logger::LOAD_IC_TAG
378 : Logger::LOAD_POLYMORPHIC_IC_TAG; 349 : Logger::LOAD_POLYMORPHIC_IC_TAG;
379 } else if (kind() == Code::KEYED_LOAD_IC) { 350 } else if (kind() == Code::KEYED_LOAD_IC) {
380 return code->ic_state() == MONOMORPHIC 351 return code->ic_state() == MONOMORPHIC
381 ? Logger::KEYED_LOAD_IC_TAG 352 ? Logger::KEYED_LOAD_IC_TAG
382 : Logger::KEYED_LOAD_POLYMORPHIC_IC_TAG; 353 : Logger::KEYED_LOAD_POLYMORPHIC_IC_TAG;
383 } else if (kind() == Code::STORE_IC) { 354 } else if (kind() == Code::STORE_IC) {
384 return code->ic_state() == MONOMORPHIC ? Logger::STORE_IC_TAG 355 return code->ic_state() == MONOMORPHIC ? Logger::STORE_IC_TAG
385 : Logger::STORE_POLYMORPHIC_IC_TAG; 356 : Logger::STORE_POLYMORPHIC_IC_TAG;
386 } else { 357 } else {
387 ASSERT_EQ(Code::KEYED_STORE_IC, kind()); 358 ASSERT_EQ(Code::KEYED_STORE_IC, kind());
388 return code->ic_state() == MONOMORPHIC 359 return code->ic_state() == MONOMORPHIC
389 ? Logger::KEYED_STORE_IC_TAG 360 ? Logger::KEYED_STORE_IC_TAG
390 : Logger::KEYED_STORE_POLYMORPHIC_IC_TAG; 361 : Logger::KEYED_STORE_POLYMORPHIC_IC_TAG;
391 } 362 }
392 } 363 }
393 364
394 Handle<Code> CompileIndexedStorePolymorphic(MapHandleList* receiver_maps,
395 CodeHandleList* handler_stubs,
396 MapHandleList* transitioned_maps);
397 const ExtraICState extra_ic_state_; 365 const ExtraICState extra_ic_state_;
398 }; 366 };
399 367
400 368
401 class PropertyHandlerCompiler : public PropertyAccessCompiler { 369 class PropertyHandlerCompiler : public PropertyAccessCompiler {
402 public: 370 public:
403 static Handle<Code> Find(Handle<Name> name, Handle<Map> map, Code::Kind kind, 371 static Handle<Code> Find(Handle<Name> name, Handle<Map> map, Code::Kind kind,
404 CacheHolderFlag cache_holder, Code::StubType type); 372 CacheHolderFlag cache_holder, Code::StubType type);
405 373
406 protected: 374 protected:
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 475
508 Handle<Code> CompileLoadInterceptor(Handle<HeapType> type, 476 Handle<Code> CompileLoadInterceptor(Handle<HeapType> type,
509 Handle<JSObject> holder, 477 Handle<JSObject> holder,
510 Handle<Name> name); 478 Handle<Name> name);
511 479
512 Handle<Code> CompileLoadViaGetter(Handle<HeapType> type, 480 Handle<Code> CompileLoadViaGetter(Handle<HeapType> type,
513 Handle<JSObject> holder, 481 Handle<JSObject> holder,
514 Handle<Name> name, 482 Handle<Name> name,
515 Handle<JSFunction> getter); 483 Handle<JSFunction> getter);
516 484
517 Handle<Code> CompileLoadNonexistent(Handle<HeapType> type, 485 static Handle<Code> ComputeLoadNonexistent(Handle<Name> name,
518 Handle<JSObject> last, 486 Handle<HeapType> type);
519 Handle<Name> name);
520 487
521 Handle<Code> CompileLoadGlobal(Handle<HeapType> type, 488 Handle<Code> CompileLoadGlobal(Handle<HeapType> type,
522 Handle<GlobalObject> holder, 489 Handle<GlobalObject> holder,
523 Handle<PropertyCell> cell, 490 Handle<PropertyCell> cell,
524 Handle<Name> name, 491 Handle<Name> name,
525 bool is_dont_delete); 492 bool is_dont_delete);
526 493
527 static void GenerateLoadViaGetter(MacroAssembler* masm, Handle<HeapType> type, 494 static void GenerateLoadViaGetter(MacroAssembler* masm, Handle<HeapType> type,
528 Register receiver, 495 Register receiver,
529 Handle<JSFunction> getter); 496 Handle<JSFunction> getter);
530 497
531 static void GenerateLoadViaGetterForDeopt(MacroAssembler* masm) { 498 static void GenerateLoadViaGetterForDeopt(MacroAssembler* masm) {
532 GenerateLoadViaGetter(masm, Handle<HeapType>::null(), no_reg, 499 GenerateLoadViaGetter(masm, Handle<HeapType>::null(), no_reg,
533 Handle<JSFunction>()); 500 Handle<JSFunction>());
534 } 501 }
535 502
536 static void GenerateLoadFunctionPrototype(MacroAssembler* masm, 503 static void GenerateLoadFunctionPrototype(MacroAssembler* masm,
537 Register receiver, 504 Register receiver,
538 Register scratch1, 505 Register scratch1,
539 Register scratch2, 506 Register scratch2,
540 Label* miss_label); 507 Label* miss_label);
541 508
509 // These constants describe the structure of the interceptor arguments on the
510 // stack. The arguments are pushed by the (platform-specific)
511 // PushInterceptorArguments and read by LoadPropertyWithInterceptorOnly and
512 // LoadWithInterceptor.
513 static const int kInterceptorArgsNameIndex = 0;
514 static const int kInterceptorArgsInfoIndex = 1;
515 static const int kInterceptorArgsThisIndex = 2;
516 static const int kInterceptorArgsHolderIndex = 3;
517 static const int kInterceptorArgsLength = 4;
518
542 protected: 519 protected:
543 virtual Register FrontendHeader(Handle<HeapType> type, Register object_reg, 520 virtual Register FrontendHeader(Handle<HeapType> type, Register object_reg,
544 Handle<JSObject> holder, Handle<Name> name, 521 Handle<JSObject> holder, Handle<Name> name,
545 Label* miss); 522 Label* miss);
546 523
547 virtual void FrontendFooter(Handle<Name> name, Label* miss); 524 virtual void FrontendFooter(Handle<Name> name, Label* miss);
548 525
549 private: 526 private:
550 Register CallbackFrontend(Handle<HeapType> type, Register object_reg, 527 Register CallbackFrontend(Handle<HeapType> type, Register object_reg,
551 Handle<JSObject> holder, Handle<Name> name, 528 Handle<JSObject> holder, Handle<Name> name,
552 Handle<Object> callback); 529 Handle<Object> callback);
530 Handle<Code> CompileLoadNonexistent(Handle<HeapType> type,
531 Handle<JSObject> last, Handle<Name> name);
553 void NonexistentFrontend(Handle<HeapType> type, Handle<JSObject> last, 532 void NonexistentFrontend(Handle<HeapType> type, Handle<JSObject> last,
554 Handle<Name> name); 533 Handle<Name> name);
555 534
556 void GenerateLoadField(Register reg, 535 void GenerateLoadField(Register reg,
557 Handle<JSObject> holder, 536 Handle<JSObject> holder,
558 FieldIndex field, 537 FieldIndex field,
559 Representation representation); 538 Representation representation);
560 void GenerateLoadConstant(Handle<Object> value); 539 void GenerateLoadConstant(Handle<Object> value);
561 void GenerateLoadCallback(Register reg, 540 void GenerateLoadCallback(Register reg,
562 Handle<ExecutableAccessorInfo> callback); 541 Handle<ExecutableAccessorInfo> callback);
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 Handle<JSFunction> constant_function_; 736 Handle<JSFunction> constant_function_;
758 bool is_simple_api_call_; 737 bool is_simple_api_call_;
759 Handle<FunctionTemplateInfo> expected_receiver_type_; 738 Handle<FunctionTemplateInfo> expected_receiver_type_;
760 Handle<CallHandlerInfo> api_call_info_; 739 Handle<CallHandlerInfo> api_call_info_;
761 }; 740 };
762 741
763 742
764 } } // namespace v8::internal 743 } } // namespace v8::internal
765 744
766 #endif // V8_STUB_CACHE_H_ 745 #endif // V8_STUB_CACHE_H_
OLDNEW
« no previous file with comments | « src/ic.cc ('k') | src/stub-cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698