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

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

Issue 12317141: Added Isolate parameter to CodeStub::GetCode(). (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fixed whitespace. Rebased. Created 7 years, 9 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/arm/stub-cache-arm.cc ('k') | 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 // 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 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 public: 119 public:
120 enum Major { 120 enum Major {
121 #define DEF_ENUM(name) name, 121 #define DEF_ENUM(name) name,
122 CODE_STUB_LIST(DEF_ENUM) 122 CODE_STUB_LIST(DEF_ENUM)
123 #undef DEF_ENUM 123 #undef DEF_ENUM
124 NoCache, // marker for stubs that do custom caching 124 NoCache, // marker for stubs that do custom caching
125 NUMBER_OF_IDS 125 NUMBER_OF_IDS
126 }; 126 };
127 127
128 // Retrieve the code for the stub. Generate the code if needed. 128 // Retrieve the code for the stub. Generate the code if needed.
129 Handle<Code> GetCode(); 129 Handle<Code> GetCode(Isolate* isolate);
130 130
131 static Major MajorKeyFromKey(uint32_t key) { 131 static Major MajorKeyFromKey(uint32_t key) {
132 return static_cast<Major>(MajorKeyBits::decode(key)); 132 return static_cast<Major>(MajorKeyBits::decode(key));
133 } 133 }
134 static int MinorKeyFromKey(uint32_t key) { 134 static int MinorKeyFromKey(uint32_t key) {
135 return MinorKeyBits::decode(key); 135 return MinorKeyBits::decode(key);
136 } 136 }
137 137
138 // Gets the major key from a code object that is a code stub or binary op IC. 138 // Gets the major key from a code object that is a code stub or binary op IC.
139 static Major GetMajorKey(Code* code_stub) { 139 static Major GetMajorKey(Code* code_stub) {
140 return static_cast<Major>(code_stub->major_key()); 140 return static_cast<Major>(code_stub->major_key());
141 } 141 }
142 142
143 static const char* MajorName(Major major_key, bool allow_unknown_keys); 143 static const char* MajorName(Major major_key, bool allow_unknown_keys);
144 144
145 virtual ~CodeStub() {} 145 virtual ~CodeStub() {}
146 146
147 bool CompilingCallsToThisStubIsGCSafe() { 147 bool CompilingCallsToThisStubIsGCSafe() {
148 bool is_pregenerated = IsPregenerated(); 148 bool is_pregenerated = IsPregenerated();
149 Code* code = NULL; 149 Code* code = NULL;
150 CHECK(!is_pregenerated || FindCodeInCache(&code, Isolate::Current())); 150 CHECK(!is_pregenerated || FindCodeInCache(&code, Isolate::Current()));
151 return is_pregenerated; 151 return is_pregenerated;
152 } 152 }
153 153
154 // See comment above, where Instanceof is defined. 154 // See comment above, where Instanceof is defined.
155 virtual bool IsPregenerated() { return false; } 155 virtual bool IsPregenerated() { return false; }
156 156
157 static void GenerateStubsAheadOfTime(); 157 static void GenerateStubsAheadOfTime(Isolate* isolate);
158 static void GenerateFPStubs(); 158 static void GenerateFPStubs(Isolate* isolate);
159 159
160 // Some stubs put untagged junk on the stack that cannot be scanned by the 160 // Some stubs put untagged junk on the stack that cannot be scanned by the
161 // GC. This means that we must be statically sure that no GC can occur while 161 // GC. This means that we must be statically sure that no GC can occur while
162 // they are running. If that is the case they should override this to return 162 // they are running. If that is the case they should override this to return
163 // true, which will cause an assertion if we try to call something that can 163 // true, which will cause an assertion if we try to call something that can
164 // GC or if we try to put a stack frame on top of the junk, which would not 164 // GC or if we try to put a stack frame on top of the junk, which would not
165 // result in a traversable stack. 165 // result in a traversable stack.
166 virtual bool SometimesSetsUpAFrame() { return true; } 166 virtual bool SometimesSetsUpAFrame() { return true; }
167 167
168 // Lookup the code in the (possibly custom) cache. 168 // Lookup the code in the (possibly custom) cache.
(...skipping 668 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 SaveFPRegsMode save_doubles = kDontSaveFPRegs) 837 SaveFPRegsMode save_doubles = kDontSaveFPRegs)
838 : result_size_(result_size), save_doubles_(save_doubles) { } 838 : result_size_(result_size), save_doubles_(save_doubles) { }
839 839
840 void Generate(MacroAssembler* masm); 840 void Generate(MacroAssembler* masm);
841 841
842 // The version of this stub that doesn't save doubles is generated ahead of 842 // The version of this stub that doesn't save doubles is generated ahead of
843 // time, so it's OK to call it from other stubs that can't cope with GC during 843 // time, so it's OK to call it from other stubs that can't cope with GC during
844 // their code generation. On machines that always have gp registers (x64) we 844 // their code generation. On machines that always have gp registers (x64) we
845 // can generate both variants ahead of time. 845 // can generate both variants ahead of time.
846 virtual bool IsPregenerated(); 846 virtual bool IsPregenerated();
847 static void GenerateAheadOfTime(); 847 static void GenerateAheadOfTime(Isolate* isolate);
848 848
849 private: 849 private:
850 void GenerateCore(MacroAssembler* masm, 850 void GenerateCore(MacroAssembler* masm,
851 Label* throw_normal_exception, 851 Label* throw_normal_exception,
852 Label* throw_termination_exception, 852 Label* throw_termination_exception,
853 Label* throw_out_of_memory_exception, 853 Label* throw_out_of_memory_exception,
854 bool do_gc, 854 bool do_gc,
855 bool always_allocate_scope); 855 bool always_allocate_scope);
856 856
857 // Number of pointers/values returned. 857 // Number of pointers/values returned.
(...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after
1455 1455
1456 class StubFailureTrampolineStub : public PlatformCodeStub { 1456 class StubFailureTrampolineStub : public PlatformCodeStub {
1457 public: 1457 public:
1458 static const int kMaxExtraExpressionStackCount = 1; 1458 static const int kMaxExtraExpressionStackCount = 1;
1459 1459
1460 explicit StubFailureTrampolineStub(int extra_expression_stack_count) 1460 explicit StubFailureTrampolineStub(int extra_expression_stack_count)
1461 : extra_expression_stack_count_(extra_expression_stack_count) {} 1461 : extra_expression_stack_count_(extra_expression_stack_count) {}
1462 1462
1463 virtual bool IsPregenerated() { return true; } 1463 virtual bool IsPregenerated() { return true; }
1464 1464
1465 static void GenerateAheadOfTime(); 1465 static void GenerateAheadOfTime(Isolate* isolate);
1466 1466
1467 private: 1467 private:
1468 Major MajorKey() { return StubFailureTrampoline; } 1468 Major MajorKey() { return StubFailureTrampoline; }
1469 int MinorKey() { return extra_expression_stack_count_; } 1469 int MinorKey() { return extra_expression_stack_count_; }
1470 1470
1471 void Generate(MacroAssembler* masm); 1471 void Generate(MacroAssembler* masm);
1472 1472
1473 int extra_expression_stack_count_; 1473 int extra_expression_stack_count_;
1474 1474
1475 DISALLOW_COPY_AND_ASSIGN(StubFailureTrampolineStub); 1475 DISALLOW_COPY_AND_ASSIGN(StubFailureTrampolineStub);
(...skipping 28 matching lines...) Expand all
1504 1504
1505 // The current function entry hook. 1505 // The current function entry hook.
1506 static FunctionEntryHook entry_hook_; 1506 static FunctionEntryHook entry_hook_;
1507 1507
1508 DISALLOW_COPY_AND_ASSIGN(ProfileEntryHookStub); 1508 DISALLOW_COPY_AND_ASSIGN(ProfileEntryHookStub);
1509 }; 1509 };
1510 1510
1511 } } // namespace v8::internal 1511 } } // namespace v8::internal
1512 1512
1513 #endif // V8_CODE_STUBS_H_ 1513 #endif // V8_CODE_STUBS_H_
OLDNEW
« no previous file with comments | « src/arm/stub-cache-arm.cc ('k') | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698