Commit 4130d616 authored by Sigurd Schneider's avatar Sigurd Schneider Committed by Commit Bot

[wasm] Reflect unavailability of root register in linkage

The root register is not available in JS-to-Wasm functions, and
this was not reflected in the linkage. Similarily, it is not
available in C-to-Wasm functions.

Change-Id: I2dbfd06ef99d6f9b9940e9489f563441d9ebfabd
Bug: v8:6666
Reviewed-on: https://chromium-review.googlesource.com/1256766
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#56346}
parent 4788f205
...@@ -61,10 +61,11 @@ CodeAssemblerState::CodeAssemblerState(Isolate* isolate, Zone* zone, ...@@ -61,10 +61,11 @@ CodeAssemblerState::CodeAssemblerState(Isolate* isolate, Zone* zone,
int32_t builtin_index) int32_t builtin_index)
: CodeAssemblerState( : CodeAssemblerState(
isolate, zone, isolate, zone,
Linkage::GetJSCallDescriptor(zone, false, parameter_count, Linkage::GetJSCallDescriptor(
kind == Code::BUILTIN zone, false, parameter_count,
? CallDescriptor::kPushArgumentCount (kind == Code::BUILTIN ? CallDescriptor::kPushArgumentCount
: CallDescriptor::kNoFlags), : CallDescriptor::kNoFlags) |
CallDescriptor::kCanUseRoots),
kind, name, poisoning_level, 0, builtin_index) {} kind, name, poisoning_level, 0, builtin_index) {}
CodeAssemblerState::CodeAssemblerState(Isolate* isolate, Zone* zone, CodeAssemblerState::CodeAssemblerState(Isolate* isolate, Zone* zone,
......
...@@ -1687,7 +1687,8 @@ Reduction JSTypedLowering::ReduceJSCall(Node* node) { ...@@ -1687,7 +1687,8 @@ Reduction JSTypedLowering::ReduceJSCall(Node* node) {
node->InsertInput(graph()->zone(), arity + 3, argument_count); node->InsertInput(graph()->zone(), arity + 3, argument_count);
NodeProperties::ChangeOp(node, NodeProperties::ChangeOp(node,
common()->Call(Linkage::GetJSCallDescriptor( common()->Call(Linkage::GetJSCallDescriptor(
graph()->zone(), false, 1 + arity, flags))); graph()->zone(), false, 1 + arity,
flags | CallDescriptor::kCanUseRoots)));
} }
return Changed(node); return Changed(node);
} }
......
...@@ -143,7 +143,7 @@ CallDescriptor* Linkage::ComputeIncoming(Zone* zone, ...@@ -143,7 +143,7 @@ CallDescriptor* Linkage::ComputeIncoming(Zone* zone,
SharedFunctionInfo* shared = info->closure()->shared(); SharedFunctionInfo* shared = info->closure()->shared();
return GetJSCallDescriptor(zone, info->is_osr(), return GetJSCallDescriptor(zone, info->is_osr(),
1 + shared->internal_formal_parameter_count(), 1 + shared->internal_formal_parameter_count(),
CallDescriptor::kNoFlags); CallDescriptor::kCanUseRoots);
} }
return nullptr; // TODO(titzer): ? return nullptr; // TODO(titzer): ?
} }
...@@ -331,8 +331,7 @@ CallDescriptor* Linkage::GetJSCallDescriptor(Zone* zone, bool is_osr, ...@@ -331,8 +331,7 @@ CallDescriptor* Linkage::GetJSCallDescriptor(Zone* zone, bool is_osr,
Operator::kNoProperties, // properties Operator::kNoProperties, // properties
kNoCalleeSaved, // callee-saved kNoCalleeSaved, // callee-saved
kNoCalleeSaved, // callee-saved fp kNoCalleeSaved, // callee-saved fp
CallDescriptor::kCanUseRoots | // flags flags, // flags
flags, // flags
"js-call"); "js-call");
} }
......
...@@ -365,7 +365,8 @@ TARGET_TEST_F(InstructionSelectorTest, CallJSFunctionWithDeopt) { ...@@ -365,7 +365,8 @@ TARGET_TEST_F(InstructionSelectorTest, CallJSFunctionWithDeopt) {
ZoneVector<MachineType> empty_types(zone()); ZoneVector<MachineType> empty_types(zone());
auto call_descriptor = Linkage::GetJSCallDescriptor( auto call_descriptor = Linkage::GetJSCallDescriptor(
zone(), false, 1, CallDescriptor::kNeedsFrameState); zone(), false, 1,
CallDescriptor::kNeedsFrameState | CallDescriptor::kCanUseRoots);
// Build frame state for the state before the call. // Build frame state for the state before the call.
Node* parameters = m.AddNode( Node* parameters = m.AddNode(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment