RU2510073C2 - Управление дескриптором типа для замороженных объектов - Google Patents

Управление дескриптором типа для замороженных объектов Download PDF

Info

Publication number
RU2510073C2
RU2510073C2 RU2011108110/08A RU2011108110A RU2510073C2 RU 2510073 C2 RU2510073 C2 RU 2510073C2 RU 2011108110/08 A RU2011108110/08 A RU 2011108110/08A RU 2011108110 A RU2011108110 A RU 2011108110A RU 2510073 C2 RU2510073 C2 RU 2510073C2
Authority
RU
Russia
Prior art keywords
type descriptor
descriptor
canonical
type
component
Prior art date
Application number
RU2011108110/08A
Other languages
English (en)
Other versions
RU2011108110A (ru
Inventor
Скотт Д. МОСИР
Питер Ф. СОЛЛИЧ
Фрэнк В. ПЕСКЕЛ-ГАЛЛИ
Патрик Х. ДАССАД
Саймон Дж. ХОЛЛ
Руди МАРТИН
Майкл М. МЭГРУДЕР
Эндрю ПАРДИ
Мадхусудхан ТАЛЛУРИ
Original Assignee
Майкрософт Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Майкрософт Корпорейшн filed Critical Майкрософт Корпорейшн
Publication of RU2011108110A publication Critical patent/RU2011108110A/ru
Application granted granted Critical
Publication of RU2510073C2 publication Critical patent/RU2510073C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • G06F8/437Type checking

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Stored Programmes (AREA)

Abstract

Изобретение относится к использованию дескрипторов типа с замороженными объектами. Технический результат заключается в повышении быстродействия выполнения операций объектом с указателями дескриптора типа. Замороженный объект может в действительности включать в себя несколько дескрипторов типа: первичный дескриптор типа, который является каноническим в соответствии с набором правил канонизации, и дополнительный дескриптор типа, который не идентичен первичному дескриптору типа. Дополнительный дескриптор типа может использоваться для доступа к каноническому дескриптору типа. При выполнении операции, если дополнительный дескриптор типа может использоваться для выполнения операции, тогда используется этот дополнительный дескриптор типа. Если для выполнения операции должен использоваться канонический дескриптор типа, то дополнительный дескриптор типа используется для получения доступа к каноническому первичному дескриптору типа. Затем первичный дескриптор типа используется для выполнения операции. 3 н. и 13 з.п.ф-лы, 5 ил.

Description

Уровень техники
Самый базовый функциональный блок объектно-ориентированного программирования называется "объектом". Вообще говоря, объект имеет ноль или более методов и ноль или более полей-членов. Соответственно, чтобы правильно интерпретироваться вычислительной системой, объект должен принадлежать к определенному типу, понимаемому вычислительной системой. Простые типы включают в себя типы, которые предоставляются самим языком программирования как базовые функциональные блоки для программиста. Примеры простых типов могут включать в себя символ, строку, целое число, число с плавающей запятой, массив и так далее. Языки программирования типично позволяют программистам создавать составные типы, которые представляют собой комбинацию составляющих типов, каковые составляющие типы являются простыми типами или другими составными типами. Такие составные типы могут быть довольно сложными.
Часто выгодно знать тип определенного объекта. Соответственно, в памяти во время выполнения объект часто имеет связанный с ним дескриптор типа. В одном из примеров объект имеет указатель дескриптора типа, который указывает на более полный дескриптор типа. Дескриптор типа может использоваться в различных целях. Для одной из них дескриптор типа для объекта может быть определен, чтобы удостовериться в том, что конкретная операция может быть выполнена объектом, или чтобы определить, что объект принадлежит к тому же или эквивалентному типу, что и другой объект.
Один особый вид объектов называется "замороженным объектом". Экземпляр замороженного объекта - это тот объект, компоновка которого завершается во время компиляции и включается как часть компилируемого образа. Объекты, которые не подвергаются обширному или, возможно, какому-либо изменению во время выполнения, являются, возможно, лучшими кандидатами на замораживание объекта, но любой экземпляр объекта с предварительно инициализированными данными может быть заморожен. Например, программа-календарь может предоставлять ежедневную вдохновляющую цитату, выбранную из 1000 предопределенных цитат. Каждая из этих 1000 предопределенных цитат может быть представлена в виде замороженного объекта строкового типа. Команды внутри модуля могут ссылаться на замороженный объект. Во время выполнения замороженный объект загружается в память вместе со многими или всеми из других частей модуля. Однако нет необходимости заново размещать замороженный объект во время выполнения.
Сущность изобретения
Варианты осуществления, описанные в материалах настоящей заявки, связаны с эффективным использованием дескрипторов типа с замороженными объектами. В одном из вариантов осуществления замороженный объект может в действительности включать в себя несколько дескрипторов типа: первичный дескриптор типа, который является каноническим в соответствии с набором правил канонизации, и дополнительный дескриптор типа, который не идентичен первичному дескриптору типа. Дополнительный дескриптор типа может использоваться для доступа к каноническому дескриптору типа. При выполнении операции, если для выполнения этой операции может использоваться дополнительный дескриптор типа, тогда этот дополнительный дескриптор типа используется для выполнения данной операции. Если для выполнения операции должен использоваться канонический первичный дескриптор типа, то дополнительный дескриптор типа используется для получения доступа к каноническому первичному дескриптору типа. Затем первичный дескриптор типа используется для выполнения операции.
Это краткое изложение сущности изобретения не предназначено для определения ключевых признаков или существенных признаков заявленного изобретения и не предназначено для использования в качестве содействия при определении объема заявленного изобретения.
Краткое описание чертежей
Для того, чтобы описать способ, с помощью которого могут быть получены вышеприведенные и другие преимущества и признаки, более конкретное описание различных вариантов осуществления будет представлено со ссылкой на прилагаемые чертежи. Понимая, что эти чертежи изображают только примерные варианты осуществления и поэтому не должны рассматриваться в качестве ограничения объема изобретения, варианты осуществления будут описываться и объясняться с дополнительной спецификой и подробностью посредством использования сопроводительных чертежей, на которых:
Фиг.1 иллюстрирует вычислительную систему, в которой могут быть реализованы один или более признаков, описанных в материалах настоящей заявки;
Фиг.2 иллюстрирует архитектуру, в которой дескрипторы типа могут использоваться с замороженными объектами;
Фиг.3 иллюстрирует блок-схему последовательности операций способа для выполнения одной или более операций над типом, используя многочисленные дескрипторы типа, соответствующие замороженному объекту;
Фиг.4 иллюстрирует блок-схему последовательности операций примерного способа использования дополнительного дескриптора типа для доступа к каноническому дескриптору типа и
Фиг.5 иллюстрирует блок-схему последовательности операций способа для подготовки к использованию компонента косвенной связи для обеспечения доступа к каноническому дескриптору типа.
Подробное описание
В соответствии с вариантами осуществления, описанными в материалах настоящей заявки, принципы, описанные в материалах настоящей заявки, предоставляют возможность для эффективного использования дескрипторов типа с замороженными объектами. Сначала описываются различные варианты осуществления вычислительной системы, в которой могут применяться принципы, описанные в материалах настоящей заявки. Затем различные варианты осуществления использования дескрипторов типа, используемых с замороженными объектами, будут описаны по отношению к фиг.2-5.
Фиг.1 иллюстрирует вычислительную систему 100. Вычислительные системы в настоящее время все больше и больше принимают широкое разнообразие форм. Вычислительные системы могут, к примеру, быть карманными устройствами, ноутбуками, настольными компьютерами, универсальными ЭВМ, распределенными вычислительными системами или даже устройствами, которые традиционно не считались вычислительной системой. В этом описании и в пунктах формулы изобретения термин "вычислительная система" определяется широко, как включающий любое устройство или систему (или их комбинацию), которая включает в себя по меньшей мере один процессор и память, приспособлен хранить машиноисполняемые команды, которые могут исполняться процессором. Память может принимать любую форму и может зависеть от характера и формы вычислительной системы. Вычислительная система может быть распределенной по сетевой среде и может включать в себя многочисленные, составляющие вычислительные системы.
Как проиллюстрировано на фиг.1, в своей самой базовой конфигурации вычислительная система 100 типично включает в себя по меньшей мере один блок 102 обработки данных и память 104. Память 104 может быть физической системной памятью, которая может быть энергозависимой, энергонезависимой или некоторой комбинацией их обеих. Термин "память" также может использоваться в материалах настоящей заявки для указания на энергонезависимое запоминающее устройство большой емкости, такое как физический носитель данных. Если вычислительная система является распределенной, то обработка, память и/или емкость хранения также могут быть распределенными. Используемый в материалах настоящей заявки термин "модуль" или "компонент" может указывать на программные объекты или процедуры, которые исполняются на вычислительной системе. Разные компоненты, модули, подсистемы и службы (сервисы), описанные в материалах настоящей заявки, могут быть реализованы как объекты и процессы, которые исполняются на вычислительной системе (например, как отдельные потоки).
В описании, следующем ниже, варианты осуществления описываются со ссылкой на действия, которые выполняются одной или более вычислительными системами. Если такие действия осуществляются в программном обеспечении, один или более процессоров ассоциированной вычислительной системы, которая выполняет действие, управляют функционированием вычислительной системы в ответ на исполнение машиноисполняемых команд. Пример такого функционирования включает манипулирование данными. Машиноисполняемые команды (и манипулируемые данные) могут храниться в памяти 104 вычислительной системы 100.
Вычислительная система 100 может также включать в себя каналы 108 связи, которые позволяют вычислительной системе 100 осуществлять связь с другими процессорами сообщений, например, через сеть 110. Каналы 108 связи являются примерами коммуникационных сред. Коммуникационные среды типично воплощают машиночитаемые команды, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая волна или другой механизм передачи, и включают в себя любые среды доставки информации. В качестве примера, но не ограничения, коммуникационные среды включают в себя проводные среды, такие как проводные сети и прямые проводные соединения, и беспроводные среды, такие как акустические, радио, инфракрасные и другие беспроводные среды. Термин «машиночитаемый носитель», используемый в материалах настоящей заявки, охватывает как носители данных, так и коммуникационные среды.
Варианты осуществления в пределах объема настоящего изобретения также включают машиночитаемые носители для переноса или хранения машиноисполняемых команд или структур данных, хранимых на них. Такие машиночитаемые носители могут быть любыми доступными носителями, к которым можно осуществить доступ с помощью компьютера общего назначения или специального назначения. В качестве примера, а не ограничения, такие машиночитаемые носители могут включать физические носители данных и/или средства памяти, такие как оперативное запоминающее устройство (ОЗУ, RAM), постоянное запоминающее устройство (ПЗУ, ROM), электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ, EEPROM), компакт-диск (CD-ROM) или другой оптический дисковый накопитель, магнитное дисковое запоминающее устройство или другие магнитные запоминающие устройства, или любой другой носитель, который может быть использован, чтобы переносить или хранить требуемые средства программного кода в форме машиноисполняемых команд или структур данных, и к которому можно осуществить доступ через компьютер общего назначения или специального назначения. Когда информация передается или предоставляется через сеть или другое коммуникационное соединение (любое из проводного, беспроводного или комбинации проводного и беспроводного) на компьютер, компьютер по существу рассматривает соединение как машиночитаемый носитель. Таким образом, любое такое соединение вполне можно корректно назвать машиночитаемым носителем. Комбинации вышеприведенного также должны быть также включены в объем понятия «машиночитаемый носитель».
Машиноисполняемые команды содержат, например, команды и данные, которые предписывают компьютеру общего назначения, компьютеру специального назначения или обрабатывающему устройству специального назначения выполнять определенную функцию или группу функций. Хотя изобретение описано на языке, характерном для структурных признаков и/или методологических действий, следует понимать, что изобретение, определенное в прилагаемых пунктах формулы изобретения, необязательно ограничивается специфическими признаками или действиями, описанными в материалах настоящей заявки. Скорее, специфические признаки и действия, описанные в материалах настоящей заявки, раскрываются как примерные формы осуществления пунктов формулы изобретения.
Фиг.2 иллюстрирует архитектуру 200, в которой дескрипторы типа могут эффективно использоваться с замороженными объектами. Как упоминалось ранее, "замороженный объект" - это объект, который размещается во время компиляции и, таким образом, существует как объект в компилируемом выполняемом файле. Соответственно, во время загрузки при подготовке к исполнению замороженный объект загружается в память наряду с потенциально другими частями или, возможно, всеми из других составляющих файла образа. Часто именно статические данные могут быть представлены в виде замороженного объекта. Отметим, что принципы, описанные в материалах настоящей заявки, не ограничиваются использованием замороженных объектов, которые не изменяются при загрузке в память. Однако некоторые варианты осуществления в материалах настоящей заявки уменьшают или исключают необходимость записи представлений замороженных объектов, находящихся в памяти. Это выгодно, так как запись в память может стать причиной того, что части (называемые страницами) памяти, в которые была произведена запись, могут стать "частными" («приватными»). То есть процесс, который записал в эту страницу, вызывает создание частной копии страницы.
Архитектура 200 включает в себя определяющий модуль 210 и ссылочный модуль 220. В данном описании "модули" могут быть исполняемыми образами, загружаемыми в память. Например, со ссылкой на фиг.1 и 2, модули 210 и 220 могут загружаться в память (энергозависимую часть памяти 104) с запоминающего устройства (энергонезависимой части памяти 104).
Определяющий модуль 210 назван "определяющим", так как он содержит первичный дескриптор 211 типа, который соответствует конкретному типу и определяет конкретный тип. В одном из вариантов осуществления первичный дескриптор 211 типа определяет конкретный тип способом, который удовлетворяет набору правил канонизации. Для других типов также могут быть канонизированные дескрипторы типа. Однако, чтобы избежать чрезмерного усложнения фиг.2, проиллюстрированы дескрипторы типа только для одного типа.
Ссылочный модуль 220 назван "ссылочным", так как он содержит замороженный объект 222, который принадлежит к типу, определенному первичным дескриптором типа. Ссылочный модуль 220, таким образом, в некотором смысле косвенно ссылается на первичный дескриптор типа в первичном модуле 210. В частности, ссылочный модуль 222 включает в себя дополнительный дескриптор 221 типа, соответствующий тому же конкретному типу и определяющий тот же конкретный тип, который определен первичным дескриптором 211 типа. Ссылочный модуль 222 также включает в себя достаточную информацию для обеспечения связки 223 между замороженным объектом 222 и дополнительным дескриптором 221 типа.
Дополнительный дескриптор 211 типа не идентичен каноническому первичному дескриптору 221 типа. Например, дополнительный дескриптор 221 типа может не быть каноническим дескриптором типа в том смысле, что он может не подчиняться каждому каноническому правилу в наборе канонических правил, которым подчиняется первичный дескриптор 211 типа. В одном из вариантов осуществления, однако, дополнительный дескриптор 221 типа может по существу являться абсолютно точной копией первичного дескриптора 211 типа, разве что, возможно, с достаточной информацией для различения первичного и дополнительного дескриптора типа друг от друга. В другом варианте осуществления дополнительный дескриптор 221 типа включает в себя такую достаточную информацию, что по меньшей мере одна операция над типом может быть выполнена с дополнительным дескриптором 221 типа, вместо необходимости ссылки на канонический первичный дескриптор 211 типа.
Связка 223 между замороженным объектом 222 и дополнительным дескриптором 221 типа может быть, например, указателем дескриптора типа в самом замороженном объекте. Например, в варианте осуществления, в котором объект начинается с указателя дескриптора типа, замороженный объект может также начинаться с указателя дескриптора типа. Однако вместо указывания на первичный дескриптор типа замороженный объект 222 указывает на дополнительный дескриптор 221 типа. Если бы вместо этого в модуль 220 был включен первичный дескриптор 211 типа, замороженный объект 221 мог бы взамен напрямую указывать на первичный дескриптор 211 типа. Однако во время компиляции ссылочного модуля 220 могло бы не быть достаточной информации для того, чтобы замороженный объект напрямую указывал на первичный дескриптор типа в другом модуле.
Архитектура 200 также включает в себя компонент 230 косвенной связи, посредством которого дополнительный дескриптор 221 типа связывается с первичным дескриптором 211 типа. В одном из вариантов осуществления компонент 230 косвенной связи является адресной таблицей импорта и может даже быть частью самого ссылочного модуля 220. Одна ячейка из адресной таблицы импорта может использоваться как точка косвенной связи между первичным дескриптором 211 типа и дополнительным дескриптором 221 типа. Хотя на фиг.2 проиллюстрирован лишь один тип, компонент косвенной связи может использоваться для многочисленных типов. В одном из вариантов осуществления компонент 230 косвенной связи используется для связывания двух дескрипторов типа, как изложено ниже. Сначала, потенциально во время компиляции, дополнительный дескриптор типа содержит некоторую индикацию того, что дескриптор типа является дополнительным, а не первичным. Это означает, что одно из полей дополнительного дескриптора 221 типа изменяется так, чтобы включать в себя указатель на соответствующую часть компонента 230 косвенной связи, как представлено стрелкой 231. Затем во время выполнения соответствующая часть компонента 230 косвенной связи изменяется так, чтобы включать в себя указатель (представленный стрелкой 232) на соответствующий первичный дескриптор 211 типа. Таким образом, используя указатели в дополнительном дескрипторе 221 типа и компоненте 230 косвенной связи, дополнительный дескриптор 221 типа может использоваться для доступа к первичному дескриптору 211 типа. Кроме того, в той степени, в которой дополнительный дескриптор типа в том же модуле, что и замороженный объект, может использоваться для выполнения операции над типом в отношении замороженного объекта, только один уровень косвенной связи используется для доступа к дополнительному дескриптору типа.
В одном из вариантов осуществления в компонент косвенной связи можно осуществлять запись, возможно, только один раз, без представления в виде частных тех страниц, в которые осуществляется запись. Даже если операция записи представляет частной часть компонента косвенной связи, в которую производится запись, компонент 230 косвенной связи может быть разделен на меньшее число страниц. Соответственно, меньше страниц могут быть сделаны частными по сравнению с ситуацией, в которой схожее число записей должны были быть сделаны в более распространенные указатели дескриптора типа в самом модуле 220.
Среда 200 также включает компонент 240 управления операциями, который выполняет операции над типом. При этом компонент управления операциями определяет, достаточно ли дополнительного дескриптора типа для выполнения операции над типом, или для выполнения операции над типом необходим первичный дескриптор типа. В качестве примера, фиг.3 иллюстрирует блок-схему последовательности операций способа 300 для выполнения одной или более операций над типом, используя многочисленные дескрипторы типа, соответствующие замороженному объекту. Например, если бы замороженный объект был замороженным объектом 222 по фиг.2, многочисленные дескрипторы типа включали бы в себя первичный дескриптор 211 типа и дополнительный дескриптор 221 типа. В одном из вариантов осуществления компонент 240 управления операциями просто может быть приложением, операционной системой или их частью.
Сначала для каждой операции компонент 240 определяет, достаточно ли будет дополнительного дескриптора типа для выполнения операции (этап 301 ветвления). Для одной или более операций над типом может быть определено, что дополнительного дескриптора типа будет достаточно для выполнения операции (Да на этапе 301 ветвления). В этом случае операция выполняется, используя дополнительный дескриптор типа (этап 302). В некоторых случаях операции над типом могут требовать, чтобы между замороженным объектом и дескриптором типа был только один уровень косвенной связи. Указатель из замороженного объекта на дополнительный дескриптор типа представляет этот один уровень косвенной связи в этом случае. Таким образом, эти операции могут выполняться без чрезмерной дополнительной сложности для доступа к первичному дескриптору типа через дополнительную косвенную связь.
Примеры операций над типом, которые могут быть выполнены, используя всего лишь дополнительный дескриптор типа, и которые могут ожидать всего один уровень косвенной связи между объектом и дескриптором типа, включают в себя операцию виртуального вызова или операцию вызова интерфейса. Дополнительно, сравнения типов между двумя объектами могут в некоторых случаях быть сделаны путем сравнения указателей дескрипторов типа в каждом объекте. Если указатели совпадают, тогда независимо от того, указывают ли они оба на первичный дескриптор типа или дополнительный дескриптор типа, они ссылаются на одинаковый тип. В одном из вариантов осуществления значительная часть всех операций над типом, которые выполняются, могут быть выполнены посредством использования всего лишь дополнительного дескриптора типа. Соответственно, эти операции могут быть выполнены вполне эффективно без необходимости даже нахождения первичного дескриптора типа.
Для одной или более других операций может быть определено, что дополнительного дескриптора типа не будет достаточно для выполнения операции (Нет на этапе 301 ветвления). В этом случае дополнительный дескриптор типа используется для доступа к каноническому первичному дескриптору типа (этап 303). Затем первичный дескриптор типа может использоваться для выполнения операции (этап 304). В качестве примера операции над типом, которая может потребовать доступ к первичному дескриптору типа, предположим, что вновь выполняется операция сравнения между двумя объектами. Однако в этом случае, если указатели дескрипторов типа не совпадают и определено, что по меньшей мере один из объектов указывает на дополнительный дескриптор типа, тогда осуществляют доступ к первичному дескриптору типа, соответствующему любым дополнительным дескрипторам типа, и первичные дескрипторы типа используются для проверки совпадения типов. В одном из вариантов осуществления часть операций над типом, которым необходим доступ к первичному дескриптору типа, может быть относительно небольшой по сравнению с частью операций над типом, которые можно завершить, используя всего лишь дополнительный дескриптор типа.
Фиг.4 иллюстрирует блок-схему последовательности операций примерного способа 400 использования дополнительного дескриптора типа для доступа к каноническому дескриптору типа. Существуют другие способы, которые могут применяться для доступа к первичному дескриптору типа из дополнительного дескриптора типа. Однако способ 400 удобен в качестве примера.
Осуществляют доступ к указателю внутри дополнительного дескриптора типа (этап 401). Этот указатель указывает прямо или косвенно на первичный дескриптор типа. Например, в случае фигуры 2, указатель дополнительного дескриптора типа указывает (как представлено стрелкой 231) на подходящую ячейку в компоненте косвенной связи. Затем указатель, находящийся в ячейке компонента косвенной связи (см. стрелку 232), используется для доступа к первичному каноническому дескриптору типа (этап 402).
Таким образом, дескрипторы типа могут эффективно использоваться, даже если многочисленные дескрипторы типа соответствуют одному объекту и даже если первичный дескриптор типа для конкретного объекта располагается вне модуля, в котором размещен замороженный объект. Более того, путем объединения операций записи в компонент косвенной связи, операции записи могут быть более объединенными во время выполнения, таким образом минимизируя и потенциально исключая приватизацию страниц из-за таких операций записи.
Фиг.5 иллюстрирует блок-схему последовательности операций способа 500 для подготовки к использованию компонента косвенной связи для обеспечения доступа к каноническому дескриптору типа. Этот способ 500 может быть выполнен во время загрузки при подготовке к исполнению. Перед выполнением способа, во время компиляции, указатель из замороженного объекта на дополнительный дескриптор типа и указатель из дополнительного дескриптора типа на компонент косвенной связи могут быть уже заданными. Однако, чтобы завершить путь косвенной связи к первичному дескриптору типа, задается указатель из компонента косвенной связи на первичный дескриптор типа.
Для этого определяется тип, который соответствует подходящей ячейке компонента косвенной связи (этап 501). Затем определяется, что этот тип соответствует первичному дескриптору типа (этап 502). В ответ на эту операцию сопоставления компонент косвенной связи затем изменяется так, чтобы включать в себя указатель на канонический дескриптор типа (этап 503). Таким образом, в этом варианте осуществления часть пути косвенной связи создается во время компиляции, а окончательная часть пути косвенной связи создается во время исполнения. Это предоставляет гибкость применения в расположениях первичных дескрипторов типа по отношению к замороженным объектам в других исполняемых модулях. Таким образом, пока где-нибудь в наборе исполняемых модулей есть первичный дескриптор типа, замороженный объект где-либо в наборе может должным образом ссылаться, даже если косвенно, на этот первичный дескриптор типа.
Настоящее изобретение может быть реализовано в других специфических формах без отступления от своего характера или существенных характеристик. Описанные варианты осуществления должны рассматриваться во всех отношениях лишь как иллюстративные, а не ограничительные. Поэтому объем изобретения, скорее, обозначен приложенной формулой изобретения, а не вышеизложенным описанием. Все изменения, которые происходят в пределах значения и диапазона эквивалентности пунктов формулы изобретения, должны быть включены в их объем.

