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 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 // for incoming parameters and return value(s) as well as the outgoing calling | 251 // for incoming parameters and return value(s) as well as the outgoing calling |
252 // convention for any kind of call. Linkage is generally architecture-specific. | 252 // convention for any kind of call. Linkage is generally architecture-specific. |
253 // | 253 // |
254 // Can be used to translate {arg_index} (i.e. index of the call node input) as | 254 // Can be used to translate {arg_index} (i.e. index of the call node input) as |
255 // well as {param_index} (i.e. as stored in parameter nodes) into an operator | 255 // well as {param_index} (i.e. as stored in parameter nodes) into an operator |
256 // representing the architecture-specific location. The following call node | 256 // representing the architecture-specific location. The following call node |
257 // layouts are supported (where {n} is the number value inputs): | 257 // layouts are supported (where {n} is the number value inputs): |
258 // | 258 // |
259 // #0 #1 #2 #3 [...] #n | 259 // #0 #1 #2 #3 [...] #n |
260 // Call[CodeStub] code, arg 1, arg 2, arg 3, [...], context | 260 // Call[CodeStub] code, arg 1, arg 2, arg 3, [...], context |
261 // Call[JSFunction] function, rcvr, arg 1, arg 2, [...], context | 261 // Call[JSFunction] function, rcvr, arg 1, arg 2, [...], #arg, context |
262 // Call[Runtime] CEntryStub, arg 1, arg 2, arg 3, [...], fun, #arg, context | 262 // Call[Runtime] CEntryStub, arg 1, arg 2, arg 3, [...], fun, #arg, context |
263 class Linkage : public ZoneObject { | 263 class Linkage : public ZoneObject { |
264 public: | 264 public: |
265 explicit Linkage(CallDescriptor* incoming) : incoming_(incoming) {} | 265 explicit Linkage(CallDescriptor* incoming) : incoming_(incoming) {} |
266 | 266 |
267 static CallDescriptor* ComputeIncoming(Zone* zone, CompilationInfo* info); | 267 static CallDescriptor* ComputeIncoming(Zone* zone, CompilationInfo* info); |
268 | 268 |
269 // The call descriptor for this compilation unit describes the locations | 269 // The call descriptor for this compilation unit describes the locations |
270 // of incoming parameters and the outgoing return value(s). | 270 // of incoming parameters and the outgoing return value(s). |
271 CallDescriptor* GetIncomingDescriptor() const { return incoming_; } | 271 CallDescriptor* GetIncomingDescriptor() const { return incoming_; } |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 CallDescriptor* const incoming_; | 347 CallDescriptor* const incoming_; |
348 | 348 |
349 DISALLOW_COPY_AND_ASSIGN(Linkage); | 349 DISALLOW_COPY_AND_ASSIGN(Linkage); |
350 }; | 350 }; |
351 | 351 |
352 } // namespace compiler | 352 } // namespace compiler |
353 } // namespace internal | 353 } // namespace internal |
354 } // namespace v8 | 354 } // namespace v8 |
355 | 355 |
356 #endif // V8_COMPILER_LINKAGE_H_ | 356 #endif // V8_COMPILER_LINKAGE_H_ |
OLD | NEW |