mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 20:09:19 +02:00
* Atomics
This commit is contained in:
parent
e8144afb6b
commit
d775dadced
@ -1329,10 +1329,32 @@ type
|
|||||||
class function Cast(const Intf: IJSObject): IJSTextEncoder; overload;
|
class function Cast(const Intf: IJSObject): IJSTextEncoder; overload;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
IJSAtomics = interface
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TJSAtomics }
|
||||||
|
|
||||||
|
TJSAtomics = class (TJSObject,IJSAtomics)
|
||||||
|
class function add(aTypedArray : IJSTypedArray; index: integer; value : Integer) : integer;
|
||||||
|
class function and_(aTypedArray : IJSTypedArray; index: integer; value : Integer) : integer;
|
||||||
|
class function compareExchange(aTypedArray : IJSTypedArray; index: integer; ExpectedValue, ReplacementValue : Integer) : integer;
|
||||||
|
class function exchange(aTypedArray : IJSTypedArray; index: integer; ReplacementValue : Integer) : integer;
|
||||||
|
class function isLockFree(size : integer) : boolean;
|
||||||
|
class function load(aTypedArray : IJSTypedArray; Index : integer) : integer;
|
||||||
|
class function notify(aTypedArray : IJSTypedArray; Index : integer; count : integer) : integer;
|
||||||
|
class function or_(aTypedArray : IJSTypedArray; index: integer; value : Integer) : integer;
|
||||||
|
class function store(aTypedArray : IJSTypedArray; index: integer; value : Integer) : integer;
|
||||||
|
class function sub(aTypedArray : IJSTypedArray; index: integer; value : Integer) : integer;
|
||||||
|
class function wait(aTypedArray: IJSTypedArray; index: integer; value: Integer): unicodestring;
|
||||||
|
class function wait(aTypedArray: IJSTypedArray; index: integer; value: Integer; TimeOut: integer): unicodestring;
|
||||||
|
class function xor_(aTypedArray : IJSTypedArray; index: integer; value : Integer) : integer;
|
||||||
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
JSObject: IJSObject; // singleton of JS 'Object'
|
JSObject: IJSObject; // singleton of JS 'Object'
|
||||||
JSDate: IJSDate; // singleton of JS 'Date'
|
JSDate: IJSDate; // singleton of JS 'Date'
|
||||||
JSJSON: IJSJSON; // singleton of JS 'Date'
|
JSJSON: IJSJSON; // singleton of JS 'Date'
|
||||||
|
JSAtomics: TJSAtomics; // Singleton of JS 'Atomics'
|
||||||
|
|
||||||
// imported functions from browser
|
// imported functions from browser
|
||||||
function __job_invoke_noresult(
|
function __job_invoke_noresult(
|
||||||
@ -1736,6 +1758,74 @@ begin
|
|||||||
Result:=TJSTextEncoder.JOBCast(Intf);
|
Result:=TJSTextEncoder.JOBCast(Intf);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TJSAtomics }
|
||||||
|
|
||||||
|
class function TJSAtomics.add(aTypedArray: IJSTypedArray; index: integer; value: Integer): integer;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSLongIntResult('add',[aTypedArray,Index,Value]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.and_(aTypedArray: IJSTypedArray; index: integer; value: Integer): integer;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSLongIntResult('and',[aTypedArray,Index,Value]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.compareExchange(aTypedArray: IJSTypedArray; index: integer; ExpectedValue, ReplacementValue: Integer
|
||||||
|
): integer;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSLongIntResult('compareExchange',[aTypedArray,Index,ExpectedValue, ReplacementValue]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.exchange(aTypedArray: IJSTypedArray; index: integer; ReplacementValue: Integer): integer;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSLongIntResult('exchange',[aTypedArray,Index, ReplacementValue]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.isLockFree(size: integer): boolean;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSBooleanResult('isLockFree',[Size]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.load(aTypedArray: IJSTypedArray; Index: integer): integer;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSLongintResult('load',[aTypedArray,Index]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.notify(aTypedArray: IJSTypedArray; Index: integer; count: integer): integer;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSLongintResult('notify',[aTypedArray,Index,count]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.or_(aTypedArray: IJSTypedArray; index: integer; value: Integer): integer;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSLongintResult('or',[aTypedArray,Index,value]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.store(aTypedArray: IJSTypedArray; index: integer; value: Integer): integer;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSLongintResult('store',[aTypedArray,Index,value]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.sub(aTypedArray: IJSTypedArray; index: integer; value: Integer): integer;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSLongintResult('sub',[aTypedArray,Index,value]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.wait(aTypedArray: IJSTypedArray; index: integer; value: Integer): unicodestring;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSUnicodeStringResult('wait',[aTypedArray,Index,value]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.wait(aTypedArray: IJSTypedArray; index: integer; value: Integer; TimeOut: integer): unicodestring;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSUnicodeStringResult('wait',[aTypedArray,Index,value,timeout]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJSAtomics.xor_(aTypedArray: IJSTypedArray; index: integer; value: Integer): integer;
|
||||||
|
begin
|
||||||
|
Result:=JSAtomics.InvokeJSLongintResult('xor',[aTypedArray,Index,value]);
|
||||||
|
end;
|
||||||
|
|
||||||
{ TJSTextDecoder }
|
{ TJSTextDecoder }
|
||||||
|
|
||||||
class function TJSTextDecoder.Cast(const Intf: IJSObject): IJSTextDecoder;
|
class function TJSTextDecoder.Cast(const Intf: IJSObject): IJSTextDecoder;
|
||||||
@ -4989,5 +5079,6 @@ initialization
|
|||||||
JSObject:=TJSObject.JOBCreateGlobal('Object') as IJSObject;
|
JSObject:=TJSObject.JOBCreateGlobal('Object') as IJSObject;
|
||||||
JSDate:=TJSDate.JOBCreateGlobal('Date') as IJSDate;
|
JSDate:=TJSDate.JOBCreateGlobal('Date') as IJSDate;
|
||||||
JSJSON:=TJSJSON.JOBCreateGlobal('JSON') as IJSJSON;
|
JSJSON:=TJSJSON.JOBCreateGlobal('JSON') as IJSJSON;
|
||||||
|
JSAtomics:=TJSAtomics.JOBCreateGlobal('Atomics');
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user