Claims (16)

1. Считываемый компьютером носитель, на котором хранится исполняемый модуль, причем исполняемый модуль содержит:
замороженный объект, который является экземпляром типа, канонически описываемого каноническим дескриптором типа, подчиняющимся набору правил канонизации, причем замороженный объект имеет компоновку, которая завершается во время компиляции, и размещается во время компиляции и, таким образом, существует как объект в исполняемом модуле;
дополнительный дескриптор типа, который отличается от и не идентичен каноническому дескриптору типа, но который также служит в качестве дескриптора типа для замороженного объекта для, по меньшей мере, некоторых из операций, связанных с замороженным объектом, которые используют дескрипторы типа для упомянутого типа;
при этом замороженный объект связан с дополнительным дескриптором типа в исполняемом модуле, причем замороженный объект связан с каноническим дескриптором типа посредством компонента косвенной связи через дополнительный дескриптор типа, при этом канонический дескриптор типа находится в модуле, который является отличающимся и внешним по отношению к исполняемому модулю, и при этом компонент косвенной связи представляет собой компонент, в который может производиться запись во время выполнения, чтобы таким образом предписать компоненту косвенной связи указывать на канонический дескриптор типа, не приводя к тому, чтобы компонент косвенной связи или его часть становились частными.
2. Считываемый компьютером носитель по п.1, при этом канонический дескриптор типа присутствует на считываемом компьютером носителе.
3. Считываемый компьютером носитель по п.1, при этом замороженный объект связан с дополнительным дескриптором типа путем включения указателя, который указывает на дополнительный дескриптор типа.
4. Считываемый компьютером носитель по п.1, при этом компонент косвенной связи - это компонент, запись в который может производиться один раз во время выполнения, чтобы таким образом предписать компоненту косвенной связи указывать на канонический дескриптор типа, не приводя к тому, чтобы компонент косвенной связи или его часть становились частными.
5. Считываемый компьютером носитель по п.1, при этом компонент косвенной связи является адресной таблицей импорта.
6. Считываемый компьютером носитель, на котором сохранено следующее:
определяющий модуль, который включает в себя первый компилированный образ, который содержит первичный дескриптор типа, соответствующий типу;
ссылочный модуль, который включает в себя второй компилированный образ, который содержит замороженный объект, дополнительный дескриптор типа и связку между замороженным объектом и дополнительным дескриптором типа, причем замороженный объект имеет компоновку, которая завершается во время компиляции, и размещается во время компиляции, при этом определяющий модуль и ссылочный модуль являются отдельными и отличающимися модулями;
компонент косвенной связи, через который дополнительный дескриптор типа связывается с первичным дескриптором типа, причем компонент косвенной связи представляет собой компонент, в который может производиться запись во время выполнения, чтобы таким образом предписать компоненту косвенной связи указывать на первичный дескриптор типа, не приводя к тому, чтобы компонент косвенной связи или его часть становились частными; и
компонент управления операциями, который сконфигурирован определять, достаточно ли дополнительного дескриптора типа для выполнения операции, либо для выполнения этой операции требуется первичный дескриптор типа, и, когда определено, что требуется первичный дескриптор типа, дополнительный дескриптор типа используется в ссылочном модуле для нахождения и доступа к первичному дескриптору типа в определяющем модуле через компонент косвенной связи.
7. Считываемый компьютером носитель по п.6, при этом компонент косвенной связи может быть модифицирован по меньшей мере один раз, не приводя к тому, чтобы какая-либо часть компонента косвенной связи становилась частной.
8. Способ управления множеством дескрипторов типа, причем это множество дескрипторов типа включает в себя канонический дескриптор типа, подчиняющийся набору правил канонизации, и дополнительный дескриптор типа, при этом канонический дескриптор типа и дополнительный дескриптор типа являются отличающимися и оба связаны с замороженным объектом, причем замороженный объект имеет компоновку, которая завершается во время компиляции, и размещается во время компиляции и, таким образом, существует как объект в компилируемом исполняемом первом модуле, причем этот первый модуль включает в себя как замороженный объект, так и дополнительный дескриптор типа, при этом способ выполняется в одном или более процессорах и содержит:
связывание, через компонент косвенной связи, дополнительного дескриптора типа с каноническим дескриптором типа, причем компонент косвенной связи представляет собой компонент, в который может производиться запись во время выполнения, чтобы таким образом предписать компоненту косвенной связи указывать на канонический дескриптор типа, не приводя к тому, чтобы компонент косвенной связи или его часть становились частными;
для первого набора из одной или более операций действие определения того, что дополнительного дескриптора типа в упомянутом первом модуле будет достаточно для выполнения операции, и действие использования дополнительного дескриптора типа, а не канонического дескриптора типа, для выполнения операции; и
для второго набора из одной или более операций действие определения того, что дополнительного дескриптора типа не будет достаточно для выполнения операции, действие использования дополнительного дескриптора типа для доступа к каноническому дескриптору типа, причем канонический дескриптор включен во второй модуль, и действие использования канонического дескриптора типа во втором модуле для выполнения операции.
9. Способ по п.8, в котором действие использования дополнительного дескриптора типа для доступа к каноническому дескриптору типа содержит действие доступа к указателю внутри дополнительного дескриптора типа, причем этот указатель указывает прямо или косвенно на канонический дескриптор типа.
10. Способ по п.8, в котором действие использования дополнительного дескриптора типа для доступа к каноническому дескриптору типа содержит:
действие доступа к указателю внутри дополнительного дескриптора типа, причем этот указатель указывает прямо или косвенно на компонент косвенной связи, который содержит указатель, который указывает прямо или косвенно на канонический дескриптор типа; и
действие использования указателя, который находится в компоненте косвенной связи, для доступа к каноническому дескриптору типа.
11. Способ по п.10, дополнительно содержащий действие подготовки к использованию компонента косвенной связи для обеспечения доступа к каноническому дескриптору типа.
12. Способ по п.11, в котором действие подготовки содержит:
действие определения типа, который соответствует компоненту косвенной связи,
действие определения того, что тип соответствует каноническому дескриптору типа и
действие изменения компонента косвенной связи так, чтобы он включал в себя указатель на канонический дескриптор типа.
13. Способ по п.8, в котором по меньшей мере одна из второго набора операций включает сравнение типа замороженного объекта с типом другого объекта.
14. Способ по п.8, в котором по меньшей мере одна из первого набора операций требует, чтобы между замороженным объектом и дескриптором типа, который используется для выполнения операции, был только один уровень косвенной связи.
15. Способ по п.8, в котором по меньшей мере одна из первого набора операций является операцией виртуального вызова.
16. Способ по п.8, в котором по меньшей мере одна из первого набора операций является операцией вызова интерфейса.
RU2011108110/08A 2008-09-03 2009-08-19 Управление дескриптором типа для замороженных объектов RU2510073C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/203,857 2008-09-03
US12/203,857 US8316357B2 (en) 2008-09-03 2008-09-03 Type descriptor management for frozen objects
PCT/US2009/054299 WO2010027665A2 (en) 2008-09-03 2009-08-19 Type descriptor management for frozen objects

