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/code-stubs.h

Issue 1150673002: Add a TurboFan skeleton for StringAddStub. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fixed frame construction logic Created 5 years, 7 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 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 V(RegExpConstructResult) \ 82 V(RegExpConstructResult) \
83 V(StoreFastElement) \ 83 V(StoreFastElement) \
84 V(StoreScriptContextField) \ 84 V(StoreScriptContextField) \
85 V(StringAdd) \ 85 V(StringAdd) \
86 V(ToBoolean) \ 86 V(ToBoolean) \
87 V(TransitionElementsKind) \ 87 V(TransitionElementsKind) \
88 V(KeyedLoadIC) \ 88 V(KeyedLoadIC) \
89 V(LoadIC) \ 89 V(LoadIC) \
90 /* TurboFanCodeStubs */ \ 90 /* TurboFanCodeStubs */ \
91 V(StringLengthTF) \ 91 V(StringLengthTF) \
92 V(StringAddTF) \
92 V(MathFloor) \ 93 V(MathFloor) \
93 /* IC Handler stubs */ \ 94 /* IC Handler stubs */ \
94 V(ArrayBufferViewLoadField) \ 95 V(ArrayBufferViewLoadField) \
95 V(LoadConstant) \ 96 V(LoadConstant) \
96 V(LoadFastElement) \ 97 V(LoadFastElement) \
97 V(LoadField) \ 98 V(LoadField) \
98 V(KeyedLoadSloppyArguments) \ 99 V(KeyedLoadSloppyArguments) \
99 V(StoreField) \ 100 V(StoreField) \
100 V(StoreGlobal) \ 101 V(StoreGlobal) \
101 V(StoreTransition) \ 102 V(StoreTransition) \
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 void Generate(MacroAssembler* masm) override; \ 348 void Generate(MacroAssembler* masm) override; \
348 DEFINE_CODE_STUB(NAME, SUPER) 349 DEFINE_CODE_STUB(NAME, SUPER)
349 350
350 351
351 #define DEFINE_HYDROGEN_CODE_STUB(NAME, SUPER) \ 352 #define DEFINE_HYDROGEN_CODE_STUB(NAME, SUPER) \
352 public: \ 353 public: \
353 void InitializeDescriptor(CodeStubDescriptor* descriptor) override; \ 354 void InitializeDescriptor(CodeStubDescriptor* descriptor) override; \
354 Handle<Code> GenerateCode() override; \ 355 Handle<Code> GenerateCode() override; \
355 DEFINE_CODE_STUB(NAME, SUPER) 356 DEFINE_CODE_STUB(NAME, SUPER)
356 357
357 #define DEFINE_TURBOFAN_CODE_STUB(NAME, SUPER, DESC, STACK_PARAMS) \ 358 #define DEFINE_TURBOFAN_CODE_STUB(NAME, SUPER) \
358 public: \ 359 public: \
359 NAME##Stub(Isolate* isolate) : SUPER(isolate) {} \ 360 const char* GetFunctionName() const override { return #NAME "_STUB"; } \
360 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { \
361 return DESC(isolate()); \
362 }; \
363 virtual const char* GetFunctionName() const override { \
364 return #NAME "_STUB"; \
365 } \
366 int GetStackParameterCount() const override { return STACK_PARAMS; } \
367 Code::StubType GetStubType() const override { return Code::FAST; } \
368 DEFINE_CODE_STUB(NAME, SUPER) 361 DEFINE_CODE_STUB(NAME, SUPER)
369 362
370 #define DEFINE_HANDLER_CODE_STUB(NAME, SUPER) \ 363 #define DEFINE_HANDLER_CODE_STUB(NAME, SUPER) \
371 public: \ 364 public: \
372 Handle<Code> GenerateCode() override; \ 365 Handle<Code> GenerateCode() override; \
373 DEFINE_CODE_STUB(NAME, SUPER) 366 DEFINE_CODE_STUB(NAME, SUPER)
374 367
375 #define DEFINE_CALL_INTERFACE_DESCRIPTOR(NAME) \ 368 #define DEFINE_CALL_INTERFACE_DESCRIPTOR(NAME) \
376 public: \ 369 public: \
377 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { \ 370 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { \
378 return NAME##Descriptor(isolate()); \ 371 return NAME##Descriptor(isolate()); \
379 } 372 }
380 373
381 // There are some code stubs we just can't describe right now with a 374 // There are some code stubs we just can't describe right now with a
382 // CallInterfaceDescriptor. Isolate behavior for those cases with this macro. 375 // CallInterfaceDescriptor. Isolate behavior for those cases with this macro.
383 // An attempt to retrieve a descriptor will fail. 376 // An attempt to retrieve a descriptor will fail.
384 #define DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR() \ 377 #define DEFINE_NULL_CALL_INTERFACE_DESCRIPTOR() \
385 public: \ 378 public: \
386 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { \ 379 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { \
387 UNREACHABLE(); \ 380 UNREACHABLE(); \
388 return CallInterfaceDescriptor(); \ 381 return CallInterfaceDescriptor(); \
389 } 382 }
390 383
391 384
392 class PlatformCodeStub : public CodeStub { 385 class PlatformCodeStub : public CodeStub {
393 public: 386 public:
394 // Retrieve the code for the stub. Generate the code if needed. 387 // Retrieve the code for the stub. Generate the code if needed.
395 Handle<Code> GenerateCode() override; 388 Handle<Code> GenerateCode() override;
396 389
397 Code::Kind GetCodeKind() const override { return Code::STUB; }
398
399 protected: 390 protected:
400 explicit PlatformCodeStub(Isolate* isolate) : CodeStub(isolate) {} 391 explicit PlatformCodeStub(Isolate* isolate) : CodeStub(isolate) {}
401 392
402 // Generates the assembler code for the stub. 393 // Generates the assembler code for the stub.
403 virtual void Generate(MacroAssembler* masm) = 0; 394 virtual void Generate(MacroAssembler* masm) = 0;
404 395
405 DEFINE_CODE_STUB_BASE(PlatformCodeStub, CodeStub); 396 DEFINE_CODE_STUB_BASE(PlatformCodeStub, CodeStub);
406 }; 397 };
407 398
408 399
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 }; 478 };
488 479
489 480
490 class HydrogenCodeStub : public CodeStub { 481 class HydrogenCodeStub : public CodeStub {
491 public: 482 public:
492 enum InitializationState { 483 enum InitializationState {
493 UNINITIALIZED, 484 UNINITIALIZED,
494 INITIALIZED 485 INITIALIZED
495 }; 486 };
496 487
497 Code::Kind GetCodeKind() const override { return Code::STUB; }
498
499 template<class SubClass> 488 template<class SubClass>
500 static Handle<Code> GetUninitialized(Isolate* isolate) { 489 static Handle<Code> GetUninitialized(Isolate* isolate) {
501 SubClass::GenerateAheadOfTime(isolate); 490 SubClass::GenerateAheadOfTime(isolate);
502 return SubClass().GetCode(isolate); 491 return SubClass().GetCode(isolate);
503 } 492 }
504 493
505 // Retrieve the code for the stub. Generate the code if needed. 494 // Retrieve the code for the stub. Generate the code if needed.
506 Handle<Code> GenerateCode() override = 0; 495 Handle<Code> GenerateCode() override = 0;
507 496
508 bool IsUninitialized() const { return IsMissBits::decode(minor_key_); } 497 bool IsUninitialized() const { return IsMissBits::decode(minor_key_); }
(...skipping 23 matching lines...) Expand all
532 class SubMinorKeyBits : public BitField<int, 0, kSubMinorKeyBits> {}; 521 class SubMinorKeyBits : public BitField<int, 0, kSubMinorKeyBits> {};
533 522
534 void GenerateLightweightMiss(MacroAssembler* masm, ExternalReference miss); 523 void GenerateLightweightMiss(MacroAssembler* masm, ExternalReference miss);
535 524
536 DEFINE_CODE_STUB_BASE(HydrogenCodeStub, CodeStub); 525 DEFINE_CODE_STUB_BASE(HydrogenCodeStub, CodeStub);
537 }; 526 };
538 527
539 528
540 class TurboFanCodeStub : public CodeStub { 529 class TurboFanCodeStub : public CodeStub {
541 public: 530 public:
542 Code::Kind GetCodeKind() const override { return Code::STUB; }
543
544 // Retrieve the code for the stub. Generate the code if needed. 531 // Retrieve the code for the stub. Generate the code if needed.
545 Handle<Code> GenerateCode() override; 532 Handle<Code> GenerateCode() override;
546 533
534 Code::StubType GetStubType() const override { return Code::FAST; }
535
547 virtual const char* GetFunctionName() const = 0; 536 virtual const char* GetFunctionName() const = 0;
548 537
549 protected: 538 protected:
550 explicit TurboFanCodeStub(Isolate* isolate) : CodeStub(isolate) {} 539 explicit TurboFanCodeStub(Isolate* isolate) : CodeStub(isolate) {}
551 540
552 private: 541 private:
553 DEFINE_CODE_STUB_BASE(TurboFanCodeStub, CodeStub); 542 DEFINE_CODE_STUB_BASE(TurboFanCodeStub, CodeStub);
554 }; 543 };
555 544
556 545
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 public: 603 public:
615 NopRuntimeCallHelper() {} 604 NopRuntimeCallHelper() {}
616 605
617 virtual void BeforeCall(MacroAssembler* masm) const {} 606 virtual void BeforeCall(MacroAssembler* masm) const {}
618 607
619 virtual void AfterCall(MacroAssembler* masm) const {} 608 virtual void AfterCall(MacroAssembler* masm) const {}
620 }; 609 };
621 610
622 611
623 class MathFloorStub : public TurboFanCodeStub { 612 class MathFloorStub : public TurboFanCodeStub {
624 DEFINE_TURBOFAN_CODE_STUB(MathFloor, TurboFanCodeStub, 613 public:
625 MathRoundVariantDescriptor, 1); 614 explicit MathFloorStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
615 int GetStackParameterCount() const override { return 1; }
616
617 DEFINE_CALL_INTERFACE_DESCRIPTOR(MathRoundVariant);
618 DEFINE_TURBOFAN_CODE_STUB(MathFloor, TurboFanCodeStub);
626 }; 619 };
627 620
628 621
629 class StringLengthTFStub : public TurboFanCodeStub { 622 class StringLengthTFStub : public TurboFanCodeStub {
630 DEFINE_TURBOFAN_CODE_STUB(StringLengthTF, TurboFanCodeStub, 623 public:
631 LoadWithVectorDescriptor, 0); 624 explicit StringLengthTFStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
632 625
633 public:
634 Code::Kind GetCodeKind() const override { return Code::HANDLER; } 626 Code::Kind GetCodeKind() const override { return Code::HANDLER; }
635 InlineCacheState GetICState() const override { return MONOMORPHIC; } 627 InlineCacheState GetICState() const override { return MONOMORPHIC; }
636 ExtraICState GetExtraICState() const override { return Code::LOAD_IC; } 628 ExtraICState GetExtraICState() const override { return Code::LOAD_IC; }
629
630 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector);
631 DEFINE_TURBOFAN_CODE_STUB(StringLengthTF, TurboFanCodeStub);
637 }; 632 };
638 633
639 634
635 enum StringAddFlags {
636 // Omit both parameter checks.
637 STRING_ADD_CHECK_NONE = 0,
638 // Check left parameter.
639 STRING_ADD_CHECK_LEFT = 1 << 0,
640 // Check right parameter.
641 STRING_ADD_CHECK_RIGHT = 1 << 1,
642 // Check both parameters.
643 STRING_ADD_CHECK_BOTH = STRING_ADD_CHECK_LEFT | STRING_ADD_CHECK_RIGHT
644 };
645
646
647 std::ostream& operator<<(std::ostream& os, const StringAddFlags& flags);
648
649
650 class StringAddTFStub : public TurboFanCodeStub {
651 public:
652 StringAddTFStub(Isolate* isolate, StringAddFlags flags,
653 PretenureFlag pretenure_flag)
654 : TurboFanCodeStub(isolate) {
655 minor_key_ = StringAddFlagsBits::encode(flags) |
656 PretenureFlagBits::encode(pretenure_flag);
657 }
658
659 StringAddFlags flags() const {
660 return StringAddFlagsBits::decode(MinorKey());
661 }
662
663 PretenureFlag pretenure_flag() const {
664 return PretenureFlagBits::decode(MinorKey());
665 }
666
667 private:
668 class StringAddFlagsBits : public BitField<StringAddFlags, 0, 2> {};
669 class PretenureFlagBits : public BitField<PretenureFlag, 2, 1> {};
670
671 void PrintBaseName(std::ostream& os) const override; // NOLINT
672
673 DEFINE_CALL_INTERFACE_DESCRIPTOR(StringAdd);
674 DEFINE_TURBOFAN_CODE_STUB(StringAddTF, TurboFanCodeStub);
675 };
676
677
640 class NumberToStringStub final : public HydrogenCodeStub { 678 class NumberToStringStub final : public HydrogenCodeStub {
641 public: 679 public:
642 explicit NumberToStringStub(Isolate* isolate) : HydrogenCodeStub(isolate) {} 680 explicit NumberToStringStub(Isolate* isolate) : HydrogenCodeStub(isolate) {}
643 681
644 // Parameters accessed via CodeStubGraphBuilder::GetParameter() 682 // Parameters accessed via CodeStubGraphBuilder::GetParameter()
645 static const int kNumber = 0; 683 static const int kNumber = 0;
646 684
647 DEFINE_CALL_INTERFACE_DESCRIPTOR(NumberToString); 685 DEFINE_CALL_INTERFACE_DESCRIPTOR(NumberToString);
648 DEFINE_HYDROGEN_CODE_STUB(NumberToString, HydrogenCodeStub); 686 DEFINE_HYDROGEN_CODE_STUB(NumberToString, HydrogenCodeStub);
649 }; 687 };
(...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after
1466 // Parameters accessed via CodeStubGraphBuilder::GetParameter() 1504 // Parameters accessed via CodeStubGraphBuilder::GetParameter()
1467 static const int kAllocationSite = 0; 1505 static const int kAllocationSite = 0;
1468 static const int kLeft = 1; 1506 static const int kLeft = 1;
1469 static const int kRight = 2; 1507 static const int kRight = 2;
1470 1508
1471 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOpWithAllocationSite); 1509 DEFINE_CALL_INTERFACE_DESCRIPTOR(BinaryOpWithAllocationSite);
1472 DEFINE_HYDROGEN_CODE_STUB(BinaryOpWithAllocationSite, BinaryOpICStub); 1510 DEFINE_HYDROGEN_CODE_STUB(BinaryOpWithAllocationSite, BinaryOpICStub);
1473 }; 1511 };
1474 1512
1475 1513
1476 enum StringAddFlags {
1477 // Omit both parameter checks.
1478 STRING_ADD_CHECK_NONE = 0,
1479 // Check left parameter.
1480 STRING_ADD_CHECK_LEFT = 1 << 0,
1481 // Check right parameter.
1482 STRING_ADD_CHECK_RIGHT = 1 << 1,
1483 // Check both parameters.
1484 STRING_ADD_CHECK_BOTH = STRING_ADD_CHECK_LEFT | STRING_ADD_CHECK_RIGHT
1485 };
1486
1487
1488 class StringAddStub final : public HydrogenCodeStub { 1514 class StringAddStub final : public HydrogenCodeStub {
1489 public: 1515 public:
1490 StringAddStub(Isolate* isolate, StringAddFlags flags, 1516 StringAddStub(Isolate* isolate, StringAddFlags flags,
1491 PretenureFlag pretenure_flag) 1517 PretenureFlag pretenure_flag)
1492 : HydrogenCodeStub(isolate) { 1518 : HydrogenCodeStub(isolate) {
1493 set_sub_minor_key(StringAddFlagsBits::encode(flags) | 1519 set_sub_minor_key(StringAddFlagsBits::encode(flags) |
1494 PretenureFlagBits::encode(pretenure_flag)); 1520 PretenureFlagBits::encode(pretenure_flag));
1495 } 1521 }
1496 1522
1497 StringAddFlags flags() const { 1523 StringAddFlags flags() const {
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
1784 public: 1810 public:
1785 explicit RestParamAccessStub(Isolate* isolate) : PlatformCodeStub(isolate) { } 1811 explicit RestParamAccessStub(Isolate* isolate) : PlatformCodeStub(isolate) { }
1786 1812
1787 CallInterfaceDescriptor GetCallInterfaceDescriptor() override { 1813 CallInterfaceDescriptor GetCallInterfaceDescriptor() override {
1788 return ContextOnlyDescriptor(isolate()); 1814 return ContextOnlyDescriptor(isolate());
1789 } 1815 }
1790 1816
1791 private: 1817 private:
1792 void GenerateNew(MacroAssembler* masm); 1818 void GenerateNew(MacroAssembler* masm);
1793 1819
1794 virtual void PrintName(std::ostream& os) const override; // NOLINT 1820 void PrintName(std::ostream& os) const override; // NOLINT
1795 1821
1796 DEFINE_PLATFORM_CODE_STUB(RestParamAccess, PlatformCodeStub); 1822 DEFINE_PLATFORM_CODE_STUB(RestParamAccess, PlatformCodeStub);
1797 }; 1823 };
1798 1824
1799 1825
1800 class RegExpExecStub: public PlatformCodeStub { 1826 class RegExpExecStub: public PlatformCodeStub {
1801 public: 1827 public:
1802 explicit RegExpExecStub(Isolate* isolate) : PlatformCodeStub(isolate) { } 1828 explicit RegExpExecStub(Isolate* isolate) : PlatformCodeStub(isolate) { }
1803 1829
1804 DEFINE_CALL_INTERFACE_DESCRIPTOR(ContextOnly); 1830 DEFINE_CALL_INTERFACE_DESCRIPTOR(ContextOnly);
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
2170 2196
2171 class LoadICStub : public PlatformCodeStub { 2197 class LoadICStub : public PlatformCodeStub {
2172 public: 2198 public:
2173 explicit LoadICStub(Isolate* isolate, const LoadICState& state) 2199 explicit LoadICStub(Isolate* isolate, const LoadICState& state)
2174 : PlatformCodeStub(isolate) { 2200 : PlatformCodeStub(isolate) {
2175 minor_key_ = state.GetExtraICState(); 2201 minor_key_ = state.GetExtraICState();
2176 } 2202 }
2177 2203
2178 void GenerateForTrampoline(MacroAssembler* masm); 2204 void GenerateForTrampoline(MacroAssembler* masm);
2179 2205
2180 virtual Code::Kind GetCodeKind() const override { return Code::LOAD_IC; } 2206 Code::Kind GetCodeKind() const override { return Code::LOAD_IC; }
2181 2207
2182 virtual InlineCacheState GetICState() const final override { return DEFAULT; } 2208 InlineCacheState GetICState() const final override { return DEFAULT; }
2183 2209
2184 virtual ExtraICState GetExtraICState() const final override { 2210 ExtraICState GetExtraICState() const final override {
2185 return static_cast<ExtraICState>(minor_key_); 2211 return static_cast<ExtraICState>(minor_key_);
2186 } 2212 }
2187 2213
2188 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); 2214 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector);
2189 DEFINE_PLATFORM_CODE_STUB(LoadIC, PlatformCodeStub); 2215 DEFINE_PLATFORM_CODE_STUB(LoadIC, PlatformCodeStub);
2190 2216
2191 protected: 2217 protected:
2192 void GenerateImpl(MacroAssembler* masm, bool in_frame); 2218 void GenerateImpl(MacroAssembler* masm, bool in_frame);
2193 }; 2219 };
2194 2220
2195 2221
2196 class KeyedLoadICStub : public PlatformCodeStub { 2222 class KeyedLoadICStub : public PlatformCodeStub {
2197 public: 2223 public:
2198 explicit KeyedLoadICStub(Isolate* isolate) : PlatformCodeStub(isolate) {} 2224 explicit KeyedLoadICStub(Isolate* isolate) : PlatformCodeStub(isolate) {}
2199 2225
2200 void GenerateForTrampoline(MacroAssembler* masm); 2226 void GenerateForTrampoline(MacroAssembler* masm);
2201 2227
2202 virtual Code::Kind GetCodeKind() const override { 2228 Code::Kind GetCodeKind() const override { return Code::KEYED_LOAD_IC; }
2203 return Code::KEYED_LOAD_IC;
2204 }
2205 2229
2206 virtual InlineCacheState GetICState() const final override { return DEFAULT; } 2230 InlineCacheState GetICState() const final override { return DEFAULT; }
2207 2231
2208 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector); 2232 DEFINE_CALL_INTERFACE_DESCRIPTOR(LoadWithVector);
2209 DEFINE_PLATFORM_CODE_STUB(KeyedLoadIC, PlatformCodeStub); 2233 DEFINE_PLATFORM_CODE_STUB(KeyedLoadIC, PlatformCodeStub);
2210 2234
2211 protected: 2235 protected:
2212 void GenerateImpl(MacroAssembler* masm, bool in_frame); 2236 void GenerateImpl(MacroAssembler* masm, bool in_frame);
2213 }; 2237 };
2214 2238
2215 2239
2216 class DoubleToIStub : public PlatformCodeStub { 2240 class DoubleToIStub : public PlatformCodeStub {
(...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after
2852 2876
2853 #undef DEFINE_CALL_INTERFACE_DESCRIPTOR 2877 #undef DEFINE_CALL_INTERFACE_DESCRIPTOR
2854 #undef DEFINE_PLATFORM_CODE_STUB 2878 #undef DEFINE_PLATFORM_CODE_STUB
2855 #undef DEFINE_HANDLER_CODE_STUB 2879 #undef DEFINE_HANDLER_CODE_STUB
2856 #undef DEFINE_HYDROGEN_CODE_STUB 2880 #undef DEFINE_HYDROGEN_CODE_STUB
2857 #undef DEFINE_CODE_STUB 2881 #undef DEFINE_CODE_STUB
2858 #undef DEFINE_CODE_STUB_BASE 2882 #undef DEFINE_CODE_STUB_BASE
2859 } } // namespace v8::internal 2883 } } // namespace v8::internal
2860 2884
2861 #endif // V8_CODE_STUBS_H_ 2885 #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