JP6272336B2 - 外部参照がないことを表明する参照属性アノテーション - Google Patents
外部参照がないことを表明する参照属性アノテーション Download PDFInfo
- Publication number
- JP6272336B2 JP6272336B2 JP2015537021A JP2015537021A JP6272336B2 JP 6272336 B2 JP6272336 B2 JP 6272336B2 JP 2015537021 A JP2015537021 A JP 2015537021A JP 2015537021 A JP2015537021 A JP 2015537021A JP 6272336 B2 JP6272336 B2 JP 6272336B2
- Authority
- JP
- Japan
- Prior art keywords
- computer
- object graph
- returned
- component
- immutable
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 description 16
- 230000003068 static effect Effects 0.000 description 12
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 239000011800 void material Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000035772 mutation Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003340 mental effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/288—Entity relationship models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Devices For Executing Special Programs (AREA)
Description
public class MyClass
{
int m_x;
public MyClass()
{
m_x = 0;
}
}
void UsesMutableStatics(writable Statics s) {
// The static variable is just an ordinary writable
// reference. The compiler may plumb it through
// for you, or a developer might do it through
// a series of annotations (either opt-in or opt-out).
s.Type.staticVariable = 42;
}
public class MyClass2
{
int m_x;
string m_y;
immutable MyClass m_z;
public MyClass2(int x, string y, immutable MyClass z)
{
m_x = x;
m_y = y;
m_z = z;
}
}
public class MyClass3
{
int m_x;
string m_y;
readable MyClass m_z;
public MyClass3(int x, string y, readable MyClass z)
{
m_x = x;
m_y = y;
m_z = z;
}
}
public void Run2(immutable MyClass myClass)
{
immutable MyClass3 myClass3 = new MyClass3(5, "five", myClass);
}
public class Counter
{
int m_x;
public Counter()
{
m_x = 0;
}
public writable Counter Increment() readable
{
writable Counter c2 = new Counter();
c2.m_x = m_x + 1;
return c2;
}
public void Test()
{
immutable Counter c = (new Counter()).Increment().Increment().Increment();
}
}
public readable Counter Increment() readable
{
writable Counter c2 = new Counter();
c2.m_x = m_x + 1;
return c2;
}
Claims (10)
- コンピュータ実行可能命令を有するコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令が、コンピューティングシステムの1つまたは複数のプロセッサにより実行されるときに、前記コンピューティングシステムに、アノテーションコンポーネントをメモリ内でインスタンス生成させ、前記アノテーションコンポーネントが、少なくとも、特定のオブジェクトグラフを参照する参照を返す実行可能コンポーネントを評価するように、および、前記実行可能コンポーネントにより返される前記参照をアノテートするように構成され、前記アノテーションコンポーネントが、以下のこと、すなわち、
前記実行可能コンポーネントへの何らかの入力引数が存在するかどうかを決定する動作と、
前記実行可能コンポーネントへの1つまたは複数の入力引数が存在する場合の、各々の入力引数が、イミュータブルであるか、オブジェクトグラフであって、前記オブジェクトグラフ内を指し示す外部ミュータブル参照を有さず、外部オブジェクトを参照する内部的ミュータブル参照を有さない、オブジェクトグラフを表すかのいずれかであるかどうかを決定する動作と、
前記実行可能コンポーネントへの入力引数が存在しないこと、または、各々の入力引数が、イミュータブルであるか、外部ミュータブル参照を有さず、外部オブジェクトを参照する内部的ミュータブル参照を有さない、オブジェクトグラフを表すかのいずれかであることのいずれかである場合の、表明属性を前記返される参照に割り当てる動作であって、前記表明属性が、1)前記返される参照により参照される前記特定のオブジェクトグラフへの外部参照が存在しないこと、および、2)前記オブジェクトグラフの外側のいずれのオブジェクトへも、前記オブジェクトグラフの内部のミュータブル参照が存在しないことを表明する、割り当てる動作と
を実行するように構成される、コンピュータ可読記憶媒体。 - 前記実行可能コンポーネントが入力引数を有さない、請求項1に記載のコンピュータ可読記憶媒体。
- 前記実行可能コンポーネントが少なくとも1つの入力引数を有する、請求項1に記載のコンピュータ可読記憶媒体。
- 前記アノテーションコンポーネントが、前記入力引数が前記表明属性をさらに有すると決定することにより、前記入力引数が、外部ミュータブル参照を有さないオブジェクトグラフを参照すると決定する、請求項3に記載のコンピュータ可読記憶媒体。
- 前記実行可能コンポーネントの前記入力引数の前記表明属性がさらに、前記アノテーションコンポーネントにより割り当てられた、請求項4に記載のコンピュータ可読記憶媒体。
- 前記アノテーションコンポーネントが、前記入力引数のイミュータブルパーミッションを評価することにより、前記入力引数がイミュータブルであると決定する、請求項3に記載のコンピュータ可読記憶媒体。
- 前記アノテーションコンポーネントが、前記入力引数をイミュータブルであるように制約する、前記実行可能コンポーネントの実行コンテキストを評価することにより、前記入力引数がイミュータブルであると決定する、請求項3に記載のコンピュータ可読記憶媒体。
- 前記実行可能コンポーネントが、前記返される参照を、読み込み可能であるように、ただし潜在的には他のエンティティにより書き込み可能でもあるように制約すると宣言され、前記表明属性が、前記返される参照がイミュータブルであることである、請求項1に記載のコンピュータ可読記憶媒体。
- 前記実行可能コンポーネントが、前記返される参照を、読み込み可能であるように制約すると宣言されない、請求項1に記載のコンピュータ可読記憶媒体。
- コンピューティングシステムのアノテーションコンポーネントが、少なくとも、特定のオブジェクトグラフを参照する参照を返す実行可能コンポーネントを評価するための、および、前記実行可能コンポーネントにより返される前記参照をアノテートするための方法であって、
実行可能コンポーネントに対応するコードを評価する動作と、
実行の際に前記実行可能コンポーネントにより返されることになる返される参照を識別する動作と、
前記実行可能コンポーネントへの何らかの入力引数が存在するかどうかを決定する動作と、
前記実行可能コンポーネントへの1つまたは複数の入力引数が存在する場合の、前記入力引数が、イミュータブルであるか、オブジェクトグラフであって、前記オブジェクトグラフ内を指し示す外部ミュータブル参照を有さず、外部オブジェクトを参照する内部的ミュータブル参照を有さない、オブジェクトグラフを表すかのいずれかであるかどうかを決定する動作と、
前記実行可能コンポーネントへの入力引数が存在しないこと、または、各々の入力引数が、イミュータブルであるか、外部ミュータブル参照を有さず、外部オブジェクトを参照する内部的ミュータブル参照を有さない、オブジェクトグラフを表すかのいずれかであることのいずれかである場合の、表明属性を前記返される参照に割り当てる動作であって、前記表明属性が、1)前記返される参照により参照される前記特定のオブジェクトグラフへの外部参照が存在しないこと、および、2)前記オブジェクトグラフの外側のいずれのオブジェクトへも、前記オブジェクトグラフの内部のミュータブル参照が存在しないことを表明する、割り当てる動作と
を含む、方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/652,436 US9971578B2 (en) | 2012-10-15 | 2012-10-15 | Reference attribute annotation signifying no external reference |
US13/652,436 | 2012-10-15 | ||
PCT/US2013/065139 WO2014062739A1 (en) | 2012-10-15 | 2013-10-15 | Reference attribute annotation signifying no external reference |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015531529A JP2015531529A (ja) | 2015-11-02 |
JP6272336B2 true JP6272336B2 (ja) | 2018-01-31 |
Family
ID=49582796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015537021A Active JP6272336B2 (ja) | 2012-10-15 | 2013-10-15 | 外部参照がないことを表明する参照属性アノテーション |
Country Status (6)
Country | Link |
---|---|
US (1) | US9971578B2 (ja) |
EP (1) | EP2907026A1 (ja) |
JP (1) | JP6272336B2 (ja) |
KR (1) | KR102093531B1 (ja) |
CN (1) | CN104718529B (ja) |
WO (1) | WO2014062739A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9026993B2 (en) * | 2008-06-27 | 2015-05-05 | Microsoft Technology Licensing, Llc | Immutable types in imperitive language |
US9569282B2 (en) | 2009-04-24 | 2017-02-14 | Microsoft Technology Licensing, Llc | Concurrent mutation of isolated object graphs |
US9098269B2 (en) | 2013-01-04 | 2015-08-04 | Microsoft Technology Licensing, Llc | System and method to ensure resource access safety with immutable object types |
US10996945B1 (en) * | 2014-09-17 | 2021-05-04 | Amazon Technologies, Inc. | Splitting programs into distributed parts |
US10754644B2 (en) * | 2015-08-04 | 2020-08-25 | International Business Machines Corporation | Annotations in software development |
US11521744B1 (en) | 2019-06-18 | 2022-12-06 | Cigna Intellectual Property, Inc. | Machine learning system for generating predictions according to varied attributes |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721747B2 (en) * | 2000-01-14 | 2004-04-13 | Saba Software, Inc. | Method and apparatus for an information server |
US6925638B1 (en) | 2000-09-21 | 2005-08-02 | International Business Machines Corporation | Mutability analysis in Java |
US6785693B2 (en) * | 2001-02-02 | 2004-08-31 | International Business Machines Corporation | Management of multiple links to a file in a file system |
US7114152B2 (en) | 2002-01-08 | 2006-09-26 | International Business Machines Corporation | Method, apparatus, and program to determine the mutability of an object at loading time |
US7614037B2 (en) * | 2004-05-21 | 2009-11-03 | Microsoft Corporation | Method and system for graph analysis and synchronization |
CN101055518A (zh) | 2007-05-31 | 2007-10-17 | 上海交通大学 | 基于面向对象的智能空间建模方法 |
CN100517224C (zh) | 2007-06-13 | 2009-07-22 | 北京北大方正电子有限公司 | 对象的串行化存储和恢复的系统和方法 |
JP2009129127A (ja) | 2007-11-22 | 2009-06-11 | Fujitsu Ltd | プログラムの不変物抽出処理プログラム,処理装置,および処理方法,ならびに該プログラムを記憶する記憶媒体 |
CN104123239B (zh) | 2008-01-31 | 2017-07-21 | 甲骨文国际公司 | 用于事务缓存的系统和方法 |
US9569282B2 (en) * | 2009-04-24 | 2017-02-14 | Microsoft Technology Licensing, Llc | Concurrent mutation of isolated object graphs |
-
2012
- 2012-10-15 US US13/652,436 patent/US9971578B2/en active Active
-
2013
- 2013-10-15 WO PCT/US2013/065139 patent/WO2014062739A1/en active Application Filing
- 2013-10-15 KR KR1020157009591A patent/KR102093531B1/ko active IP Right Grant
- 2013-10-15 EP EP13789915.9A patent/EP2907026A1/en not_active Ceased
- 2013-10-15 JP JP2015537021A patent/JP6272336B2/ja active Active
- 2013-10-15 CN CN201380053879.XA patent/CN104718529B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN104718529A (zh) | 2015-06-17 |
US9971578B2 (en) | 2018-05-15 |
KR102093531B1 (ko) | 2020-03-25 |
JP2015531529A (ja) | 2015-11-02 |
WO2014062739A1 (en) | 2014-04-24 |
CN104718529B (zh) | 2018-05-15 |
KR20150070152A (ko) | 2015-06-24 |
EP2907026A1 (en) | 2015-08-19 |
US20140108438A1 (en) | 2014-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6272336B2 (ja) | 外部参照がないことを表明する参照属性アノテーション | |
EP3198425B1 (en) | Compiler caching for runtime routine redundancy tracking | |
US20200264866A1 (en) | Caching build graphs | |
EP3084597A1 (en) | Property accesses in dynamically typed programming languages | |
Moyer | Real World Multicore Embedded Systems | |
US20180246916A1 (en) | Scalable object service data and metadata overflow | |
JP6255420B2 (ja) | 不変オブジェクトタイプ | |
US8813258B2 (en) | Selectively exposing base class libraries based on application execution context | |
US11422932B2 (en) | Integrated reference and secondary marking | |
CN103400074A (zh) | 一种隐藏进程的检测方法及装置 | |
CN106598825B (zh) | 电子设备、规范日志代码输出方法及装置 | |
Schmidt et al. | Representation learning for resource usage prediction | |
US10819752B2 (en) | Systems and methods for quantitative assessment of a computer defense technique | |
US9229959B2 (en) | Object graph partial immutability and isolation enforcement | |
Sha et al. | Recent trends and opportunities in domain specific operating systems | |
Zhang et al. | Formulating customized specifications for resource allocation problem of distributed embedded systems | |
Chard et al. | Productive Parallel Programming with Parsl | |
Jacquet et al. | Blackboard rules for coordinating context-aware applications in mobile ad hoc networks | |
De Nicola et al. | Multi labelled transition systems: A semantic framework for nominal calculi | |
Kumar | Efficient execution of fine-grained actors on multicore processors | |
EP3053032A1 (en) | Build-time resolving and type checking references |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150610 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160914 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170726 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170823 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171116 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20171205 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171228 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6272336 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |