| OLD | NEW |
| 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 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 | 146 |
| 147 enum Flag { | 147 enum Flag { |
| 148 kNoFlags = 0u, | 148 kNoFlags = 0u, |
| 149 kNeedsFrameState = 1u << 0, | 149 kNeedsFrameState = 1u << 0, |
| 150 kPatchableCallSite = 1u << 1, | 150 kPatchableCallSite = 1u << 1, |
| 151 kNeedsNopAfterCall = 1u << 2, | 151 kNeedsNopAfterCall = 1u << 2, |
| 152 kHasExceptionHandler = 1u << 3, | 152 kHasExceptionHandler = 1u << 3, |
| 153 kHasLocalCatchHandler = 1u << 4, | 153 kHasLocalCatchHandler = 1u << 4, |
| 154 kSupportsTailCalls = 1u << 5, | 154 kSupportsTailCalls = 1u << 5, |
| 155 kCanUseRoots = 1u << 6, | 155 kCanUseRoots = 1u << 6, |
| 156 // Indicates that the native stack should be used for a code object. This |
| 157 // information is important for native calls on arm64. |
| 158 kUseNativeStack = 1u << 7, |
| 156 kPatchableCallSiteWithNop = kPatchableCallSite | kNeedsNopAfterCall | 159 kPatchableCallSiteWithNop = kPatchableCallSite | kNeedsNopAfterCall |
| 157 }; | 160 }; |
| 158 typedef base::Flags<Flag> Flags; | 161 typedef base::Flags<Flag> Flags; |
| 159 | 162 |
| 160 CallDescriptor(Kind kind, MachineType target_type, LinkageLocation target_loc, | 163 CallDescriptor(Kind kind, MachineType target_type, LinkageLocation target_loc, |
| 161 const MachineSignature* machine_sig, | 164 const MachineSignature* machine_sig, |
| 162 LocationSignature* location_sig, size_t stack_param_count, | 165 LocationSignature* location_sig, size_t stack_param_count, |
| 163 Operator::Properties properties, | 166 Operator::Properties properties, |
| 164 RegList callee_saved_registers, | 167 RegList callee_saved_registers, |
| 165 RegList callee_saved_fp_registers, Flags flags, | 168 RegList callee_saved_fp_registers, Flags flags, |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 // receiver, context, etc. | 214 // receiver, context, etc. |
| 212 // TODO(titzer): this should input the framestate input too. | 215 // TODO(titzer): this should input the framestate input too. |
| 213 size_t InputCount() const { return 1 + machine_sig_->parameter_count(); } | 216 size_t InputCount() const { return 1 + machine_sig_->parameter_count(); } |
| 214 | 217 |
| 215 size_t FrameStateCount() const { return NeedsFrameState() ? 1 : 0; } | 218 size_t FrameStateCount() const { return NeedsFrameState() ? 1 : 0; } |
| 216 | 219 |
| 217 Flags flags() const { return flags_; } | 220 Flags flags() const { return flags_; } |
| 218 | 221 |
| 219 bool NeedsFrameState() const { return flags() & kNeedsFrameState; } | 222 bool NeedsFrameState() const { return flags() & kNeedsFrameState; } |
| 220 bool SupportsTailCalls() const { return flags() & kSupportsTailCalls; } | 223 bool SupportsTailCalls() const { return flags() & kSupportsTailCalls; } |
| 224 bool UseNativeStack() const { return flags() & kUseNativeStack; } |
| 221 | 225 |
| 222 LinkageLocation GetReturnLocation(size_t index) const { | 226 LinkageLocation GetReturnLocation(size_t index) const { |
| 223 return location_sig_->GetReturn(index); | 227 return location_sig_->GetReturn(index); |
| 224 } | 228 } |
| 225 | 229 |
| 226 LinkageLocation GetInputLocation(size_t index) const { | 230 LinkageLocation GetInputLocation(size_t index) const { |
| 227 if (index == 0) return target_loc_; | 231 if (index == 0) return target_loc_; |
| 228 return location_sig_->GetParam(index - 1); | 232 return location_sig_->GetParam(index - 1); |
| 229 } | 233 } |
| 230 | 234 |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 CallDescriptor* const incoming_; | 395 CallDescriptor* const incoming_; |
| 392 | 396 |
| 393 DISALLOW_COPY_AND_ASSIGN(Linkage); | 397 DISALLOW_COPY_AND_ASSIGN(Linkage); |
| 394 }; | 398 }; |
| 395 | 399 |
| 396 } // namespace compiler | 400 } // namespace compiler |
| 397 } // namespace internal | 401 } // namespace internal |
| 398 } // namespace v8 | 402 } // namespace v8 |
| 399 | 403 |
| 400 #endif // V8_COMPILER_LINKAGE_H_ | 404 #endif // V8_COMPILER_LINKAGE_H_ |
| OLD | NEW |