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 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
175 Map* transition, | 175 Map* transition, |
176 StrictModeFlag strict_mode); | 176 StrictModeFlag strict_mode); |
177 | 177 |
178 MUST_USE_RESULT MaybeObject* ComputeKeyedLoadOrStoreElement( | 178 MUST_USE_RESULT MaybeObject* ComputeKeyedLoadOrStoreElement( |
179 JSObject* receiver, | 179 JSObject* receiver, |
180 KeyedIC::StubKind stub_kind, | 180 KeyedIC::StubKind stub_kind, |
181 StrictModeFlag strict_mode); | 181 StrictModeFlag strict_mode); |
182 | 182 |
183 // --- | 183 // --- |
184 | 184 |
185 MUST_USE_RESULT MaybeObject* ComputeCallField( | 185 Handle<Code> ComputeCallField(int argc, |
186 int argc, | 186 Code::Kind, |
187 Code::Kind, | 187 Code::ExtraICState extra_state, |
188 Code::ExtraICState extra_ic_state, | 188 Handle<String> name, |
189 String* name, | 189 Handle<Object> object, |
190 Object* object, | 190 Handle<JSObject> holder, |
191 JSObject* holder, | 191 int index); |
192 int index); | |
193 | 192 |
194 MUST_USE_RESULT MaybeObject* ComputeCallConstant( | 193 Handle<Code> ComputeCallConstant(int argc, |
195 int argc, | 194 Code::Kind, |
196 Code::Kind, | 195 Code::ExtraICState extra_state, |
197 Code::ExtraICState extra_ic_state, | 196 Handle<String> name, |
198 String* name, | 197 Handle<Object> object, |
199 Object* object, | 198 Handle<JSObject> holder, |
200 JSObject* holder, | 199 Handle<JSFunction> function); |
201 JSFunction* function); | |
202 | 200 |
203 MUST_USE_RESULT MaybeObject* ComputeCallNormal( | 201 Handle<Code> ComputeCallInterceptor(int argc, |
204 int argc, | 202 Code::Kind, |
205 Code::Kind, | 203 Code::ExtraICState extra_state, |
206 Code::ExtraICState extra_ic_state, | 204 Handle<String> name, |
207 String* name, | 205 Handle<Object> object, |
208 JSObject* receiver); | 206 Handle<JSObject> holder); |
209 | 207 |
210 MUST_USE_RESULT MaybeObject* ComputeCallInterceptor( | 208 Handle<Code> ComputeCallGlobal(int argc, |
211 int argc, | 209 Code::Kind, |
212 Code::Kind, | 210 Code::ExtraICState extra_state, |
213 Code::ExtraICState extra_ic_state, | 211 Handle<String> name, |
214 String* name, | 212 Handle<JSObject> receiver, |
215 Object* object, | 213 Handle<GlobalObject> holder, |
216 JSObject* holder); | 214 Handle<JSGlobalPropertyCell> cell, |
217 | 215 Handle<JSFunction> function); |
218 MUST_USE_RESULT MaybeObject* ComputeCallGlobal( | |
219 int argc, | |
220 Code::Kind, | |
221 Code::ExtraICState extra_ic_state, | |
222 String* name, | |
223 JSObject* receiver, | |
224 GlobalObject* holder, | |
225 JSGlobalPropertyCell* cell, | |
226 JSFunction* function); | |
227 | 216 |
228 // --- | 217 // --- |
229 | 218 |
230 MUST_USE_RESULT MaybeObject* ComputeCallInitialize(int argc, | 219 Handle<Code> ComputeCallInitialize(int argc, RelocInfo::Mode mode); |
231 RelocInfo::Mode mode, | |
232 Code::Kind kind); | |
233 | |
234 Handle<Code> ComputeCallInitialize(int argc, | |
235 RelocInfo::Mode mode); | |
236 | 220 |
237 Handle<Code> ComputeKeyedCallInitialize(int argc); | 221 Handle<Code> ComputeKeyedCallInitialize(int argc); |
238 | 222 |
239 MUST_USE_RESULT MaybeObject* ComputeCallPreMonomorphic( | 223 Handle<Code> ComputeCallPreMonomorphic(int argc, |
240 int argc, | 224 Code::Kind kind, |
241 Code::Kind kind, | 225 Code::ExtraICState extra_state); |
242 Code::ExtraICState extra_ic_state); | |
243 | 226 |
244 MUST_USE_RESULT MaybeObject* ComputeCallNormal(int argc, | 227 Handle<Code> ComputeCallNormal(int argc, |
245 Code::Kind kind, | 228 Code::Kind kind, |
246 Code::ExtraICState state); | 229 Code::ExtraICState state); |
247 | 230 |
248 MUST_USE_RESULT MaybeObject* ComputeCallArguments(int argc, | 231 Handle<Code> ComputeCallArguments(int argc, Code::Kind kind); |
249 Code::Kind kind); | |
250 | 232 |
251 MUST_USE_RESULT MaybeObject* ComputeCallMegamorphic(int argc, | 233 Handle<Code> ComputeCallMegamorphic(int argc, |
252 Code::Kind kind, | 234 Code::Kind kind, |
253 Code::ExtraICState state); | 235 Code::ExtraICState state); |
254 | 236 |
255 MUST_USE_RESULT MaybeObject* ComputeCallMiss(int argc, | 237 Handle<Code> ComputeCallMiss(int argc, |
256 Code::Kind kind, | 238 Code::Kind kind, |
257 Code::ExtraICState state); | 239 Code::ExtraICState state); |
240 | |
241 MUST_USE_RESULT MaybeObject* TryComputeCallMiss(int argc, | |
242 Code::Kind kind, | |
243 Code::ExtraICState state); | |
258 | 244 |
259 // Finds the Code object stored in the Heap::non_monomorphic_cache(). | 245 // Finds the Code object stored in the Heap::non_monomorphic_cache(). |
260 MUST_USE_RESULT Code* FindCallInitialize(int argc, | 246 Code* FindCallInitialize(int argc, RelocInfo::Mode mode, Code::Kind kind); |
261 RelocInfo::Mode mode, | |
262 Code::Kind kind); | |
263 | 247 |
264 #ifdef ENABLE_DEBUGGER_SUPPORT | 248 #ifdef ENABLE_DEBUGGER_SUPPORT |
265 MUST_USE_RESULT MaybeObject* ComputeCallDebugBreak(int argc, Code::Kind kind); | 249 Handle<Code> ComputeCallDebugBreak(int argc, Code::Kind kind); |
266 | 250 |
267 MUST_USE_RESULT MaybeObject* ComputeCallDebugPrepareStepIn(int argc, | 251 Handle<Code> ComputeCallDebugPrepareStepIn(int argc, Code::Kind kind); |
268 Code::Kind kind); | |
269 #endif | 252 #endif |
270 | 253 |
271 // Update cache for entry hash(name, map). | 254 // Update cache for entry hash(name, map). |
272 Code* Set(String* name, Map* map, Code* code); | 255 Code* Set(String* name, Map* map, Code* code); |
273 | 256 |
274 // Clear the lookup table (@ mark compact collection). | 257 // Clear the lookup table (@ mark compact collection). |
275 void Clear(); | 258 void Clear(); |
276 | 259 |
277 // Collect all maps that match the name and flags. | 260 // Collect all maps that match the name and flags. |
278 void CollectMatchingMaps(SmallMapList* types, | 261 void CollectMatchingMaps(SmallMapList* types, |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
317 return NULL; | 300 return NULL; |
318 } | 301 } |
319 | 302 |
320 Isolate* isolate() { return isolate_; } | 303 Isolate* isolate() { return isolate_; } |
321 Heap* heap() { return isolate()->heap(); } | 304 Heap* heap() { return isolate()->heap(); } |
322 Factory* factory() { return isolate()->factory(); } | 305 Factory* factory() { return isolate()->factory(); } |
323 | 306 |
324 private: | 307 private: |
325 explicit StubCache(Isolate* isolate); | 308 explicit StubCache(Isolate* isolate); |
326 | 309 |
327 friend class Isolate; | 310 Handle<Code> ComputeCallInitialize(int argc, |
328 friend class SCTableReference; | 311 RelocInfo::Mode mode, |
329 static const int kPrimaryTableSize = 2048; | 312 Code::Kind kind); |
330 static const int kSecondaryTableSize = 512; | |
331 Entry primary_[kPrimaryTableSize]; | |
332 Entry secondary_[kSecondaryTableSize]; | |
333 | 313 |
334 // Computes the hashed offsets for primary and secondary caches. | 314 // Computes the hashed offsets for primary and secondary caches. |
335 static int PrimaryOffset(String* name, Code::Flags flags, Map* map) { | 315 static int PrimaryOffset(String* name, Code::Flags flags, Map* map) { |
336 // This works well because the heap object tag size and the hash | 316 // This works well because the heap object tag size and the hash |
337 // shift are equal. Shifting down the length field to get the | 317 // shift are equal. Shifting down the length field to get the |
338 // hash code would effectively throw away two bits of the hash | 318 // hash code would effectively throw away two bits of the hash |
339 // code. | 319 // code. |
340 STATIC_ASSERT(kHeapObjectTagSize == String::kHashShift); | 320 STATIC_ASSERT(kHeapObjectTagSize == String::kHashShift); |
341 // Compute the hash of the name (use entire hash field). | 321 // Compute the hash of the name (use entire hash field). |
342 ASSERT(name->HasHashCode()); | 322 ASSERT(name->HasHashCode()); |
(...skipping 24 matching lines...) Expand all Loading... | |
367 // we do in generated code. We generate an hash code that already | 347 // we do in generated code. We generate an hash code that already |
368 // ends in String::kHashShift 0s. Then we shift it so it is a multiple | 348 // ends in String::kHashShift 0s. Then we shift it so it is a multiple |
369 // of sizeof(Entry). This makes it easier to avoid making mistakes | 349 // of sizeof(Entry). This makes it easier to avoid making mistakes |
370 // in the hashed offset computations. | 350 // in the hashed offset computations. |
371 static Entry* entry(Entry* table, int offset) { | 351 static Entry* entry(Entry* table, int offset) { |
372 const int shift_amount = kPointerSizeLog2 + 1 - String::kHashShift; | 352 const int shift_amount = kPointerSizeLog2 + 1 - String::kHashShift; |
373 return reinterpret_cast<Entry*>( | 353 return reinterpret_cast<Entry*>( |
374 reinterpret_cast<Address>(table) + (offset << shift_amount)); | 354 reinterpret_cast<Address>(table) + (offset << shift_amount)); |
375 } | 355 } |
376 | 356 |
357 static const int kPrimaryTableSize = 2048; | |
358 static const int kSecondaryTableSize = 512; | |
359 | |
360 Entry primary_[kPrimaryTableSize]; | |
361 Entry secondary_[kSecondaryTableSize]; | |
377 Isolate* isolate_; | 362 Isolate* isolate_; |
378 | 363 |
364 friend class Isolate; | |
365 friend class SCTableReference; | |
366 | |
379 DISALLOW_COPY_AND_ASSIGN(StubCache); | 367 DISALLOW_COPY_AND_ASSIGN(StubCache); |
380 }; | 368 }; |
381 | 369 |
382 | 370 |
383 // ------------------------------------------------------------------------ | 371 // ------------------------------------------------------------------------ |
384 | 372 |
385 | 373 |
386 // Support functions for IC stubs for callbacks. | 374 // Support functions for IC stubs for callbacks. |
387 DECLARE_RUNTIME_FUNCTION(MaybeObject*, LoadCallbackProperty); | 375 DECLARE_RUNTIME_FUNCTION(MaybeObject*, LoadCallbackProperty); |
388 DECLARE_RUNTIME_FUNCTION(MaybeObject*, StoreCallbackProperty); | 376 DECLARE_RUNTIME_FUNCTION(MaybeObject*, StoreCallbackProperty); |
389 | 377 |
390 | 378 |
391 // Support functions for IC stubs for interceptors. | 379 // Support functions for IC stubs for interceptors. |
392 DECLARE_RUNTIME_FUNCTION(MaybeObject*, LoadPropertyWithInterceptorOnly); | 380 DECLARE_RUNTIME_FUNCTION(MaybeObject*, LoadPropertyWithInterceptorOnly); |
393 DECLARE_RUNTIME_FUNCTION(MaybeObject*, LoadPropertyWithInterceptorForLoad); | 381 DECLARE_RUNTIME_FUNCTION(MaybeObject*, LoadPropertyWithInterceptorForLoad); |
394 DECLARE_RUNTIME_FUNCTION(MaybeObject*, LoadPropertyWithInterceptorForCall); | 382 DECLARE_RUNTIME_FUNCTION(MaybeObject*, LoadPropertyWithInterceptorForCall); |
395 DECLARE_RUNTIME_FUNCTION(MaybeObject*, StoreInterceptorProperty); | 383 DECLARE_RUNTIME_FUNCTION(MaybeObject*, StoreInterceptorProperty); |
396 DECLARE_RUNTIME_FUNCTION(MaybeObject*, CallInterceptorProperty); | 384 DECLARE_RUNTIME_FUNCTION(MaybeObject*, CallInterceptorProperty); |
397 DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedLoadPropertyWithInterceptor); | 385 DECLARE_RUNTIME_FUNCTION(MaybeObject*, KeyedLoadPropertyWithInterceptor); |
398 | 386 |
399 | 387 |
400 // The stub compiler compiles stubs for the stub cache. | 388 // The stub compiler compiles stubs for the stub cache. |
401 class StubCompiler BASE_EMBEDDED { | 389 class StubCompiler BASE_EMBEDDED { |
402 public: | 390 public: |
403 explicit StubCompiler(Isolate* isolate) | 391 explicit StubCompiler(Isolate* isolate) |
404 : isolate_(isolate), masm_(isolate, NULL, 256), failure_(NULL) { } | 392 : isolate_(isolate), masm_(isolate, NULL, 256), failure_(NULL) { } |
405 | 393 |
406 MUST_USE_RESULT MaybeObject* CompileCallInitialize(Code::Flags flags); | 394 Handle<Code> CompileCallInitialize(Code::Flags flags); |
407 MUST_USE_RESULT MaybeObject* CompileCallPreMonomorphic(Code::Flags flags); | 395 MUST_USE_RESULT MaybeObject* TryCompileCallInitialize(Code::Flags flags); |
408 MUST_USE_RESULT MaybeObject* CompileCallNormal(Code::Flags flags); | 396 |
409 MUST_USE_RESULT MaybeObject* CompileCallMegamorphic(Code::Flags flags); | 397 Handle<Code> CompileCallPreMonomorphic(Code::Flags flags); |
410 MUST_USE_RESULT MaybeObject* CompileCallArguments(Code::Flags flags); | 398 MUST_USE_RESULT MaybeObject* TryCompileCallPreMonomorphic(Code::Flags flags); |
411 MUST_USE_RESULT MaybeObject* CompileCallMiss(Code::Flags flags); | 399 |
400 Handle<Code> CompileCallNormal(Code::Flags flags); | |
401 MUST_USE_RESULT MaybeObject* TryCompileCallNormal(Code::Flags flags); | |
402 | |
403 Handle<Code> CompileCallMegamorphic(Code::Flags flags); | |
404 MUST_USE_RESULT MaybeObject* TryCompileCallMegamorphic(Code::Flags flags); | |
405 | |
406 Handle<Code> CompileCallArguments(Code::Flags flags); | |
407 MUST_USE_RESULT MaybeObject* TryCompileCallArguments(Code::Flags flags); | |
408 | |
409 Handle<Code> CompileCallMiss(Code::Flags flags); | |
410 MUST_USE_RESULT MaybeObject* TryCompileCallMiss(Code::Flags flags); | |
411 | |
412 #ifdef ENABLE_DEBUGGER_SUPPORT | 412 #ifdef ENABLE_DEBUGGER_SUPPORT |
413 MUST_USE_RESULT MaybeObject* CompileCallDebugBreak(Code::Flags flags); | 413 Handle<Code> CompileCallDebugBreak(Code::Flags flags); |
414 MUST_USE_RESULT MaybeObject* CompileCallDebugPrepareStepIn(Code::Flags flags); | 414 MUST_USE_RESULT MaybeObject* TryCompileCallDebugBreak(Code::Flags flags); |
415 | |
416 Handle<Code> CompileCallDebugPrepareStepIn(Code::Flags flags); | |
417 MUST_USE_RESULT MaybeObject* TryCompileCallDebugPrepareStepIn( | |
418 Code::Flags flags); | |
415 #endif | 419 #endif |
416 | 420 |
417 // Static functions for generating parts of stubs. | 421 // Static functions for generating parts of stubs. |
418 static void GenerateLoadGlobalFunctionPrototype(MacroAssembler* masm, | 422 static void GenerateLoadGlobalFunctionPrototype(MacroAssembler* masm, |
419 int index, | 423 int index, |
420 Register prototype); | 424 Register prototype); |
421 | 425 |
422 // Generates prototype loading code that uses the objects from the | 426 // Generates prototype loading code that uses the objects from the |
423 // context we were in when this function was called. If the context | 427 // context we were in when this function was called. If the context |
424 // has changed, a jump to miss is performed. This ties the generated | 428 // has changed, a jump to miss is performed. This ties the generated |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
778 V(MathAbs) | 782 V(MathAbs) |
779 | 783 |
780 | 784 |
781 class CallOptimization; | 785 class CallOptimization; |
782 | 786 |
783 class CallStubCompiler: public StubCompiler { | 787 class CallStubCompiler: public StubCompiler { |
784 public: | 788 public: |
785 CallStubCompiler(Isolate* isolate, | 789 CallStubCompiler(Isolate* isolate, |
786 int argc, | 790 int argc, |
787 Code::Kind kind, | 791 Code::Kind kind, |
788 Code::ExtraICState extra_ic_state, | 792 Code::ExtraICState extra_state, |
789 InlineCacheHolderFlag cache_holder); | 793 InlineCacheHolderFlag cache_holder); |
790 | 794 |
791 MUST_USE_RESULT MaybeObject* CompileCallField( | 795 Handle<Code> CompileCallField(Handle<JSObject> object, |
792 JSObject* object, | 796 Handle<JSObject> holder, |
793 JSObject* holder, | 797 int index, |
794 int index, | 798 Handle<String> name); |
795 String* name); | |
796 | 799 |
797 MUST_USE_RESULT MaybeObject* CompileCallConstant( | 800 MUST_USE_RESULT MaybeObject* CompileCallField(JSObject* object, |
Vyacheslav Egorov (Chromium)
2011/10/20 10:12:23
Should not we prefix unhandlified functions' names
Kevin Millikin (Chromium)
2011/10/20 10:57:08
Maybe. They're going to be changed next, so we'll
| |
798 Object* object, | 801 JSObject* holder, |
799 JSObject* holder, | 802 int index, |
800 JSFunction* function, | 803 String* name); |
801 String* name, | |
802 CheckType check); | |
803 | 804 |
804 MUST_USE_RESULT MaybeObject* CompileCallInterceptor( | 805 Handle<Code> CompileCallConstant(Handle<Object> object, |
805 JSObject* object, | 806 Handle<JSObject> holder, |
806 JSObject* holder, | 807 Handle<JSFunction> function, |
807 String* name); | 808 Handle<String> name, |
809 CheckType check); | |
808 | 810 |
809 MUST_USE_RESULT MaybeObject* CompileCallGlobal( | 811 MUST_USE_RESULT MaybeObject* CompileCallConstant(Object* object, |
810 JSObject* object, | 812 JSObject* holder, |
811 GlobalObject* holder, | 813 JSFunction* function, |
812 JSGlobalPropertyCell* cell, | 814 String* name, |
813 JSFunction* function, | 815 CheckType check); |
814 String* name); | 816 |
817 Handle<Code> CompileCallInterceptor(Handle<JSObject> object, | |
818 Handle<JSObject> holder, | |
819 Handle<String> name); | |
820 | |
821 MUST_USE_RESULT MaybeObject* CompileCallInterceptor(JSObject* object, | |
822 JSObject* holder, | |
823 String* name); | |
824 | |
825 Handle<Code> CompileCallGlobal(Handle<JSObject> object, | |
826 Handle<GlobalObject> holder, | |
827 Handle<JSGlobalPropertyCell> cell, | |
828 Handle<JSFunction> function, | |
829 Handle<String> name); | |
830 | |
831 MUST_USE_RESULT MaybeObject* CompileCallGlobal(JSObject* object, | |
832 GlobalObject* holder, | |
833 JSGlobalPropertyCell* cell, | |
834 JSFunction* function, | |
835 String* name); | |
815 | 836 |
816 static bool HasCustomCallGenerator(JSFunction* function); | 837 static bool HasCustomCallGenerator(JSFunction* function); |
817 | 838 |
818 private: | 839 private: |
819 // Compiles a custom call constant/global IC. For constant calls | 840 // Compiles a custom call constant/global IC. For constant calls |
820 // cell is NULL. Returns undefined if there is no custom call code | 841 // cell is NULL. Returns undefined if there is no custom call code |
821 // for the given function or it can't be generated. | 842 // for the given function or it can't be generated. |
822 MUST_USE_RESULT MaybeObject* CompileCustomCall(Object* object, | 843 MUST_USE_RESULT MaybeObject* CompileCustomCall(Object* object, |
823 JSObject* holder, | 844 JSObject* holder, |
824 JSGlobalPropertyCell* cell, | 845 JSGlobalPropertyCell* cell, |
(...skipping 12 matching lines...) Expand all Loading... | |
837 MUST_USE_RESULT MaybeObject* CompileFastApiCall( | 858 MUST_USE_RESULT MaybeObject* CompileFastApiCall( |
838 const CallOptimization& optimization, | 859 const CallOptimization& optimization, |
839 Object* object, | 860 Object* object, |
840 JSObject* holder, | 861 JSObject* holder, |
841 JSGlobalPropertyCell* cell, | 862 JSGlobalPropertyCell* cell, |
842 JSFunction* function, | 863 JSFunction* function, |
843 String* name); | 864 String* name); |
844 | 865 |
845 const ParameterCount arguments_; | 866 const ParameterCount arguments_; |
846 const Code::Kind kind_; | 867 const Code::Kind kind_; |
847 const Code::ExtraICState extra_ic_state_; | 868 const Code::ExtraICState extra_state_; |
848 const InlineCacheHolderFlag cache_holder_; | 869 const InlineCacheHolderFlag cache_holder_; |
849 | 870 |
850 const ParameterCount& arguments() { return arguments_; } | 871 const ParameterCount& arguments() { return arguments_; } |
851 | 872 |
852 MUST_USE_RESULT MaybeObject* GetCode(PropertyType type, String* name); | 873 MUST_USE_RESULT MaybeObject* GetCode(PropertyType type, String* name); |
853 | 874 |
854 // Convenience function. Calls GetCode above passing | 875 // Convenience function. Calls GetCode above passing |
855 // CONSTANT_FUNCTION type and the name of the given function. | 876 // CONSTANT_FUNCTION type and the name of the given function. |
856 MUST_USE_RESULT MaybeObject* GetCode(JSFunction* function); | 877 MUST_USE_RESULT MaybeObject* GetCode(JSFunction* function); |
857 | 878 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
930 JSFunction* constant_function_; | 951 JSFunction* constant_function_; |
931 bool is_simple_api_call_; | 952 bool is_simple_api_call_; |
932 FunctionTemplateInfo* expected_receiver_type_; | 953 FunctionTemplateInfo* expected_receiver_type_; |
933 CallHandlerInfo* api_call_info_; | 954 CallHandlerInfo* api_call_info_; |
934 }; | 955 }; |
935 | 956 |
936 | 957 |
937 } } // namespace v8::internal | 958 } } // namespace v8::internal |
938 | 959 |
939 #endif // V8_STUB_CACHE_H_ | 960 #endif // V8_STUB_CACHE_H_ |
OLD | NEW |