|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 7449 (0x1d19)
Types: TextFile
Names: »B«
└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
└─⟦77aa8350c⟧ »DATA«
└─⟦f794ecd1d⟧
└─⟦24d1ddd49⟧
└─⟦this⟧
separate (Shared_Code_Generic_Support)
package body Asm_Interface is
pragma Suppress_All;
type Wide_Enum is new Integer;
-- To force Boolean and Expression_Kind parameters to be passed
-- in a word.
function Call_Value_Size (Subp : Subprogram_Variable;
Type_Desc : Type_Descriptor;
Exp : Expression;
Exp_Kind : Wide_Enum) return Integer;
-- To call Value_Size_Subp in the Type_Descriptor
pragma Interface (Asm, Call_Value_Size);
pragma Import_Function (Internal => Call_Value_Size,
External => "__CALL_VALUE_SIZE",
Mechanism => (Reference, Reference, Value, Value));
function Call_Allocate
(Subp : Subprogram_Variable;
Type_Desc : Type_Descriptor;
Collection_Or_Heap : System.Address;
Is_Collection : Wide_Enum;
Is_Homogeneous : Wide_Enum) return System.Address;
-- To call Allocate_Subp in the Type_Descriptor
pragma Interface (Asm, Call_Allocate);
pragma Import_Function
(Internal => Call_Allocate,
External => "__CALL_ALLOCATE",
Mechanism => (Reference, Reference, Value, Value, Value));
function Call_Allocate_With_Tasks
(Subp : Subprogram_Variable;
Type_Desc : Type_Descriptor;
Collection_Or_Heap : System.Address;
Is_Collection : Wide_Enum;
Is_Homogeneous : Wide_Enum;
Master_Layer : System.Address;
Activation_Group : System.Address) return System.Address;
-- To call Allocate_Subp in the Type_Descriptor
pragma Interface (Asm, Call_Allocate_With_Tasks);
pragma Import_Function (Internal => Call_Allocate_With_Tasks,
External => "__CALL_ALLOCATE_WITH_TASKS",
Mechanism => (Reference, Reference, Value,
Value, Value, Value, Value));
procedure Call_Dscrmt_Record_Assign (Subp : Subprogram_Variable;
Type_Desc : Type_Descriptor;
Source : Expression;
Source_Kind : Wide_Enum;
Dest : Expression;
Dest_Kind : Wide_Enum);
-- To call Dscrmt_Record_Assign_Subp in the Type_Descriptor
pragma Interface (Asm, Call_Dscrmt_Record_Assign);
pragma Import_Procedure
(Internal => Call_Dscrmt_Record_Assign,
External => "__CALL_DSCRMT_RECORD_ASSIGN",
Mechanism => (Reference, Reference, Value, Value, Value, Value));
function Call_Dscrmt_Record_Satisfies
(Subp : Subprogram_Variable;
Type_Desc : Type_Descriptor;
Exp : Expression;
Exp_Kind : Wide_Enum) return Boolean;
-- To call Dscrmt_Record_Satisfies_Subp in the Type_Descriptor.
-- Does ONLY a subtype check.
pragma Interface (Asm, Call_Dscrmt_Record_Satisfies);
pragma Import_Function (Internal => Call_Dscrmt_Record_Satisfies,
External => "__CALL_DSCRMT_RECORD_SATISFIES",
Mechanism => (Reference, Reference, Value, Value));
-- Exported subprograms follow
function Value_Size (Subp : Subprogram_Variable;
Type_Desc : Type_Descriptor;
Exp : Expression;
Exp_Kind : Expression_Kind) return Integer is
pragma Routine_Number (N => Runtime_Ids.Internal);
begin
return Call_Value_Size
(Subp => Subp,
Type_Desc => Type_Desc,
Exp => Exp,
Exp_Kind => Expression_Kind'Pos (Exp_Kind));
end Value_Size;
function Allocate (Subp : Subprogram_Variable;
Type_Desc : Type_Descriptor;
Collection_Or_Heap : System.Address;
Is_Collection : Boolean;
Is_Homogeneous : Boolean)
return System.Address is
pragma Routine_Number (N => Runtime_Ids.Internal);
begin
return Call_Allocate
(Subp => Subp,
Type_Desc => Type_Desc,
Collection_Or_Heap => Collection_Or_Heap,
Is_Collection => Boolean'Pos (Is_Collection),
Is_Homogeneous => Boolean'Pos (Is_Homogeneous));
end Allocate;
function Allocate_With_Tasks (Subp : Subprogram_Variable;
Type_Desc : Type_Descriptor;
Collection_Or_Heap : System.Address;
Is_Collection : Boolean;
Is_Homogeneous : Boolean;
Master_Layer : System.Address;
Activation_Group : System.Address)
return System.Address is
pragma Routine_Number (N => Runtime_Ids.Internal);
begin
return Call_Allocate_With_Tasks
(Subp => Subp,
Type_Desc => Type_Desc,
Collection_Or_Heap => Collection_Or_Heap,
Is_Collection => Boolean'Pos (Is_Collection),
Is_Homogeneous => Boolean'Pos (Is_Homogeneous),
Master_Layer => Master_Layer,
Activation_Group => Activation_Group);
end Allocate_With_Tasks;
procedure Dscrmt_Record_Assign
(Subp : Subprogram_Variable;
Type_Desc : Type_Descriptor;
Source : Expression;
Source_Kind : Expression_Kind;
Dest : Expression;
Dest_Kind : Expression_Kind) is
pragma Routine_Number (N => Runtime_Ids.Internal);
begin
Call_Dscrmt_Record_Assign
(Subp => Subp,
Type_Desc => Type_Desc,
Source => Source,
Source_Kind => Expression_Kind'Pos (Source_Kind),
Dest => Dest,
Dest_Kind => Expression_Kind'Pos (Dest_Kind));
end Dscrmt_Record_Assign;
function Dscrmt_Record_Satisfies
(Subp : Subprogram_Variable;
Type_Desc : Type_Descriptor;
Exp : Expression;
Exp_Kind : Expression_Kind) return Boolean is
pragma Routine_Number (N => Runtime_Ids.Internal);
begin
return Call_Dscrmt_Record_Satisfies
(Subp => Subp,
Type_Desc => Type_Desc,
Exp => Exp,
Exp_Kind => Expression_Kind'Pos (Exp_Kind));
end Dscrmt_Record_Satisfies;
end Asm_Interface;
pragma Runtime_Unit (Unit_Number => Runtime_Ids.Runtime_Compunit,
Elab_Routine_Number => Runtime_Ids.Internal);