edist
[cdsspec-compiler.git] / notes / impl.txt
index 12e364b..ea90727 100644 (file)
   is used for the interface declaration and @Interface_define is for the
   interface definition. This is redundant information, but it makes the
   implementation much easier because we don't need to parse the C/C++ program.
   is used for the interface declaration and @Interface_define is for the
   interface definition. This is redundant information, but it makes the
   implementation much easier because we don't need to parse the C/C++ program.
+
+6. Checking at runtime or check with complete trace analysis can have the
+  follwing concerns. Checking at runtime, HB might not be established yet (we
+  can leave it at trace analysis though). More importantly, we have potential
+  commit point and commit point check, which might be preempted by another
+  commit point. We can't decide whether to execute the commit point actions or
+  not since we can't decide if it's really a commit point at that time. Checking
+  with complete execution can be more clear and better designed, but it has a
+  tough challenge. Some data structure may check their predicate with pointers,
+  however, we can't guarantee those pointers are still valid (the object they
+  are pointing to may be changed or even deleted). To tackle this, we provide an
+  alternative which requires users to define the snapshot function for the
+  pointers if they are about to check with pointers that might change. In the
+  current data structure, it's not a problem because they only return reference
+  or pointers, which we can do simple equality check. We decided to take the
+  trace analysis approach because it's still more flexible and easier to
+  implement.