+2015-10-16 Arnaud Charlet <charlet@adacore.com>
+
+ * s-osprim-mingw.adb, s-osprim-x32.adb, s-taprop-mingw.adb,
+ s-taprop-posix.adb (Monotonic_Clock): Removed, not used.
+ Remove remaining references to OS_Primitives.Monotonic_Clock.
+ Keep it only on windows which is a special case.
+
+2015-10-16 Javier Miranda <miranda@adacore.com>
+
+ * a-textio.adb (Get_Line): Fix documentation.
+ * einfo.ads (Interface_Name): Fix documentation.
+ * exp_aggr.adb (Backend_Processing_Possible): Fix documentation.
+ * exp_ch4.adb (Expand_N_In): Fix documentation.
+
2015-10-16 Eric Botcazou <ebotcazou@adacore.com>
* inline.adb (Subp_Info): Remove Listed component.
Item : out String;
Last : out Natural) is separate;
-- The implementation of Ada.Text_IO.Get_Line is split into a subunit so
- -- that different implementations can be used on different systems. In
- -- particular the standard implementation uses low level stuff that is
- -- not appropriate for the VMs.
+ -- that different implementations can be used on different systems.
procedure Get_Line
(Item : out String;
-- Interface_Name (Node21)
-- Defined in constants, variables, exceptions, functions, procedures,
--- packages, components (JGNAT only), discriminants (JGNAT only), and
--- access to subprograms (JGNAT only). Set to Empty unless an export,
--- import, or interface name pragma has explicitly specified an external
--- name, in which case it references an N_String_Literal node for the
--- specified external name. Note that if this field is Empty, and
--- Is_Imported or Is_Exported is set, then the default interface name
--- is the name of the entity, cased in a manner that is appropriate to
--- the system in use. Note that Interface_Name is ignored if an address
--- clause is present (since it is meaningless in this case).
---
--- An additional special case usage of this field is in JGNAT for
--- E_Component and E_Discriminant. JGNAT allows these entities to be
--- imported by specifying pragma Import within a component's containing
--- record definition. This supports interfacing to object fields defined
--- within Java classes, and such pragmas are generated by the jvm2ada
--- binding generator tool whenever it processes classes with public
--- object fields. A pragma Import for a component can define the
--- External_Name of the imported Java field (which is generally needed,
--- because Java names are case sensitive).
+-- and packages. Set to Empty unless an export, import, or interface name
+-- pragma has explicitly specified an external name, in which case it
+-- references an N_String_Literal node for the specified external name.
+-- Note that if this field is Empty, and Is_Imported or Is_Exported is
+-- set, then the default interface name is the name of the entity, cased
+-- in a manner that is appropriate to the system in use. Note that
+-- Interface_Name is ignored if an address clause is present (since it
+-- is meaningless in this case).
-- Interfaces (Elist25)
-- Defined in record types and subtypes. List of abstract interfaces
-- vtable (i.e. the one to be extended by derivation).
-- Is_Tagged_Type (Flag55)
--- Defined in all entities. Set for an entity that is a tagged type
+-- Defined in all entities. Set for an entity that is a tagged type.
-- Is_Task_Interface (synthesized)
-- Defined in types that are interfaces. True if interface is declared as
-- E_Access_Subprogram_Type
-- Equivalent_Type (Node18) (remote types only)
-- Directly_Designated_Type (Node20)
- -- Interface_Name (Node21) (JGNAT usage only)
-- Needs_No_Actuals (Flag22)
-- Original_Access_Type (Node28)
-- Can_Use_Internal_Rep (Flag229)
-- Prival (Node17)
-- Renamed_Object (Node18) (always Empty)
-- Discriminant_Checking_Func (Node20)
- -- Interface_Name (Node21) (JGNAT usage only)
-- Original_Record_Component (Node22)
-- DT_Offset_To_Top_Func (Node25)
-- Related_Type (Node27)
-- Renamed_Object (Node18) (always Empty)
-- Corresponding_Discriminant (Node19)
-- Discriminant_Default_Value (Node20)
- -- Interface_Name (Node21) (JGNAT usage only)
-- Original_Record_Component (Node22)
-- CR_Discriminant (Node23)
-- Is_Return_Object (Flag209)
-- 10. No controlled actions need to be generated for components
- -- 11. For a VM back end, the array should have no aliased components
-
function Backend_Processing_Possible (N : Node_Id) return Boolean is
Typ : constant Entity_Id := Etype (N);
-- Typ is the correct constrained array subtype of the aggregate
-- present we can proceed since the bounds can be obtained from the
-- aggregate.
- -- Note: This case is required in VM platforms since their backends
- -- normalize array indexes in the range 0 .. N-1. Hence, if we do
- -- not flat an array whose bounds cannot be obtained from the type
- -- of the index the backend has no way to properly generate the code.
- -- See ACATS c460010 for an example.
-
if Hiv < Lov
or else (not Compile_Time_Known_Value (Blo) and then Others_Present)
then
if Is_Tagged_Type (Typ) then
-- No expansion will be performed for VM targets, as the VM
- -- back-ends will handle the membership tests directly (tags
- -- are not explicitly represented in VM objects, so the
- -- normal tagged membership expansion is not what we want).
+ -- back-ends will handle the membership tests directly.
if Tagged_Type_Expansion then
Tagged_Membership (N, SCIL_Node, New_N);
-- No expansion will be performed for VM targets, as
-- the VM back-ends will handle the membership tests
- -- directly (tags are not explicitly represented in
- -- objects, so the normal tagged membership
- -- expansion is not what we want).
+ -- directly.
if Tagged_Type_Expansion then
Signature : Signature_Type := 0;
pragma Atomic (Signature);
+ function Monotonic_Clock return Duration;
+ pragma Export (Ada, Monotonic_Clock, "__gnat_monotonic_clock");
+ -- Return "absolute" time, represented as an offset relative to "the Unix
+ -- Epoch", which is Jan 1, 1970 00:00:00 UTC. This clock implementation is
+ -- immune to the system's clock changes.
+ -- Export this function so that it can be imported from s-taprop-mingw.adb
+ -- without changing the shared spec (s-osprim.ads).
+
procedure Get_Base_Time (Data : in out Clock_Data);
-- Retrieve the base time and base ticks. These values will be used by
-- clock to compute the current time by adding to it a fraction of the
-- --
-- B o d y --
-- --
--- Copyright (C) 2013-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 2013-2015, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
return Duration (sec) + Duration (usec) / Micro;
end Clock;
- ---------------------
- -- Monotonic_Clock --
- ---------------------
-
- function Monotonic_Clock return Duration renames Clock;
-
-----------------
-- To_Timespec --
-----------------
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2015, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- Monotonic_Clock --
---------------------
- function Monotonic_Clock return Duration
- renames System.OS_Primitives.Monotonic_Clock;
+ function Monotonic_Clock return Duration is
+ function Internal_Clock return Duration;
+ pragma Import (Ada, Internal_Clock, "__gnat_monotonic_clock");
+ begin
+ return Internal_Clock;
+ end Monotonic_Clock;
-------------------
-- RT_Resolution --
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2015, Free Software Foundation, Inc. --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
else
declare
- Cal_Check_Time : constant Duration :=
- OS_Primitives.Monotonic_Clock;
+ Cal_Check_Time : constant Duration := OS_Primitives.Clock;
RT_Time : constant Duration :=
- Time + Check_Time - Cal_Check_Time;
+ Time + Check_Time - Cal_Check_Time;
+
begin
Abs_Time :=
Duration'Min (Check_Time + Max_Sensible_Delay, RT_Time);