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

Side by Side Diff: src/ic/access-compiler.h

Issue 480413008: Move PropertyAccessCompiler and CallOptimization to their own files (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: 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/hydrogen.cc ('k') | src/ic/access-compiler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef V8_IC_ACCESS_COMPILER_H_
6 #define V8_IC_ACCESS_COMPILER_H_
7
8 #include "src/code-stubs.h"
9 #include "src/macro-assembler.h"
10 #include "src/objects.h"
11
12 namespace v8 {
13 namespace internal {
14
15
16 class PropertyAccessCompiler BASE_EMBEDDED {
17 public:
18 static Builtins::Name MissBuiltin(Code::Kind kind) {
19 switch (kind) {
20 case Code::LOAD_IC:
21 return Builtins::kLoadIC_Miss;
22 case Code::STORE_IC:
23 return Builtins::kStoreIC_Miss;
24 case Code::KEYED_LOAD_IC:
25 return Builtins::kKeyedLoadIC_Miss;
26 case Code::KEYED_STORE_IC:
27 return Builtins::kKeyedStoreIC_Miss;
28 default:
29 UNREACHABLE();
30 }
31 return Builtins::kLoadIC_Miss;
32 }
33
34 static void TailCallBuiltin(MacroAssembler* masm, Builtins::Name name);
35
36 protected:
37 PropertyAccessCompiler(Isolate* isolate, Code::Kind kind,
38 CacheHolderFlag cache_holder)
39 : registers_(GetCallingConvention(kind)),
40 kind_(kind),
41 cache_holder_(cache_holder),
42 isolate_(isolate),
43 masm_(isolate, NULL, 256) {}
44
45 Code::Kind kind() const { return kind_; }
46 CacheHolderFlag cache_holder() const { return cache_holder_; }
47 MacroAssembler* masm() { return &masm_; }
48 Isolate* isolate() const { return isolate_; }
49 Heap* heap() const { return isolate()->heap(); }
50 Factory* factory() const { return isolate()->factory(); }
51
52 Register receiver() const { return registers_[0]; }
53 Register name() const { return registers_[1]; }
54 Register scratch1() const { return registers_[2]; }
55 Register scratch2() const { return registers_[3]; }
56 Register scratch3() const { return registers_[4]; }
57
58 // Calling convention between indexed store IC and handler.
59 Register transition_map() const { return scratch1(); }
60
61 static Register* GetCallingConvention(Code::Kind);
62 static Register* load_calling_convention();
63 static Register* store_calling_convention();
64 static Register* keyed_store_calling_convention();
65
66 Register* registers_;
67
68 static void GenerateTailCall(MacroAssembler* masm, Handle<Code> code);
69
70 Handle<Code> GetCodeWithFlags(Code::Flags flags, const char* name);
71 Handle<Code> GetCodeWithFlags(Code::Flags flags, Handle<Name> name);
72
73 private:
74 Code::Kind kind_;
75 CacheHolderFlag cache_holder_;
76
77 Isolate* isolate_;
78 MacroAssembler masm_;
79 };
80 }
81 } // namespace v8::internal
82
83 #endif // V8_IC_ACCESS_COMPILER_H_
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/ic/access-compiler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698