summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/builtins-wasm-gen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/builtins/builtins-wasm-gen.cc')
-rw-r--r--deps/v8/src/builtins/builtins-wasm-gen.cc50
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(); \