PreviousUpNext

15.4.288  src/lib/compiler/back/low/main/main/machine-properties-default.pkg

## machine-properties-default.pkg
#
# A set of default machine-properties values.
# By 'including' this package and then just
# overriding the values as necessary, actual
# machine-properties files may be made more
# compact. (Whether this is a good idea is debatable...)
#
# For real sets see:
#
#     machine_properties_intel32        is from   src/lib/compiler/back/low/main/intel32/machine-properties-intel32.pkg
#     machine_properties_pwrpc32        is from   src/lib/compiler/back/low/main/pwrpc32/machine-properties-pwrpc32.pkg
#     machine_properties_sparc32        is from   src/lib/compiler/back/low/main/sparc32/machine-properties-sparc32.pkg

# Compiled by:
#     src/lib/compiler/core.sublib

stipulate
    package sma =  supported_architectures;                     # supported_architectures               is from   src/lib/compiler/front/basics/main/supported-architectures.pkg
herein
    package machine_properties_default
    : (weak)        Machine_Properties                          # Machine_Properties                    is from   src/lib/compiler/back/low/main/main/machine-properties.api
    {
        machine_architecture = sma::INTEL32;                    # Can be PWRPC32/SPARC32/INTEL32.

        framesize = 4096;


        num_int_regs            = 0;
        num_float_regs          = 0;
        spill_area_size         = 0;
        initial_spill_offset    = 0;
        run_heapcleaner__offset = 0;                            # Offset relative to framepointer of pointer to function which starts a heapcleaning ("garbage collection").
        pseudo_reg_offset       = 0;
        const_base_pointer_reg_offset   = 0;

        big_endian              = FALSE;
        polling                 = FALSE;
        unboxed_floats          = TRUE;
        representations         = TRUE;
        new_closure             = TRUE;
        untagged_int            = FALSE;

        num_arg_regs            = 10;
        max_rep_regs            = 10;
        num_float_arg_regs      = 0;
        num_callee_saves        = 3;
        num_float_callee_saves  = 0;

        Value_Tag = {   tagbits:    Int,
                        tagval:     Int 
                    };

        int_tag     =  { tagbits=>1, tagval=>1 };               # Never used.
        ptr_tag     =  { tagbits=>2, tagval=>0 };               # Never used.
        tagword_tag =  { tagbits=>2, tagval=>2 };               # Never used.

        # Representations of memory-chunk tagwords: 
        #
        package heap_tags = heap_tags;          # heap_tags     is from   src/lib/compiler/back/low/main/main/heap-tags.pkg

        value_size = 4;
        char_size  = 1;
        float_size_in_bytes  = 8;               # Used only in   src/lib/compiler/back/low/main/nextcode/spill-nextcode-registers-g.pkg
        float_align = TRUE;

        quasi_stack = FALSE;
        quasi_free  = FALSE;
        quasi_frame_size = 7;

        new_list_rep = FALSE;
        list_cell_size = 2;

        float_reg_params        = TRUE;
        write_allocate_hack     = FALSE;
        fixed_arg_passing       = FALSE;
        spill_rematerialization = FALSE;

        # The following defaults happen to be the values for intel32 
        #
        task_offset             = 176;
        hostthread_offtask              =   4;
        in_lib7off_vsp          =   8;
        limit_ptr_mask_off_vsp  = 200;
        #
        framepointer_never_virtual = FALSE;

        # intel32 and sparc32 don't use pre-allocated arg space for ccalls 
        #
        ccall_prealloc_argspace_in_bytes = NULL;

    };                                          # package machine_properties_default
end;

## COPYRIGHT (c) 1995 AT&T Bell Laboratories.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext