JP2016511484A5 - - Google Patents
Download PDFInfo
- Publication number
- JP2016511484A5 JP2016511484A5 JP2016501182A JP2016501182A JP2016511484A5 JP 2016511484 A5 JP2016511484 A5 JP 2016511484A5 JP 2016501182 A JP2016501182 A JP 2016501182A JP 2016501182 A JP2016501182 A JP 2016501182A JP 2016511484 A5 JP2016511484 A5 JP 2016511484A5
- Authority
- JP
- Japan
- Prior art keywords
- contract
- component
- components
- predicate
- runtime
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 230000000875 corresponding Effects 0.000 claims 24
- 238000011084 recovery Methods 0.000 claims 5
- 238000004590 computer program Methods 0.000 claims 4
- 230000003068 static Effects 0.000 claims 4
- 231100000486 side effect Toxicity 0.000 claims 1
Claims (20)
- 1または複数のハードウェアプロセッサと、前記1または複数のハードウェアプロセッサによって実行され得るコンピュータ実行可能命令を有する1または複数のハードウェア記憶装置とを備えたシステムであって、前記コンピュータ実行可能命令は中間言語プログラムコードの静的解析の一環として少なくとも以下の、
前記中間言語プログラムコードにおいて複数のコンポーネントを識別することであって、各コンポーネントは異なる実行スコープを備え、対応するコントラクトを含み、各コントラクトは、前記対応する実行スコープのランタイムにおいて当該コントラクトに遭遇した場合、前記コントラクトの述部が真であるかを、前記対応する実行スコープの以降の実行の条件とする、ことと、
前記複数のコンポーネントの特定のコンポーネントに対応する特定のコントラクトの特定の述部が、前記特定のコンポーネントのランタイムにおいて常に真とは限らないと判定することと、
前記複数のコンポーネントのための実行可能コードを1または複数の実行可能バイナリ内に生成することであって、前記特定のコンポーネントのための前記実行可能コードを生成するときに、前記複数のコンポーネントの1または複数の他のコンポーネントの第1のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトのチェックを迂回させることができる第1のエントリポイントを有し、前記複数のコンポーネントの1または複数の他のコンポーネントの第2のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトをチェックさせる第2のエントリポイントを有する実行可能コードの部分を生成することを含む、ことと、
を実行するようシステムを構成する、システム。 - 前記特定のコンポーネントは前記システムに挙動を実行するよう命令し、前記特定のコントラクトは、前記挙動を変更することなく前記特定のコントラクトのチェックを削除できるように、意味的に構造化されている、請求項1に記載のシステム。
- 各コントラクトが、前記対応するコンポーネントのインターフェースを使用して、前記対応するコンポーネントの呼び出し元に意味的にアクセス可能である、請求項1に記載のシステム。
- コントラクトが対応するコンポーネントの事前条件である、請求項1に記載のシステム。
- コントラクトが対応するコンポーネントの事後条件である、請求項1に記載のシステム。
- ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記システムは、前記特定のコンポーネントの前記実行スコープの外で外部回復コードを実行するよう構成される、請求項1に記載のシステム。
- ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記システムは、前記特定の述部が真ではないことに応答して回復コードが実行されないように、前記特定のコンポーネントに対してファイストフェイルを実施するよう構成される、請求項1に記載のシステム。
- 前記システムはまた、述部が外部から見える副作用を含むような少なくともいくつかの条件を検出するように構成される、請求項1に記載のシステム。
- 前記システムはまた、前記1または複数の実行可能バイナリを記憶装置上に格納するように構成される、請求項1に記載のシステム。
- 前記システムはまた、
前記複数のコンポーネントの別のコンポーネントに対応する別のコントラクトの別の述部が、前記別のコンポーネントのランタイムにおいて常に真であると判定し、
前記複数のコンポーネントのための前記実行可能コードを1または複数の実行可能バイナリ内に生成するときに、前記別の述部が前記別のコンポーネントのランタイムにおいて常に真であると判定されたことに基づいて、前記別のコンポーネントのための実行可能コードの第3の部分であって、前記別のコントラクトおよび前記別の述部に対応する実行可能コードがない、実行可能コードの第3の部分を生成するように構成される、請求項1に記載のシステム。 - 1または複数のハードウェアプロセッサを含むコンピュータシステムで実装される、中間言語プログラムコードの静的解析を実行するための方法であって、
前記1または複数のハードウェアプロセッサが、前記中間言語プログラムコードにおいて複数のコンポーネントを識別することであって、各コンポーネントは異なる実行スコープを備え、対応するコントラクトを含み、各コントラクトは、前記対応する実行スコープのランタイムにおいて当該コントラクトに遭遇した場合、前記コントラクトの述部が真であるかを、前記対応する実行スコープの以降の実行の条件とする、ことと、
前記1または複数のハードウェアプロセッサが、前記複数のコンポーネントの特定のコンポーネントに対応する特定のコントラクトの特定の述部が、前記特定のコンポーネントのランタイムにおいて常に真とは限らないと判定することと、
前記1または複数のハードウェアプロセッサが、前記複数のコンポーネントのための実行可能コードを1または複数の実行可能バイナリ内に生成することであって、前記特定のコンポーネントのための前記実行可能コードを生成するときに、前記複数のコンポーネントの1または複数の他のコンポーネントの第1のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトのチェックを迂回させることができる第1のエントリポイントを有し、前記複数のコンポーネントの1または複数の他のコンポーネントの第2のセットによって前記特定のコンポーネントが呼び出される場合に、ランタイムにおいて前記特定のコントラクトをチェックさせる第2のエントリポイントを有する実行可能コードの部分を生成することを含む、ことと、
を含む方法。 - 前記静的解析は、リファクタリングツール、検証ツール、自動化ドキュメンテーションジェネレータの少なくとも1つによって実行される、請求項11に記載の方法。
- コントラクトが対応するコンポーネントの事前条件である、請求項11に記載の方法。
- コントラクトが対応するコンポーネントの事後条件である、請求項11に記載の方法。
- ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記特定のコンポーネントの前記実行スコープの外で外部回復コードが実行される、請求項11に記載の方法。
- ランタイムにおいて遭遇した前記特定の述部が真ではない場合、前記特定の述部が真ではないことに応答して回復コードが実行されないように、前記特定のコンポーネントに対してファイストフェイルが実施される、請求項11に記載の方法。
- 前記1または複数のハードウェアプロセッサが、前記1または複数の実行可能バイナリを1または複数のハードウェア記憶装置上に格納することをさらに含む、請求項11に記載の方法。
- 前記複数のコンポーネントの別のコンポーネントに対応する別のコントラクトの別の述部が、前記別のコンポーネントのランタイムにおいて常に真であると判定することと、
前記複数のコンポーネントのための前記実行可能コードを1または複数の実行可能バイナリ内に生成するときに、前記別の述部が前記別のコンポーネントのランタイムにおいて常に真であると判定されたことに基づいて、前記別のコンポーネントのための実行可能コードの第3の部分であって、前記別のコントラクトおよび前記別の述部に対応する実行可能コードがない、実行可能コードの第3の部分を生成することと、をさらに含む、請求項11に記載の方法。 - コンピュータシステムの1または複数のハードウェアプロセッサによって実行され得るコンピュータ実行可能命令を有する1または複数のハードウェア記憶装置を備えたコンピュータプログラム製品であって、前記コンピュータ実行可能命令は、中間言語プログラムコードの静的解析の一環として少なくとも以下の、
前記中間言語プログラムコードにおいて複数のコンポーネントを識別することであって、各コンポーネントは異なる実行スコープを備え、対応するコントラクトを含み、各コントラクトは、前記対応する実行スコープのランタイムにおいて当該コントラクトに遭遇した場合、前記コントラクトの述部が真であるかを、前記対応する実行スコープの以降の実行の条件とする、ことと、
前記複数のコンポーネントの第1のコンポーネントに対応する第1のコントラクトの第1の述部が、前記複数のコンポーネントの前記第1のコンポーネントのランタイムにおいて常に真であると判定することと、
前記複数のコンポーネントの第2のコンポーネントに対応する第2のコントラクトの第2の述部が、前記複数のコンポーネントの前記第2のコンポーネントのランタイムにおいて常に真とは限らないと判定することと、
前記複数のコンポーネントのための実行可能コードを1または複数の実行可能バイナリ内に生成することであって、
前記複数のコンポーネントの前記第1のコンポーネントのための前記実行可能コードを生成するときに、前記第1の述部が前記複数のコンポーネントの第1のコンポーネントのランタイムにおいて常に真であると判定されたことに基づいて、前記第1のコントラクトおよび前記第1の述部に対応する実行可能コードがない、実行可能コードの第1の部分を生成すること、および
前記複数のコンポーネントの前記第2のコンポーネントのための前記実行可能コードを生成するときに、前記複数のコンポーネントの1または複数の他のコンポーネントの第1のセットによって前記第2のコンポーネントが呼び出される場合に、ランタイムにおいて前記第2のコントラクトのチェックを迂回させることができる第1のエントリポイントを有し、前記複数のコンポーネントの1または複数の他のコンポーネントの第2のセットによって前記第2のコンポーネントが呼び出される場合に、ランタイムにおいて前記第2のコントラクトをチェックさせる第2のエントリポイントを有する実行可能コードの第2部分を生成することを含む、ことと、
を実行するよう前記コンピュータシステムを構成する、コンピュータプログラム製品。 - ランタイムにおいて遭遇した前記第2の述部が真ではない場合、前記コンピュータシステムは、前記第2の述部が真ではないことに応答して回復コードが実行されないように、前記複数のコンポーネントの第2のコンポーネントに対してファイストフェイルを実施するよう構成される、請求項19に記載のコンピュータプログラム製品。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/829,561 | 2013-03-14 | ||
US13/829,561 US9286039B2 (en) | 2013-03-14 | 2013-03-14 | Operating system support for contracts |
PCT/US2014/023258 WO2014159373A2 (en) | 2013-03-14 | 2014-03-11 | Operating system support for contracts |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2016511484A JP2016511484A (ja) | 2016-04-14 |
JP2016511484A5 true JP2016511484A5 (ja) | 2017-03-09 |
JP6401235B2 JP6401235B2 (ja) | 2018-10-10 |
Family
ID=50884465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016501182A Active JP6401235B2 (ja) | 2013-03-14 | 2014-03-11 | コントラクトのためのオペレーティングシステムサポート |
Country Status (6)
Country | Link |
---|---|
US (1) | US9286039B2 (ja) |
EP (1) | EP2972828B1 (ja) |
JP (1) | JP6401235B2 (ja) |
KR (1) | KR102118236B1 (ja) |
CN (1) | CN105164642B (ja) |
WO (1) | WO2014159373A2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9841955B2 (en) * | 2016-01-26 | 2017-12-12 | Enterpriseweb Llc | Unified operating system for distributed computing |
US11755382B2 (en) * | 2017-11-03 | 2023-09-12 | Coherent Logix, Incorporated | Programming flow for multi-processor system |
CN107908405A (zh) * | 2017-11-17 | 2018-04-13 | 苏州蜗牛数字科技股份有限公司 | 代码静态审核装置及方法 |
CN110287089B (zh) * | 2019-05-07 | 2023-02-17 | 华东师范大学 | 一种基于中间格式及smt技术的微内核ipc验证方法 |
CN111770206B (zh) * | 2020-08-31 | 2020-12-29 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
CN111768187A (zh) * | 2020-08-31 | 2020-10-13 | 支付宝(杭州)信息技术有限公司 | 一种部署智能合约的方法、区块链节点和存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6601192B1 (en) | 1999-08-31 | 2003-07-29 | Accenture Llp | Assertion component in environment services patterns |
US20030023959A1 (en) * | 2001-02-07 | 2003-01-30 | Park Joseph C.H. | General and efficient method for transforming predicated execution to static speculation |
US7143373B2 (en) | 2004-10-14 | 2006-11-28 | Synopsys, Inc. | Method and apparatus for evaluating and debugging assertions |
JP2006139413A (ja) * | 2004-11-10 | 2006-06-01 | Hitachi Ltd | プログラム、プログラムコードの合理化方法、プログラムコードの生成方法、プログラムコード、及び情報処理装置 |
US7987456B2 (en) * | 2006-01-24 | 2011-07-26 | Microsoft Corporation | Qualitatively annotated code |
US7934207B2 (en) | 2006-12-19 | 2011-04-26 | Microsoft Corporation | Data schemata in programming language contracts |
US8250524B2 (en) * | 2007-12-21 | 2012-08-21 | Microsoft Corporation | Contract programming for code error reduction |
US8782607B2 (en) * | 2009-02-20 | 2014-07-15 | Microsoft Corporation | Contract failure behavior with escalation policy |
US8930913B2 (en) * | 2010-09-28 | 2015-01-06 | Microsoft Corporation | Intermediate representation construction for static analysis |
-
2013
- 2013-03-14 US US13/829,561 patent/US9286039B2/en active Active
-
2014
- 2014-03-11 JP JP2016501182A patent/JP6401235B2/ja active Active
- 2014-03-11 CN CN201480014378.5A patent/CN105164642B/zh active Active
- 2014-03-11 WO PCT/US2014/023258 patent/WO2014159373A2/en active Application Filing
- 2014-03-11 EP EP14727975.6A patent/EP2972828B1/en active Active
- 2014-03-11 KR KR1020157025030A patent/KR102118236B1/ko active IP Right Grant
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2016511484A5 (ja) | ||
Ma et al. | Grt: Program-analysis-guided random testing (t) | |
WO2016036817A4 (en) | Executing graph-based program specifications | |
JP2017516210A5 (ja) | ||
RU2017110787A (ru) | Автоматизированная проверка системы программного обеспечения | |
WO2015200510A8 (en) | Automated code lockdown to reduce attack surface for software | |
JP2016509308A5 (ja) | ||
WO2015195676A3 (en) | Computer-implemented tools and methods for extracting information about the structure of a large computer software system, exploring its structure, discovering problems in its design, and enabling refactoring | |
JP2017527013A5 (ja) | ||
JP2014501412A5 (ja) | ||
RU2014144679A (ru) | Способ и устройство для исполнения объекта на дисплее | |
US20150143179A1 (en) | System and Method for Progressive Fault Injection Testing | |
RU2015142983A (ru) | Принудительное создание события элемента управления | |
JP2012168948A5 (ja) | ||
JP2015537298A5 (ja) | ||
US10318395B2 (en) | Checking a computer processor design for soft error handling | |
JP2013206016A5 (ja) | ||
US9043775B2 (en) | Method for identifying problematic loops in an application and devices thereof | |
EP2975527A3 (en) | A method for tracing computer software | |
WO2015130675A3 (en) | Apparatus and method for testing computer program implementation against a design model | |
RU2018142897A (ru) | Оптимизатор запроса для использования cpu и рефакторинга кода | |
KR102118236B1 (ko) | 컨트랙트에 대한 운영 체제 지원 기법 | |
WO2017053022A8 (en) | Speculative scalarization in vector processing | |
JP2016531335A5 (ja) | ||
JP2017507411A5 (ja) |