Commit 825cb671 authored by Manos Koukoutos's avatar Manos Koukoutos Committed by Commit Bot

[wasm][cleanup] Increase GraphAssembler infra usage in WasmGraphBuilder

WasmGraphBuilder often failed to use GraphAssembler infrastructure and
went with directly invoking graph()->NewNode(). This made the code more
verbose, especially in cases where effect() and control() had to be
passes directly to NewNode().
This CL eliminates these invocations in obvious cases. It does not try
to refactor complicated code with branches, diamond patterns, etc.

Additional changes:
- Define a few more operators in GraphAssembler.
- Move Branch() helper in WasmGraphAssembler.
- Define NumberConstant() helper in WasmGraphAssembler.
- Define Merge() helper with varargs in WasmGraphBuilder.
- Omit IntPtrConstant() wrapper for constant offsets of Load and Store.

Change-Id: I571d5286be8881504cb2060195fbd181d1fce67d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2712804Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#72975}
parent 4b37f202
...@@ -48,6 +48,7 @@ class BasicBlock; ...@@ -48,6 +48,7 @@ class BasicBlock;
V(Float64ExtractLowWord32) \ V(Float64ExtractLowWord32) \
V(Float64SilenceNaN) \ V(Float64SilenceNaN) \
V(RoundFloat64ToInt32) \ V(RoundFloat64ToInt32) \
V(RoundInt32ToFloat32) \
V(TruncateFloat64ToFloat32) \ V(TruncateFloat64ToFloat32) \
V(TruncateFloat64ToWord32) \ V(TruncateFloat64ToWord32) \
V(TruncateInt64ToInt32) \ V(TruncateInt64ToInt32) \
...@@ -90,6 +91,9 @@ class BasicBlock; ...@@ -90,6 +91,9 @@ class BasicBlock;
V(Word64And) \ V(Word64And) \
V(Word64Equal) \ V(Word64Equal) \
V(Word64Or) \ V(Word64Or) \
V(Word64Sar) \
V(Word64SarShiftOutZeros) \
V(Word64Shl) \
V(Word64Shr) \ V(Word64Shr) \
V(WordAnd) \ V(WordAnd) \
V(WordEqual) \ V(WordEqual) \
...@@ -106,8 +110,12 @@ class BasicBlock; ...@@ -106,8 +110,12 @@ class BasicBlock;
V(Int32Mod) \ V(Int32Mod) \
V(Int32MulWithOverflow) \ V(Int32MulWithOverflow) \
V(Int32SubWithOverflow) \ V(Int32SubWithOverflow) \
V(Int64Div) \
V(Int64Mod) \
V(Uint32Div) \ V(Uint32Div) \
V(Uint32Mod) V(Uint32Mod) \
V(Uint64Div) \
V(Uint64Mod)
#define JSGRAPH_SINGLETON_CONSTANT_LIST(V) \ #define JSGRAPH_SINGLETON_CONSTANT_LIST(V) \
V(AllocateInOldGenerationStub, Code) \ V(AllocateInOldGenerationStub, Code) \
......
This diff is collapsed.
...@@ -222,6 +222,8 @@ class WasmGraphBuilder { ...@@ -222,6 +222,8 @@ class WasmGraphBuilder {
Node* LoopExitValue(Node* value, MachineRepresentation representation); Node* LoopExitValue(Node* value, MachineRepresentation representation);
Node* TerminateThrow(Node* effect, Node* control); Node* TerminateThrow(Node* effect, Node* control);
Node* Merge(unsigned count, Node** controls); Node* Merge(unsigned count, Node** controls);
template <typename... Nodes>
Node* Merge(Node* fst, Nodes*... args);
Node* Phi(wasm::ValueType type, unsigned count, Node** vals_and_control); Node* Phi(wasm::ValueType type, unsigned count, Node** vals_and_control);
Node* CreateOrMergeIntoPhi(MachineRepresentation rep, Node* merge, Node* CreateOrMergeIntoPhi(MachineRepresentation rep, Node* merge,
Node* tnode, Node* fnode); Node* tnode, Node* fnode);
......
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