From 85deb145a70130f6bd4d7c707290e4873a3d9591 Mon Sep 17 00:00:00 2001 From: Hamed Gorjiara Date: Sun, 6 Sep 2020 15:25:45 -0700 Subject: [PATCH] Serialize ID API --- src/SatuneJavaAPI.java | 1 + src/ccsolver.cc | 3 +++ src/ccsolver.h | 1 + src/csolver.cc | 10 +++++++--- src/csolver.h | 1 + src/satune_SatuneJavaAPI.cc | 11 +++++++++++ src/satune_SatuneJavaAPI.h | 8 ++++++++ 7 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/SatuneJavaAPI.java b/src/SatuneJavaAPI.java index a5e71d3..086b0c7 100644 --- a/src/SatuneJavaAPI.java +++ b/src/SatuneJavaAPI.java @@ -87,6 +87,7 @@ public class SatuneJavaAPI{ private native void printConstraints(long solver); private native void turnoffOptimizations(long solver); private native void serialize(long solver); + private native void serializeID(long solver, long id); private native void mustHaveValue(long solver, long element); private native void setInterpreter(long solver, int type); private native long clone(long solver); diff --git a/src/ccsolver.cc b/src/ccsolver.cc index a1dd758..f62ac25 100644 --- a/src/ccsolver.cc +++ b/src/ccsolver.cc @@ -182,6 +182,9 @@ void turnoffOptimizations(void *solver) { CCSOLVER(solver)->turnoffOptimizations(); } +void serializeID(void *solver, long id) { + CCSOLVER(solver)->serializeID(id); +} void serialize(void *solver) { CCSOLVER(solver)->serialize(); diff --git a/src/ccsolver.h b/src/ccsolver.h index 638527c..5f12b62 100644 --- a/src/ccsolver.h +++ b/src/ccsolver.h @@ -48,6 +48,7 @@ int getBooleanValue(void *solver,void *boolean); int getOrderConstraintValue(void *solver,void *order, long first, long second); void printConstraints(void *solver); void turnoffOptimizations(void *solver); +void serializeID(void *solver, long id); void serialize(void *solver); void mustHaveValue(void *solver, void *element); void setInterpreter(void *solver, unsigned int type); diff --git a/src/csolver.cc b/src/csolver.cc index 448fb9a..0900a0b 100644 --- a/src/csolver.cc +++ b/src/csolver.cc @@ -174,11 +174,10 @@ CSolver *CSolver::deserialize(const char *file, InterpreterType itype) { return deserializer.deserialize(); } -void CSolver::serialize() { +void CSolver::serializeID(long long id) { model_print("serializing ...\n"); char buffer[255]; - long long nanotime = getTimeNano(); - int numchars = sprintf(buffer, "DUMP%llu", nanotime); + int numchars = sprintf(buffer, "%llu.dump", id); Serializer serializer(buffer); SetIteratorBooleanEdge *it = getConstraints(); while (it->hasNext()) { @@ -188,6 +187,11 @@ void CSolver::serialize() { delete it; } +void CSolver::serialize() { + long long nanotime = getTimeNano(); + serializeID(nanotime); +} + Set *CSolver::createSet(VarType type, uint64_t *elements, uint numelements) { Set *set = new Set(type, elements, numelements); allSets.push(set); diff --git a/src/csolver.h b/src/csolver.h index 5ef235d..3be4a30 100644 --- a/src/csolver.h +++ b/src/csolver.h @@ -177,6 +177,7 @@ public: void replaceBooleanWithFalse(BooleanEdge bexpr); void replaceBooleanWithBoolean(BooleanEdge oldb, BooleanEdge newb); CSolver *clone(); + void serializeID(long long id); void serialize(); static CSolver *deserialize(const char *file, InterpreterType itype = SATUNE); void autoTune(uint budget); diff --git a/src/satune_SatuneJavaAPI.cc b/src/satune_SatuneJavaAPI.cc index 0a7d672..e9f7d06 100644 --- a/src/satune_SatuneJavaAPI.cc +++ b/src/satune_SatuneJavaAPI.cc @@ -468,6 +468,17 @@ JNIEXPORT void JNICALL Java_satune_SatuneJavaAPI_turnoffOptimizations turnoffOptimizations((void *)solver); } +/* + * Class: SatuneJavaAPI + * Method: serialize + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_satune_SatuneJavaAPI_serializeID + (JNIEnv *env, jobject obj, jlong solver, jlong id) +{ + serializeID((void *)solver, id); +} + /* * Class: SatuneJavaAPI * Method: serialize diff --git a/src/satune_SatuneJavaAPI.h b/src/satune_SatuneJavaAPI.h index 0a0b6e5..845719e 100644 --- a/src/satune_SatuneJavaAPI.h +++ b/src/satune_SatuneJavaAPI.h @@ -345,6 +345,14 @@ JNIEXPORT void JNICALL Java_satune_SatuneJavaAPI_turnoffOptimizations JNIEXPORT void JNICALL Java_satune_SatuneJavaAPI_serialize (JNIEnv *, jobject, jlong); +/* + * Class: satune_SatuneJavaAPI + * Method: serialize + * Signature: (J)V + */ +JNIEXPORT void JNICALL Java_satune_SatuneJavaAPI_serializeID + (JNIEnv *, jobject, jlong, jlong); + /* * Class: satune_SatuneJavaAPI * Method: mustHaveValue -- 2.34.1