mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 09:09:19 +02:00
* synchronized with trunk
git-svn-id: branches/wasm@46418 -
This commit is contained in:
commit
f0aca344dc
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -18445,6 +18445,7 @@ tests/webtbs/tw37228.pp svneol=native#text/plain
|
|||||||
tests/webtbs/tw37254.pp svneol=native#text/pascal
|
tests/webtbs/tw37254.pp svneol=native#text/pascal
|
||||||
tests/webtbs/tw37261.pp svneol=native#text/pascal
|
tests/webtbs/tw37261.pp svneol=native#text/pascal
|
||||||
tests/webtbs/tw37272a.pp svneol=native#text/pascal
|
tests/webtbs/tw37272a.pp svneol=native#text/pascal
|
||||||
|
tests/webtbs/tw37286.pp svneol=native#text/pascal
|
||||||
tests/webtbs/tw37301.pp svneol=native#text/pascal
|
tests/webtbs/tw37301.pp svneol=native#text/pascal
|
||||||
tests/webtbs/tw37322.pp svneol=native#text/pascal
|
tests/webtbs/tw37322.pp svneol=native#text/pascal
|
||||||
tests/webtbs/tw37323.pp svneol=native#text/pascal
|
tests/webtbs/tw37323.pp svneol=native#text/pascal
|
||||||
|
@ -1315,12 +1315,15 @@ implementation
|
|||||||
{arm_attribute} [oso_data]
|
{arm_attribute} [oso_data]
|
||||||
);
|
);
|
||||||
begin
|
begin
|
||||||
if (aType in [sec_rodata,sec_rodata_norel]) then
|
if target_asm.id in asms_int_coff then
|
||||||
begin
|
begin
|
||||||
if (target_info.system in systems_all_windows) then
|
if (aType in [sec_rodata,sec_rodata_norel]) then
|
||||||
aType:=sec_rodata_norel
|
begin
|
||||||
else
|
if (target_info.system in systems_all_windows) then
|
||||||
aType:=sec_data;
|
aType:=sec_rodata_norel
|
||||||
|
else
|
||||||
|
aType:=sec_data;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
result:=secoptions[atype];
|
result:=secoptions[atype];
|
||||||
{$ifdef OMFOBJSUPPORT}
|
{$ifdef OMFOBJSUPPORT}
|
||||||
|
@ -443,6 +443,10 @@ interface
|
|||||||
+ [system_i386_beos,system_i386_haiku]
|
+ [system_i386_beos,system_i386_haiku]
|
||||||
+ [system_powerpc_morphos];
|
+ [system_powerpc_morphos];
|
||||||
|
|
||||||
|
{ all internal COFF writers }
|
||||||
|
asms_int_coff = [as_arm_pecoffwince,as_x86_64_pecoff,as_i386_pecoffwince,
|
||||||
|
as_i386_pecoffwdosx,as_i386_pecoff,as_i386_coff];
|
||||||
|
|
||||||
cpu2str : array[TSystemCpu] of string[10] =
|
cpu2str : array[TSystemCpu] of string[10] =
|
||||||
('','i386','m68k','alpha','powerpc','sparc','vm','ia64','x86_64',
|
('','i386','m68k','alpha','powerpc','sparc','vm','ia64','x86_64',
|
||||||
'mips','arm', 'powerpc64', 'avr', 'mipsel','jvm', 'i8086',
|
'mips','arm', 'powerpc64', 'avr', 'mipsel','jvm', 'i8086',
|
||||||
|
@ -742,7 +742,9 @@ implementation
|
|||||||
else
|
else
|
||||||
Internalerror(2020031401);
|
Internalerror(2020031401);
|
||||||
end;
|
end;
|
||||||
end;
|
end
|
||||||
|
else if target_info.abi=abi_xtensa_windowed then
|
||||||
|
list.concat(taicpu.op_reg_const(A_ENTRY,NR_STACK_POINTER_REG,16));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
@ -939,10 +939,35 @@ begin
|
|||||||
Raise EConvertError.Create('Invalid JSON String:'+S);
|
Raise EConvertError.Create('Invalid JSON String:'+S);
|
||||||
end;
|
end;
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
|
|
||||||
|
function BufferHexToInt(P : PAnsiChar): integer;
|
||||||
|
var
|
||||||
|
N, i: integer;
|
||||||
|
ch: char;
|
||||||
|
begin
|
||||||
|
Result:= 0;
|
||||||
|
for i:= 1 to 4 do
|
||||||
|
begin
|
||||||
|
ch:= p^;
|
||||||
|
case ch of
|
||||||
|
'0'..'9':
|
||||||
|
N:= Ord(ch)-Ord('0');
|
||||||
|
'a'..'f':
|
||||||
|
N:= Ord(ch)-(Ord('a')-10);
|
||||||
|
'A'..'F':
|
||||||
|
N:= Ord(ch)-(Ord('A')-10);
|
||||||
|
else
|
||||||
|
exit(-1);
|
||||||
|
end;
|
||||||
|
Inc(P);
|
||||||
|
Result:= Result*16+N;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
|
|
||||||
I,J,L,U1,U2 : Integer;
|
I,J,L,U1,U2 : Integer;
|
||||||
App,W : String;
|
App : String;
|
||||||
|
|
||||||
Procedure MaybeAppendUnicode;
|
Procedure MaybeAppendUnicode;
|
||||||
|
|
||||||
@ -982,20 +1007,17 @@ begin
|
|||||||
'f' : App:=#12;
|
'f' : App:=#12;
|
||||||
'r' : App:=#13;
|
'r' : App:=#13;
|
||||||
'u' : begin
|
'u' : begin
|
||||||
W:=Copy(S,I+1,4);
|
U2:=BufferHexToInt(PAnsiChar(@S[I+1]));
|
||||||
|
if U2=-1 then
|
||||||
|
Raise EJSON.Create('Invalid unicode hex code: '+Copy(S,I+1,4));
|
||||||
Inc(I,4);
|
Inc(I,4);
|
||||||
u2:=StrToInt('$'+W);
|
|
||||||
if (U1<>0) then
|
if (U1<>0) then
|
||||||
begin
|
begin
|
||||||
App:={$IFDEF FPC_HAS_CPSTRING}UTF8Encode({$ENDIF}WideChar(U1)+WideChar(U2){$IFDEF FPC_HAS_CPSTRING}){$ENDIF};
|
App:={$IFDEF FPC_HAS_CPSTRING}UTF8Encode({$ENDIF}WideChar(U1)+WideChar(U2){$IFDEF FPC_HAS_CPSTRING}){$ENDIF};
|
||||||
writeln('app a: ',L,': ',App);
|
|
||||||
U2:=0;
|
U2:=0;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
|
||||||
writeln('app b: ',L,': ',WideChar(U2));
|
|
||||||
U1:=U2;
|
U1:=U2;
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if App<>'' then
|
if App<>'' then
|
||||||
|
@ -129,8 +129,17 @@ begin
|
|||||||
// Add to existing structural type
|
// Add to existing structural type
|
||||||
if (FStruct is TJSONObject) then
|
if (FStruct is TJSONObject) then
|
||||||
begin
|
begin
|
||||||
if (Not (joIgnoreDuplicates in options)) or (TJSONObject(FStruct).IndexOfName(FKey)=-1) then
|
if (Not (joIgnoreDuplicates in options)) then
|
||||||
TJSONObject(FStruct).Add(FKey,AValue);
|
try
|
||||||
|
TJSONObject(FStruct).Add(FKey,AValue);
|
||||||
|
except
|
||||||
|
AValue.Free;
|
||||||
|
Raise;
|
||||||
|
end
|
||||||
|
else if (TJSONObject(FStruct).IndexOfName(FKey)=-1) then
|
||||||
|
TJSONObject(FStruct).Add(FKey,AValue)
|
||||||
|
else
|
||||||
|
AValue.Free;
|
||||||
FKey:='';
|
FKey:='';
|
||||||
end
|
end
|
||||||
else if (FStruct is TJSONArray) then
|
else if (FStruct is TJSONArray) then
|
||||||
|
@ -198,11 +198,14 @@ procedure TPasWriter.AddLn(const s: string);
|
|||||||
|
|
||||||
Var
|
Var
|
||||||
L : String;
|
L : String;
|
||||||
|
len : Integer;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Add(s);
|
Add(s);
|
||||||
L:=PostProcessLine(FCurrentLine);
|
L:=PostProcessLine(FCurrentLine);
|
||||||
Stream.Write(L[1],Length(L));
|
Len:=Length(L);
|
||||||
|
if Len>0 then
|
||||||
|
Stream.Write(L[1],Len);
|
||||||
Stream.Write(FLineEnding[1],Length(FLineEnding));
|
Stream.Write(FLineEnding[1],Length(FLineEnding));
|
||||||
IsStartOfLine:=True;
|
IsStartOfLine:=True;
|
||||||
FCurrentLine:='';
|
FCurrentLine:='';
|
||||||
|
20
tests/webtbs/tw37286.pp
Normal file
20
tests/webtbs/tw37286.pp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{ %NORUN }
|
||||||
|
|
||||||
|
program tw37286;
|
||||||
|
|
||||||
|
{$mode objfpc}
|
||||||
|
|
||||||
|
var preShiftWorldDx: LongInt;
|
||||||
|
WorldDx: LongInt;
|
||||||
|
playWidth: LongInt;
|
||||||
|
|
||||||
|
procedure ShiftWorld(Dir: LongInt); inline;
|
||||||
|
begin
|
||||||
|
preShiftWorldDx:= WorldDx;
|
||||||
|
WorldDx:= WorldDx + LongInt(Dir * LongInt(playWidth));
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
ShiftWorld(-1);
|
||||||
|
end.
|
Loading…
Reference in New Issue
Block a user