ОПРЕДЕЛЕНИЕ ПОРЯДКА ИНИЦИАЛИЗАЦИИ СТАТИСТИЧЕСКИХ ОБЪЕКТОВ

1. Способ определения порядка инициализации статических объектов, находящихся во множестве объектных файлов с помощью процессора, включающий:
определение принадлежности объекта к определенным статическим объектам или неопределенным объектам в каждом объектном файле;
построение направленного графа для множества объектных файлов; и
применение топологической сортировки к направленному графу для установления порядка множества объектных файлов, который гарантирует корректную инициализацию статических объектов.
2. Способ по п. 1, отличающийся тем, что каждый объектный файл содержит объекты, который дополнительно включает:
идентификацию принадлежности объектов в каждом объектном файле к определенным статическим объектам, неопределенным объектам или ни к определенным статическим объектам, ни к неопределенным объектам; и
исключение из рассмотрения объектов, не определенных как определенные статические объекты или неопределенные объекты.
3. Способ по п. 2, отличающийся тем, что:
шаг идентификации объектов включает для первого объекта первого объектного файла считывание атрибута первого объекта первого объектного файла для определения принадлежности первого объекта в объектном файле к определенному статическому объекту, неопределенному объекту или ни к определенному статическому объекту, ни к неопределенному объекту;
группировку первого объекта первого объектного файла с другими определенными статическими объектами первого объектного файла, если первый объект был определен как определенный статический объект;
группировку первого объекта первого объектного файла с другими неопределенными объектами первого объектного файла, если первый объект был определен как неопределенный объект; и
переход ко второму объекту первого объектного файла, если установлено, что первый объект первого объектного файла не является ни определенным статическим объектом, ни неопределенным объектом.
4. Способ по п. 1, отличающийся тем, что:
направленный граф содержит вершины, каждая из которых представляет собой объектный файл, причем ребро графа из первой вершины ко второй вершине образуется, если первый объектный файл содержит по меньшей мере один неопределенный объект, а второй объектный файл содержит определенный статический объект с тем же именем; и
при выполнении шага топологической сортировки составляется список всех вершин, которые не содержат никаких ребер, ведущих от более ранней вершины к одной или нескольким более поздним вершинам.
5. Способ по п. 1, дополнительно включающий:
определение возможности составления списка на основе топологически отсортированного направленного графа; и
если такой список может быть составлен, то создание его для определения порядка множества объектных файлов, который гарантирует корректную инициализацию статических объектов.
6. Способ по п. 1, дополнительно включающий:
определение возможности составления списка на основе топологически отсортированного направленного графа;
если такой список не может быть составлен, то определение одной или нескольких пар объектных файлов во множестве объектных файлов, образующих одну или несколько циклических зависимостей; и
устранение одной или нескольких циклических зависимостей.
7. Способ по п. 1, отличающийся тем, что множество статических объектов находится во множестве различных объектных файлов.
8. Система для определения порядка инициализации статических объектов, находящихся во множестве объектных файлов, отличающаяся тем, что эта система включает:
процессор, который:
определяет принадлежность объектов в каждом объектном файле к определенным статическим объектам или неопределенным объектам;
строит направленный граф для множества объектных файлов; и
применяет топологическую сортировку к направленному графу для получения порядка множества объектных файлов, который гарантирует корректную инициализацию статических объектов.
9. Система по п. 8, отличающаяся тем, что каждый объектный файл содержит объекты и процессор дополнительно:
для каждого объектного файла проводит идентификацию принадлежности объектов в объектном файле к определенным статическим объектам, неопределенным объектам или ни к определенным статическим объектам, ни неопределенным объектам; и
исключает из рассмотрения объекты, не определенные как определенные статические объекты или неопределенные объекты.
10. Система по п. 9, отличающаяся тем, что этот процессор дополнительно:
при идентификации статических объектов для первого объекта первого объектного файла считывает атрибут первого объекта первого объектного файла для определения принадлежности первого объекта в первом объектном файле к определенному статическому объекту, неопределенному объекту или ни к определенному статическому объекту, ни к неопределенному объекту;
группирует первый объект первого объектного файла с другими определенными статическими объектами первого объектного файла, если этот первый объект был определен как определенный статический объект;
группирует первый объект первого объектного файла с другими неопределенными объектами первого объектного файла, если этот первый объект был определен как неопределенный объект; и
переходит ко второму объекту первого объектного файла, если первый объект первого объектного файла не был определен как определенный статический объект или неопределенный объект.
11. Система по п. 8, отличающаяся тем, что в ее процессоре:
направленный граф содержит вершины, каждая из которых представляет собой объектный файл, причем ребро графа из первой вершины ко второй вершине образуется, если первый объектный файл содержит по меньшей мере один неопределенный объект, а второй объектный файл содержит определенный статический объект с тем же именем; и
при выполнении шага топологической сортировки составляется список всех вершин, которые не содержат никаких ребер, идущих от более ранней вершины к одной или нескольким более поздним вершинам.
12. Система по п. 8, отличающаяся тем, что этот процессор дополнительно:
определяет, возможно ли составления списка из топологически отсортированного направленного графа; и
если этот список может быть составлен, то создает такой список, определяющий порядок множества объектных файлов, который гарантирует корректную инициализацию статических объектов.
13. Система по п. 8, отличающаяся тем, что этот процессор дополнительно:
определяет возможность составления списка на основе топологически отсортированного направленного графа;
если такой список не может быть составлен, то он определяет одну пару или несколько пар объектных файлов во множестве объектных файлов, формирующих одну или несколько циклических зависимостей;
исправляет одну или несколько циклических зависимостей.
14. Система по п. 8, отличающаяся тем, что множество статических объектов находится во множестве различных объектных файлов.
15. Программный продукт для компьютера для инициализации статических объектов, расположенных во множестве объектных файлов с помощью процессора, причем этот программный продукт для компьютера включает постоянный носитель информации с записанным на нем машиночитаемым программным кодом, причем части машиночитаемого программного кода включают:
первую исполняемую часть для определения принадлежности объектов в каждом объектном файле к определенным статическим объектам или к неопределенным объектам;
вторую исполняемую часть для построения направленного графа для множества объектных файлов; и
третью исполняемую часть для применения топологической сортировки к направленному графу с целью определения порядка множества объектных файлов, который гарантирует корректную инициализацию статических объектов.
16. Программный продукт для компьютера по п. 15, отличающийся тем, что каждый объектный файл содержит объекты, а программный продукт для компьютера дополнительно включает:
четвертую исполняемую часть для идентификации принадлежности объектов в объектном файле к определенным статическим объектам, к неопределенным объектам или ни к тем, ни к другим; и
пятую исполняемую часть для исключения из рассмотрения объектов, не принадлежащих к статически определенным объектам и к неопределенным объектам.
17. Программный продукт для компьютера по п. 16, отличающийся тем, что:
четвертая исполняемая часть для идентификации объектов включает для первого объекта первого объектного файла чтение атрибута первого объекта первого объектного файла для определения принадлежности первого объекта первого объектного к определенному статическому объекту, к неопределенному объекту или ни к определенному статическому объекту, ни к неопределенному объекту; и
программный продукт для компьютера, дополнительно включающий:
шестую исполняемую часть для группировки первого объекта первого объектного файла с другими определенными статическими объектами первого объектного файла, если этот первый объект был определен как определенный статический объект;
седьмую исполняемую часть для группировки первого объекта первого объектного файла с другими неопределенными объектами первого объектного файла, если этот первый объекта был определен как неопределенный объект; и
восьмую исполняемую часть для перехода ко второму объекту первого объектного файла, если было определено, что первый объект первого объектного файла не принадлежит ни к определенному статическому объекту, ни к неопределенному объекту.
18. Программный продукт для компьютера по п. 15, отличающийся тем, что:
направленный граф содержит вершины, каждая из которых представляет собой объектный файл, причем ребро графа из первой вершины ко второй вершине образуется, если первый объектный файл содержит по меньшей мере один неопределенный объект, а второй объектный файл содержит определенный статический объект с тем же именем; и
при выполнении шага топологической сортировки составляется список всех вершин, которые не содержат никаких ребер, ведущих от более ранней вершины к одной или нескольким более поздним вершинам.
19. Программный продукт для компьютера по п. 15, дополнительно содержащий:
четвертую исполняемую часть, которая определяет возможность составления списка на основе топологически отсортированного направленного графа; и
пятую исполняемую часть, которая, если этот список может быть составлен, создает такой список, определяющий порядок множества объектных файлов, гарантирующий корректную инициализацию статических объектов.
20. Программный продукт для компьютера по п. 15, дополнительно содержащий:
четвертую исполняемую часть, которая определяет возможность составления списка на основе топологически отсортированного направленного графа;
пятую исполняемую часть, которая, если этот список не может быть составлен, определяет одну или несколько пар объектных файлов во множестве объектных файлов, образующих одну или несколько циклических зависимостей; и
шестую исполняемую часть для исправления одной или нескольких циклических зависимостей.
21. Программный продукт для компьютера по п. 15, отличающийся тем, что статические объекты находятся во множестве различных объектных файлов.