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

Side by Side Diff: src/compiler/linkage.h

Issue 1323463005: [Interpreter] Add support for JS calls. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 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
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 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 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_COMPILER_LINKAGE_H_ 5 #ifndef V8_COMPILER_LINKAGE_H_
6 #define V8_COMPILER_LINKAGE_H_ 6 #define V8_COMPILER_LINKAGE_H_
7 7
8 #include "src/base/flags.h" 8 #include "src/base/flags.h"
9 #include "src/compiler/frame.h" 9 #include "src/compiler/frame.h"
10 #include "src/compiler/machine-type.h" 10 #include "src/compiler/machine-type.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 117
118 enum Flag { 118 enum Flag {
119 kNoFlags = 0u, 119 kNoFlags = 0u,
120 kNeedsFrameState = 1u << 0, 120 kNeedsFrameState = 1u << 0,
121 kPatchableCallSite = 1u << 1, 121 kPatchableCallSite = 1u << 1,
122 kNeedsNopAfterCall = 1u << 2, 122 kNeedsNopAfterCall = 1u << 2,
123 kHasExceptionHandler = 1u << 3, 123 kHasExceptionHandler = 1u << 3,
124 kHasLocalCatchHandler = 1u << 4, 124 kHasLocalCatchHandler = 1u << 4,
125 kSupportsTailCalls = 1u << 5, 125 kSupportsTailCalls = 1u << 5,
126 kCanUseRoots = 1u << 6, 126 kCanUseRoots = 1u << 6,
127 kHasVarArgs = 1u << 7,
127 kPatchableCallSiteWithNop = kPatchableCallSite | kNeedsNopAfterCall 128 kPatchableCallSiteWithNop = kPatchableCallSite | kNeedsNopAfterCall
128 }; 129 };
129 typedef base::Flags<Flag> Flags; 130 typedef base::Flags<Flag> Flags;
130 131
131 CallDescriptor(Kind kind, MachineType target_type, LinkageLocation target_loc, 132 CallDescriptor(Kind kind, MachineType target_type, LinkageLocation target_loc,
132 const MachineSignature* machine_sig, 133 const MachineSignature* machine_sig,
133 LocationSignature* location_sig, size_t stack_param_count, 134 LocationSignature* location_sig, size_t stack_param_count,
134 Operator::Properties properties, 135 Operator::Properties properties,
135 RegList callee_saved_registers, 136 RegList callee_saved_registers,
136 RegList callee_saved_fp_registers, Flags flags, 137 RegList callee_saved_fp_registers, Flags flags,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 return stack_param_count_; 175 return stack_param_count_;
175 } 176 }
176 177
177 // The total number of inputs to this call, which includes the target, 178 // The total number of inputs to this call, which includes the target,
178 // receiver, context, etc. 179 // receiver, context, etc.
179 // TODO(titzer): this should input the framestate input too. 180 // TODO(titzer): this should input the framestate input too.
180 size_t InputCount() const { return 1 + machine_sig_->parameter_count(); } 181 size_t InputCount() const { return 1 + machine_sig_->parameter_count(); }
181 182
182 size_t FrameStateCount() const { return NeedsFrameState() ? 1 : 0; } 183 size_t FrameStateCount() const { return NeedsFrameState() ? 1 : 0; }
183 184
185 size_t VarArgsInputCount() const { return HasVarArgs() ? 2 : 0; }
186
184 Flags flags() const { return flags_; } 187 Flags flags() const { return flags_; }
185 188
186 bool NeedsFrameState() const { return flags() & kNeedsFrameState; } 189 bool NeedsFrameState() const { return flags() & kNeedsFrameState; }
187 bool SupportsTailCalls() const { return flags() & kSupportsTailCalls; } 190 bool SupportsTailCalls() const { return flags() & kSupportsTailCalls; }
191 bool HasVarArgs() const { return flags() & kHasVarArgs; }
188 192
189 LinkageLocation GetReturnLocation(size_t index) const { 193 LinkageLocation GetReturnLocation(size_t index) const {
190 return location_sig_->GetReturn(index); 194 return location_sig_->GetReturn(index);
191 } 195 }
192 196
193 LinkageLocation GetInputLocation(size_t index) const { 197 LinkageLocation GetInputLocation(size_t index) const {
194 if (index == 0) return target_loc_; 198 if (index == 0) return target_loc_;
195 return location_sig_->GetParam(index - 1); 199 return location_sig_->GetParam(index - 1);
196 } 200 }
197 201
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 CallDescriptor* const incoming_; 345 CallDescriptor* const incoming_;
342 346
343 DISALLOW_COPY_AND_ASSIGN(Linkage); 347 DISALLOW_COPY_AND_ASSIGN(Linkage);
344 }; 348 };
345 349
346 } // namespace compiler 350 } // namespace compiler
347 } // namespace internal 351 } // namespace internal
348 } // namespace v8 352 } // namespace v8
349 353
350 #endif // V8_COMPILER_LINKAGE_H_ 354 #endif // V8_COMPILER_LINKAGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698