Publications (2)

Publication Number Publication Date
RU2011108110A RU2011108110A (ru) 2012-09-10
RU2510073C2 true RU2510073C2 (ru) 2014-03-20

Family

ID=41727204

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2011108110/08A RU2510073C2 (ru) 2008-09-03 2009-08-19 Управление дескриптором типа для замороженных объектов

Country Status (7)

Country Link
US (1) US8316357B2 (ru)
EP (1) EP2321734B1 (ru)
KR (1) KR20110099214A (ru)
CN (1) CN102203757B (ru)
BR (1) BRPI0916699A2 (ru)
RU (1) RU2510073C2 (ru)
WO (1) WO2010027665A2 (ru)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8755610B2 (en) * 2011-06-10 2014-06-17 Apple Inc. Auto-recognition for noteworthy objects
US8863099B2 (en) * 2012-11-05 2014-10-14 International Business Machines Corporation Compilation and placement of instructions in a memory system
RU2541935C2 (ru) 2012-12-25 2015-02-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ развертывания предварительно сконфигурированного программного обеспечения
RU2523113C1 (ru) 2012-12-25 2014-07-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ целевой установки сконфигурированного программного обеспечения
US8805972B1 (en) 2013-06-26 2014-08-12 Kaspersky Lab Zao Multi-platform operational objective configurator for computing devices
US20220212100A1 (en) * 2021-01-04 2022-07-07 Microsoft Technology Licensing, Llc Systems and methods for streaming interactive applications
US11954023B2 (en) 2022-07-20 2024-04-09 Microsoft Technology Licensing, Llc Garbage collection prefetching state machine

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1304655A2 (en) * 2001-10-18 2003-04-23 Microsoft Corporation Generic parameterization for a scene graph
US20040221070A1 (en) * 2003-03-07 2004-11-04 Ortega William M. Interface for distributed processing of SCSI tasks
US6954762B2 (en) * 2002-02-28 2005-10-11 Veritas Operating Corporation System and method for characterizing logical storage devices
US20070283111A1 (en) * 2002-02-07 2007-12-06 Microsoft Corporation Method and System for Transporting Data Content on a Storage Area Network
EA009793B1 (ru) * 2003-02-03 2008-04-28 ТЕННЕССИ ПАСИФИК ГРУП, Эл. Эл. Си. Распространение и управление правами для цифрового контента

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0418638A (ja) 1990-05-11 1992-01-22 Fujitsu Ltd 静的メモリ割当て処理方法
US5970496A (en) 1996-09-12 1999-10-19 Microsoft Corporation Method and system for storing information in a computer system memory using hierarchical data node relationships
US6061520A (en) 1998-04-07 2000-05-09 Sun Microsystems, Inc. Method and system for performing static initialization
US6868425B1 (en) * 1999-03-05 2005-03-15 Microsoft Corporation Versions and workspaces in an object repository
US6529921B1 (en) * 1999-06-29 2003-03-04 Microsoft Corporation Dynamic synchronization of tables
DE10026478A1 (de) * 2000-05-27 2001-12-20 Abb Patent Gmbh Verfahren zur Generierung anwendungsspezifischer Eingabedateien
CA2329559A1 (en) * 2000-12-22 2002-06-22 Ibm Canada Limited-Ibm Canada Limitee Method and apparatus for generating serialization code for representing a model in different type systems
US20030046670A1 (en) * 2001-06-15 2003-03-06 Marlow Mark J. Binary object system for automated data translation
US7685261B1 (en) * 2001-06-29 2010-03-23 Symantec Operating Corporation Extensible architecture for the centralized discovery and management of heterogeneous SAN components
US7036118B1 (en) * 2001-12-20 2006-04-25 Mindspeed Technologies, Inc. System for executing computer programs on a limited-memory computing machine
US20030140058A1 (en) * 2002-01-18 2003-07-24 Vitria Technology, Inc. Method and apparatus for sharing information between applications using common objects
US7010783B2 (en) 2002-03-18 2006-03-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using reduced dynamic memory allocation
US7111279B2 (en) * 2002-10-30 2006-09-19 Hewlett-Packard Development Company, L.P. Intercepting calls to common dialog functions
US7353507B2 (en) 2002-10-30 2008-04-01 Hewlett-Packard Development, L.P. Intercepting function cells
GB0306610D0 (en) * 2003-03-21 2003-04-30 British Telecomm Conversion of structured information
US20050086642A1 (en) * 2003-10-15 2005-04-21 Martin Runte Tools providing for backwards compatible software
US7840949B2 (en) * 2003-11-03 2010-11-23 Ramal Acquisition Corp. System and method for data transformation using dataflow graphs
US7124291B1 (en) 2003-12-22 2006-10-17 Sun Microsystems, Inc System and method for eliminating static initialization overhead by memory space cloning of a master runtime system process
US7805495B2 (en) * 2005-03-31 2010-09-28 Google Inc. Method and system for transferring web browser data between web browsers
US7992140B2 (en) * 2005-07-29 2011-08-02 Microsoft Corporation Compiler supporting programs as data objects
US7900213B2 (en) * 2005-10-04 2011-03-01 International Business Machines Corporation Generic markup specified object descriptor for a modularized computing application
US20080127129A1 (en) * 2006-08-30 2008-05-29 Microsoft Corporation Compiling logical programs to rewrite systems
US8015556B2 (en) * 2006-10-12 2011-09-06 International Business Machines Corporation Efficient method of data reshaping for multidimensional dynamic array objects in the presence of multiple object instantiations
US7809745B2 (en) * 2007-08-09 2010-10-05 Yahoo! Inc. Method for generating structured query results using lexical clustering
US8347277B2 (en) * 2007-08-17 2013-01-01 International Business Machines Corporation Verifying that binary object file has been generated from source files
US20090070753A1 (en) * 2007-09-07 2009-03-12 International Business Machines Corporation Increase the coverage of profiling feedback with data flow analysis
US8850057B2 (en) * 2007-09-20 2014-09-30 Intel Corporation Healthcare semantic interoperability platform

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1304655A2 (en) * 2001-10-18 2003-04-23 Microsoft Corporation Generic parameterization for a scene graph
US20070283111A1 (en) * 2002-02-07 2007-12-06 Microsoft Corporation Method and System for Transporting Data Content on a Storage Area Network
US6954762B2 (en) * 2002-02-28 2005-10-11 Veritas Operating Corporation System and method for characterizing logical storage devices
EA009793B1 (ru) * 2003-02-03 2008-04-28 ТЕННЕССИ ПАСИФИК ГРУП, Эл. Эл. Си. Распространение и управление правами для цифрового контента
US20040221070A1 (en) * 2003-03-07 2004-11-04 Ortega William M. Interface for distributed processing of SCSI tasks

