diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/v8/src/builtins/builtins-wasm-gen.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/v8/src/builtins/builtins-wasm-gen.cc')
-rw-r--r-- | chromium/v8/src/builtins/builtins-wasm-gen.cc | 153 |
1 files changed, 4 insertions, 149 deletions
diff --git a/chromium/v8/src/builtins/builtins-wasm-gen.cc b/chromium/v8/src/builtins/builtins-wasm-gen.cc index 28efa39c67d..1932db3ff40 100644 --- a/chromium/v8/src/builtins/builtins-wasm-gen.cc +++ b/chromium/v8/src/builtins/builtins-wasm-gen.cc @@ -37,12 +37,10 @@ TNode<FixedArray> WasmBuiltinsAssembler::LoadExternalFunctionsFromInstance( instance, WasmInstanceObject::kWasmExternalFunctionsOffset); } -TNode<Smi> WasmBuiltinsAssembler::SmiFromUint32WithSaturation( - TNode<Uint32T> value, uint32_t max) { - DCHECK_LE(max, static_cast<uint32_t>(Smi::kMaxValue)); - TNode<Uint32T> capped_value = SelectConstant( - Uint32LessThan(value, Uint32Constant(max)), value, Uint32Constant(max)); - return SmiFromUint32(capped_value); +TNode<FixedArray> WasmBuiltinsAssembler::LoadManagedObjectMapsFromInstance( + TNode<WasmInstanceObject> instance) { + return LoadObjectField<FixedArray>( + instance, WasmInstanceObject::kManagedObjectMapsOffset); } TF_BUILTIN(WasmFloat32ToNumber, WasmBuiltinsAssembler) { @@ -55,22 +53,6 @@ TF_BUILTIN(WasmFloat64ToNumber, WasmBuiltinsAssembler) { Return(ChangeFloat64ToTagged(val)); } -TF_BUILTIN(WasmAtomicNotify, WasmBuiltinsAssembler) { - TNode<Uint32T> address = - UncheckedCast<Uint32T>(Parameter(Descriptor::kAddress)); - TNode<Uint32T> count = UncheckedCast<Uint32T>(Parameter(Descriptor::kCount)); - - TNode<WasmInstanceObject> instance = LoadInstanceFromFrame(); - TNode<Number> address_number = ChangeUint32ToTagged(address); - TNode<Number> count_number = ChangeUint32ToTagged(count); - TNode<Context> context = LoadContextFromInstance(instance); - - TNode<Smi> result_smi = - CAST(CallRuntime(Runtime::kWasmAtomicNotify, context, instance, - address_number, count_number)); - Return(Unsigned(SmiToInt32(result_smi))); -} - TF_BUILTIN(WasmI32AtomicWait32, WasmBuiltinsAssembler) { if (!Is32()) { Unreachable(); @@ -100,33 +82,6 @@ TF_BUILTIN(WasmI32AtomicWait32, WasmBuiltinsAssembler) { Return(Unsigned(SmiToInt32(result_smi))); } -TF_BUILTIN(WasmI32AtomicWait64, WasmBuiltinsAssembler) { - if (!Is64()) { - Unreachable(); - return; - } - - TNode<Uint32T> address = - UncheckedCast<Uint32T>(Parameter(Descriptor::kAddress)); - TNode<Number> address_number = ChangeUint32ToTagged(address); - - TNode<Int32T> expected_value = - UncheckedCast<Int32T>(Parameter(Descriptor::kExpectedValue)); - TNode<Number> expected_value_number = ChangeInt32ToTagged(expected_value); - - TNode<IntPtrT> timeout_raw = - UncheckedCast<IntPtrT>(Parameter(Descriptor::kTimeout)); - TNode<BigInt> timeout = BigIntFromInt64(timeout_raw); - - TNode<WasmInstanceObject> instance = LoadInstanceFromFrame(); - TNode<Context> context = LoadContextFromInstance(instance); - - TNode<Smi> result_smi = - CAST(CallRuntime(Runtime::kWasmI32AtomicWait, context, instance, - address_number, expected_value_number, timeout)); - Return(Unsigned(SmiToInt32(result_smi))); -} - TF_BUILTIN(WasmI64AtomicWait32, WasmBuiltinsAssembler) { if (!Is32()) { Unreachable(); @@ -159,93 +114,6 @@ TF_BUILTIN(WasmI64AtomicWait32, WasmBuiltinsAssembler) { Return(Unsigned(SmiToInt32(result_smi))); } -TF_BUILTIN(WasmI64AtomicWait64, WasmBuiltinsAssembler) { - if (!Is64()) { - Unreachable(); - return; - } - - TNode<Uint32T> address = - UncheckedCast<Uint32T>(Parameter(Descriptor::kAddress)); - TNode<Number> address_number = ChangeUint32ToTagged(address); - - TNode<IntPtrT> expected_value_raw = - UncheckedCast<IntPtrT>(Parameter(Descriptor::kExpectedValue)); - TNode<BigInt> expected_value = BigIntFromInt64(expected_value_raw); - - TNode<IntPtrT> timeout_raw = - UncheckedCast<IntPtrT>(Parameter(Descriptor::kTimeout)); - TNode<BigInt> timeout = BigIntFromInt64(timeout_raw); - - TNode<WasmInstanceObject> instance = LoadInstanceFromFrame(); - TNode<Context> context = LoadContextFromInstance(instance); - - TNode<Smi> result_smi = - CAST(CallRuntime(Runtime::kWasmI64AtomicWait, context, instance, - address_number, expected_value, timeout)); - Return(Unsigned(SmiToInt32(result_smi))); -} - -TF_BUILTIN(WasmTableInit, WasmBuiltinsAssembler) { - TNode<Uint32T> dst_raw = - UncheckedCast<Uint32T>(Parameter(Descriptor::kDestination)); - // We cap {dst}, {src}, and {size} by {wasm::kV8MaxWasmTableSize + 1} to make - // sure that the values fit into a Smi. - STATIC_ASSERT(static_cast<size_t>(Smi::kMaxValue) >= - wasm::kV8MaxWasmTableSize + 1); - constexpr uint32_t kCap = - static_cast<uint32_t>(wasm::kV8MaxWasmTableSize + 1); - TNode<Smi> dst = SmiFromUint32WithSaturation(dst_raw, kCap); - TNode<Uint32T> src_raw = - UncheckedCast<Uint32T>(Parameter(Descriptor::kSource)); - TNode<Smi> src = SmiFromUint32WithSaturation(src_raw, kCap); - TNode<Uint32T> size_raw = - UncheckedCast<Uint32T>(Parameter(Descriptor::kSize)); - TNode<Smi> size = SmiFromUint32WithSaturation(size_raw, kCap); - TNode<Smi> table_index = - UncheckedCast<Smi>(Parameter(Descriptor::kTableIndex)); - TNode<Smi> segment_index = - UncheckedCast<Smi>(Parameter(Descriptor::kSegmentIndex)); - TNode<WasmInstanceObject> instance = LoadInstanceFromFrame(); - TNode<Context> context = LoadContextFromInstance(instance); - - TailCallRuntime(Runtime::kWasmTableInit, context, instance, table_index, - segment_index, dst, src, size); -} - -TF_BUILTIN(WasmTableCopy, WasmBuiltinsAssembler) { - // We cap {dst}, {src}, and {size} by {wasm::kV8MaxWasmTableSize + 1} to make - // sure that the values fit into a Smi. - STATIC_ASSERT(static_cast<size_t>(Smi::kMaxValue) >= - wasm::kV8MaxWasmTableSize + 1); - constexpr uint32_t kCap = - static_cast<uint32_t>(wasm::kV8MaxWasmTableSize + 1); - - TNode<Uint32T> dst_raw = - UncheckedCast<Uint32T>(Parameter(Descriptor::kDestination)); - TNode<Smi> dst = SmiFromUint32WithSaturation(dst_raw, kCap); - - TNode<Uint32T> src_raw = - UncheckedCast<Uint32T>(Parameter(Descriptor::kSource)); - TNode<Smi> src = SmiFromUint32WithSaturation(src_raw, kCap); - - TNode<Uint32T> size_raw = - UncheckedCast<Uint32T>(Parameter(Descriptor::kSize)); - TNode<Smi> size = SmiFromUint32WithSaturation(size_raw, kCap); - - TNode<Smi> dst_table = - UncheckedCast<Smi>(Parameter(Descriptor::kDestinationTable)); - - TNode<Smi> src_table = - UncheckedCast<Smi>(Parameter(Descriptor::kSourceTable)); - - TNode<WasmInstanceObject> instance = LoadInstanceFromFrame(); - TNode<Context> context = LoadContextFromInstance(instance); - - TailCallRuntime(Runtime::kWasmTableCopy, context, instance, dst_table, - src_table, dst, src, size); -} - TF_BUILTIN(WasmAllocateArray, WasmBuiltinsAssembler) { TNode<WasmInstanceObject> instance = LoadInstanceFromFrame(); TNode<Smi> map_index = CAST(Parameter(Descriptor::kMapIndex)); @@ -270,18 +138,5 @@ TF_BUILTIN(WasmAllocateArray, WasmBuiltinsAssembler) { Return(result); } -TF_BUILTIN(WasmAllocateStruct, WasmBuiltinsAssembler) { - TNode<WasmInstanceObject> instance = LoadInstanceFromFrame(); - TNode<Smi> map_index = CAST(Parameter(Descriptor::kMapIndex)); - TNode<FixedArray> maps_list = LoadObjectField<FixedArray>( - instance, WasmInstanceObject::kManagedObjectMapsOffset); - TNode<Map> map = CAST(LoadFixedArrayElement(maps_list, map_index)); - TNode<IntPtrT> instance_size = - TimesTaggedSize(LoadMapInstanceSizeInWords(map)); - TNode<WasmStruct> result = UncheckedCast<WasmStruct>(Allocate(instance_size)); - StoreMap(result, map); - Return(result); -} - } // namespace internal } // namespace v8 |