diff options
Diffstat (limited to 'deps/v8/src/builtins/builtins-wasm-gen.cc')
-rw-r--r-- | deps/v8/src/builtins/builtins-wasm-gen.cc | 50 |
1 files changed, 39 insertions, 11 deletions
diff --git a/deps/v8/src/builtins/builtins-wasm-gen.cc b/deps/v8/src/builtins/builtins-wasm-gen.cc index 0b86d35853..12270495c1 100644 --- a/deps/v8/src/builtins/builtins-wasm-gen.cc +++ b/deps/v8/src/builtins/builtins-wasm-gen.cc @@ -4,6 +4,7 @@ #include "src/builtins/builtins-utils-gen.h" #include "src/codegen/code-stub-assembler.h" +#include "src/codegen/interface-descriptors.h" #include "src/objects/objects-inl.h" #include "src/wasm/wasm-objects.h" #include "src/wasm/wasm-opcodes.h" @@ -46,10 +47,16 @@ class WasmBuiltinsAssembler : public CodeStubAssembler { } TNode<Code> LoadCEntryFromInstance(TNode<Object> instance) { - return UncheckedCast<Code>( - Load(MachineType::AnyTagged(), instance, - IntPtrConstant(WasmInstanceObject::kCEntryStubOffset - + TNode<IntPtrT> isolate_root = UncheckedCast<IntPtrT>( + Load(MachineType::Pointer(), instance, + IntPtrConstant(WasmInstanceObject::kIsolateRootOffset - kHeapObjectTag))); + auto centry_id = + Builtins::kCEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit; + TNode<Code> target = UncheckedCast<Code>( + Load(MachineType::TaggedPointer(), isolate_root, + IntPtrConstant(IsolateData::builtin_slot_offset(centry_id)))); + return target; } }; @@ -58,14 +65,6 @@ TF_BUILTIN(WasmAllocateHeapNumber, WasmBuiltinsAssembler) { TailCallStub(AllocateHeapNumberDescriptor(), target, NoContextConstant()); } -TF_BUILTIN(WasmCallJavaScript, WasmBuiltinsAssembler) { - TNode<Object> context = UncheckedParameter(Descriptor::kContext); - TNode<Object> function = UncheckedParameter(Descriptor::kFunction); - TNode<Object> argc = UncheckedParameter(Descriptor::kActualArgumentsCount); - TNode<Code> target = LoadBuiltinFromFrame(Builtins::kCall_ReceiverIsAny); - TailCallStub(CallTrampolineDescriptor{}, target, context, function, argc); -} - TF_BUILTIN(WasmRecordWrite, WasmBuiltinsAssembler) { TNode<Object> object = UncheckedParameter(Descriptor::kObject); TNode<Object> slot = UncheckedParameter(Descriptor::kSlot); @@ -299,6 +298,20 @@ TF_BUILTIN(WasmI64ToBigInt, WasmBuiltinsAssembler) { TailCallStub(I64ToBigIntDescriptor(), target, NoContextConstant(), argument); } +TF_BUILTIN(WasmI32PairToBigInt, WasmBuiltinsAssembler) { + if (!Is32()) { + Unreachable(); + return; + } + + TNode<Code> target = LoadBuiltinFromFrame(Builtins::kI32PairToBigInt); + TNode<IntPtrT> low = UncheckedCast<IntPtrT>(Parameter(Descriptor::kLow)); + TNode<IntPtrT> high = UncheckedCast<IntPtrT>(Parameter(Descriptor::kHigh)); + + TailCallStub(I32PairToBigIntDescriptor(), target, NoContextConstant(), low, + high); +} + TF_BUILTIN(WasmBigIntToI64, WasmBuiltinsAssembler) { if (!Is64()) { Unreachable(); @@ -314,6 +327,21 @@ TF_BUILTIN(WasmBigIntToI64, WasmBuiltinsAssembler) { TailCallStub(BigIntToI64Descriptor(), target, context, argument); } +TF_BUILTIN(WasmBigIntToI32Pair, WasmBuiltinsAssembler) { + if (!Is32()) { + Unreachable(); + return; + } + + TNode<Object> context = + UncheckedCast<Object>(Parameter(Descriptor::kContext)); + TNode<Code> target = LoadBuiltinFromFrame(Builtins::kBigIntToI32Pair); + TNode<IntPtrT> argument = + UncheckedCast<IntPtrT>(Parameter(Descriptor::kArgument)); + + TailCallStub(BigIntToI32PairDescriptor(), target, context, argument); +} + #define DECLARE_ENUM(name) \ TF_BUILTIN(ThrowWasm##name, WasmBuiltinsAssembler) { \ TNode<Object> instance = LoadInstanceFromFrame(); \ |