Also Published As

Publication number Publication date
EP2321734A4 (en) 2016-02-24
US20100058304A1 (en) 2010-03-04
EP2321734B1 (en) 2021-05-26
WO2010027665A2 (en) 2010-03-11
WO2010027665A8 (en) 2011-07-07
CN102203757B (zh) 2013-07-31
KR20110099214A (ko) 2011-09-07
EP2321734A2 (en) 2011-05-18
WO2010027665A3 (en) 2010-06-24
RU2011108110A (ru) 2012-09-10
US8316357B2 (en) 2012-11-20
BRPI0916699A2 (pt) 2015-11-17
CN102203757A (zh) 2011-09-28

Similar Documents

Publication Publication Date Title
RU2510073C2 (ru) Управление дескриптором типа для замороженных объектов
US7542977B2 (en) Transactional memory with automatic object versioning
KR100712767B1 (ko) 컴파일된 코드에서 동적 클래스 초기화 검사의 비용을 줄이기 위한 컴퓨터 시스템의 명령어 컴파일 방법 및 그 컴퓨터 판독가능 매체
US8176142B2 (en) Shared JAVA jar files
US8839215B2 (en) String cache file for optimizing memory usage in a java virtual machine
CN111399990B (zh) 解释执行智能合约指令的方法及装置
US9563446B2 (en) Binary file generation
US10635420B2 (en) Overriding a migrated method in an updated type
US20080005719A1 (en) Methods, systems, and computer program products for providing a program execution environment
US10922081B2 (en) Conditional branch frame barrier
US8650537B2 (en) Optimizing an object-oriented program by transforming invocations of synthetic accessor methods
US20080022265A1 (en) Methods, systems, and computer program products for generating and using object modules
US20120185822A1 (en) Web browsing apparatus and method through storing and optimizing javascript® code
US9870232B2 (en) Extensible method and system for storage metadata
US7685397B2 (en) Apparatus and method for managing stacks in virtual machine
US20070226474A1 (en) Method and system for providing context switch using multiple register file
US11347487B2 (en) Confining reflective access based on module boundaries
US8745605B2 (en) Execution contexts with polymorphic type implementations
US11593113B2 (en) Widening memory access to an aligned address for unaligned memory operations
US20190212945A1 (en) Apparatus and method of managing multi solid state disk system
US20230075578A1 (en) System and method for transition of static schema to dynamic schema
Chawdhary et al. Closing the performance gap between doubles and rationals for octagons
US20130132061A1 (en) Just-in-time static translation system for emulated computing environments
CN117950675A (zh) 二进制翻译方法、装置、电子设备及可读存储介质
JP2018151692A (ja) 計算機及びアプリケーション管理方法

Legal Events

Date Code Title Description
PC41 Official registration of the transfer of exclusive right

Effective date: 20150526

MM4A The patent is invalid due to non-payment of fees

Effective date: 20190820