[maglev] Support TypeOf, CreateArrayFromIterable and IncBlockCounter

These bytecodes simply call a builtin.

Bug: v8:7700
Change-Id: I2616ea5571741a7f79b27bc6ddbd95cfb3254e97
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3805063
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#82158}
This commit is contained in:
Victor Gomes 2022-08-02 16:12:10 +02:00 committed by V8 LUCI CQ
parent a8bff771fd
commit 71d3ae39e7

View File

@ -1460,7 +1460,10 @@ void MaglevGraphBuilder::VisitLogicalNot() {
}
}
MAGLEV_UNIMPLEMENTED_BYTECODE(TypeOf)
void MaglevGraphBuilder::VisitTypeOf() {
ValueNode* value = GetAccumulatorTagged();
SetAccumulator(BuildCallBuiltin<Builtin::kTypeof>({value}));
}
void MaglevGraphBuilder::VisitDeletePropertyStrict() {
ValueNode* object = LoadRegisterTagged(0);
@ -2024,7 +2027,11 @@ void MaglevGraphBuilder::VisitCreateArrayLiteral() {
SetAccumulator(result);
}
MAGLEV_UNIMPLEMENTED_BYTECODE(CreateArrayFromIterable)
void MaglevGraphBuilder::VisitCreateArrayFromIterable() {
ValueNode* iterable = GetAccumulatorTagged();
SetAccumulator(
BuildCallBuiltin<Builtin::kIterableToListWithSymbolLookup>({iterable}));
}
void MaglevGraphBuilder::VisitCreateEmptyArrayLiteral() {
// TODO(v8:7700): Consider inlining the allocation.
@ -2429,7 +2436,11 @@ void MaglevGraphBuilder::VisitDebugger() {
BuildCallRuntime(Runtime::kHandleDebuggerStatement, {});
}
MAGLEV_UNIMPLEMENTED_BYTECODE(IncBlockCounter)
void MaglevGraphBuilder::VisitIncBlockCounter() {
ValueNode* closure = GetClosure();
ValueNode* coverage_array_slot = GetSmiConstant(iterator_.GetIndexOperand(0));
BuildCallBuiltin<Builtin::kIncBlockCounter>({closure, coverage_array_slot});
}
void MaglevGraphBuilder::VisitAbort() {
AbortReason reason = static_cast<AbortReason>(GetFlagOperand(0));