Put atomics behind a feature flag (#470)

This commit is contained in:
Daniel Wirtz
2019-02-07 18:21:09 +01:00
committed by GitHub
parent 2f1a6c44ce
commit 1bd1d26152
6 changed files with 173 additions and 154 deletions

View File

@ -43,7 +43,7 @@
@builtin export declare function call_indirect<T>(target: void, ...args: void[]): T;
@builtin export declare function instantiate<T>(...args: void[]): T;
export namespace Atomic {
export namespace atomic {
@builtin export declare function load<T>(offset: usize, constantOffset?: usize): T;
@builtin export declare function store<T>(offset: usize, value: void, constantOffset?: usize): void;
@builtin export declare function add<T>(ptr: usize, value: T, constantOffset?: usize): T;
@ -88,7 +88,7 @@ export namespace i32 {
@builtin export declare function store16(offset: usize, value: i32, constantOffset?: usize): void;
@builtin export declare function store(offset: usize, value: i32, constantOffset?: usize): void;
namespace atomic {
export namespace atomic {
@builtin export declare function load8_s(offset: usize, constantOffset?: usize): i32;
@builtin export declare function load8_u(offset: usize, constantOffset?: usize): i32;
@builtin export declare function load16_s(offset: usize, constantOffset?: usize): i32;
@ -100,33 +100,33 @@ export namespace i32 {
@builtin export declare function wait(ptr: usize, expected:i32, timeout:i64): i32;
@builtin export declare function notify(ptr: usize, count:u32): u32;
namespace rmw8_u {
@builtin export declare function add(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function sub(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function and(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function or(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function xor(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function xchg(offset: usize, value: i32, constantOffset?: usize): i32
export namespace rmw8_u {
@builtin export declare function add(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function sub(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function and(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function or(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function xor(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function xchg(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function cmpxchg(offset: usize, expected:i32, replacement: i32, constantOffset?: usize): i32;
}
namespace rmw16_u {
@builtin export declare function add(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function sub(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function and(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function or(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function xor(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function xchg(offset: usize, value: i32, constantOffset?: usize): i32
export namespace rmw16_u {
@builtin export declare function add(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function sub(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function and(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function or(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function xor(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function xchg(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function cmpxchg(offset: usize, expected:i32, replacement: i32, constantOffset?: usize): i32;
}
namespace rmw {
@builtin export declare function add(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function sub(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function and(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function or(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function xor(offset: usize, value: i32, constantOffset?: usize): i32
@builtin export declare function xchg(offset: usize, value: i32, constantOffset?: usize): i32
export namespace rmw {
@builtin export declare function add(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function sub(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function and(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function or(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function xor(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function xchg(offset: usize, value: i32, constantOffset?: usize): i32;
@builtin export declare function cmpxchg(offset: usize, expected:i32, replacement: i32, constantOffset?: usize): i32;
}
}
@ -166,43 +166,43 @@ export namespace i64 {
@builtin export declare function wait(ptr: usize, expected:i64, timeout:i64): i32;
@builtin export declare function notify(ptr: usize, count:u32): u32;
namespace rmw8_u {
@builtin export declare function add(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function sub(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function and(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function or(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function xor(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function xchg(offset: usize, value: i64, constantOffset?: usize): i64
export namespace rmw8_u {
@builtin export declare function add(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function sub(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function and(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function or(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function xor(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function xchg(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function cmpxchg(offset: usize, expected:i64, replacement: i64, constantOffset?: usize): i64;
}
namespace rmw16_u {
@builtin export declare function add(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function sub(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function and(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function or(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function xor(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function xchg(offset: usize, value: i64, constantOffset?: usize): i64
export namespace rmw16_u {
@builtin export declare function add(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function sub(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function and(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function or(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function xor(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function xchg(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function cmpxchg(offset: usize, expected:i64, replacement: i64, constantOffset?: usize): i64;
}
namespace rmw32_u {
@builtin export declare function add(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function sub(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function and(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function or(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function xor(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function xchg(offset: usize, value: i64, constantOffset?: usize): i64
export namespace rmw32_u {
@builtin export declare function add(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function sub(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function and(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function or(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function xor(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function xchg(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function cmpxchg(offset: usize, expected:i64, replacement: i64, constantOffset?: usize): i64;
}
namespace rmw {
@builtin export declare function add(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function sub(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function and(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function or(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function xor(offset: usize, value: i64, constantOffset?: usize): i64
@builtin export declare function xchg(offset: usize, value: i64, constantOffset?: usize): i64
export namespace rmw {
@builtin export declare function add(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function sub(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function and(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function or(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function xor(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function xchg(offset: usize, value: i64, constantOffset?: usize): i64;
@builtin export declare function cmpxchg(offset: usize, expected:i64, replacement: i64, constantOffset?: usize): i64;
}
}

View File

@ -12,6 +12,7 @@ globalScope.ASC_FEATURE_MUTABLE_GLOBAL = false;
globalScope.ASC_FEATURE_SIGN_EXTENSION = false;
globalScope.ASC_FEATURE_BULK_MEMORY = false;
globalScope.ASC_FEATURE_SIMD = false;
globalScope.ASC_FEATURE_THREADS = false;
var F64 = new Float64Array(1);
var U64 = new Uint32Array(F64.buffer);