diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/v8/src/compiler/linkage.h | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/v8/src/compiler/linkage.h')
-rw-r--r-- | chromium/v8/src/compiler/linkage.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/chromium/v8/src/compiler/linkage.h b/chromium/v8/src/compiler/linkage.h index b55f3cdcb7c..346e9bda0cc 100644 --- a/chromium/v8/src/compiler/linkage.h +++ b/chromium/v8/src/compiler/linkage.h @@ -237,6 +237,7 @@ class V8_EXPORT_PRIVATE CallDescriptor final RegList callee_saved_registers, RegList callee_saved_fp_registers, Flags flags, const char* debug_name = "", + StackArgumentOrder stack_order = StackArgumentOrder::kDefault, const RegList allocatable_registers = 0, size_t stack_return_count = 0) : kind_(kind), @@ -250,6 +251,7 @@ class V8_EXPORT_PRIVATE CallDescriptor final callee_saved_fp_registers_(callee_saved_fp_registers), allocatable_registers_(allocatable_registers), flags_(flags), + stack_order_(stack_order), debug_name_(debug_name) {} // Returns the kind of this call. @@ -292,6 +294,19 @@ class V8_EXPORT_PRIVATE CallDescriptor final return stack_param_count_; } + int GetStackIndexFromSlot(int slot_index) const { +#ifdef V8_REVERSE_JSARGS + switch (GetStackArgumentOrder()) { + case StackArgumentOrder::kDefault: + return -slot_index - 1; + case StackArgumentOrder::kJS: + return slot_index + static_cast<int>(StackParameterCount()); + } +#else + return -slot_index - 1; +#endif + } + // The total number of inputs to this call, which includes the target, // receiver, context, etc. // TODO(titzer): this should input the framestate input too. @@ -338,6 +353,8 @@ class V8_EXPORT_PRIVATE CallDescriptor final return location_sig_->GetParam(index).GetType(); } + StackArgumentOrder GetStackArgumentOrder() const { return stack_order_; } + // Operator properties describe how this call can be optimized, if at all. Operator::Properties properties() const { return properties_; } @@ -391,6 +408,7 @@ class V8_EXPORT_PRIVATE CallDescriptor final // register allocator to use. const RegList allocatable_registers_; const Flags flags_; + const StackArgumentOrder stack_order_; const char* const debug_name_; const CFunctionInfo* c_function_info_ = nullptr; @@ -438,7 +456,8 @@ class V8_EXPORT_PRIVATE Linkage : public NON_EXPORTED_BASE(ZoneObject) { static CallDescriptor* GetCEntryStubCallDescriptor( Zone* zone, int return_count, int js_parameter_count, const char* debug_name, Operator::Properties properties, - CallDescriptor::Flags flags); + CallDescriptor::Flags flags, + StackArgumentOrder stack_order = StackArgumentOrder::kDefault); static CallDescriptor* GetStubCallDescriptor( Zone* zone, const CallInterfaceDescriptor& descriptor, |