Patent ID: 8112597

Claim:
In a computing system comprising one or more computer processors and computer memory for storing data, a method for distinguishing critical data and non-critical data in an application during application runtime, allocating distinct memory for critical data and non-critical data, and protecting stored critical data from unintended changes, the method comprising: determining that a first subset of data in an application is critical data and determining that a second subset of data in the application is normal, non-critical data; during execution of the application, allocating first computer memory as normal memory for the non-critical data using a normal memory allocation such that a normal store operation can change the value of data stored in the normal memory; during execution of the application, allocating second computer memory as critical memory for the critical data by using an operation which designates the critical memory as critical such that a value stored to the critical memory using a critical store operation is preserved and remains unchanged after one or more intervening normal store operations to the critical memory; storing the critical data, during execution of the application, within the allocated critical memory, using the critical_store operation which verifies the store of the data and guarantees the verified stored critical data is visible to future loads of the verified stored critical data; and loading data, during execution of the application, from the critical memory to which the data was stored using a critical_load operation which verifies the load such that the data loaded is guaranteed to be the value last stored using the critical_store operation.