From cff5bbb8d33c99f08b45b4cbf2067a35197b66c0 Mon Sep 17 00:00:00 2001 From: Koushik Sen Date: Fri, 7 Feb 2014 16:43:06 -0800 Subject: [PATCH] partly fixing #43 --- jout/production/jalangijava/AndFormula.class | Bin 654 -> 654 bytes .../production/jalangijava/FalseFormula.class | Bin 329 -> 329 bytes jout/production/jalangijava/Formula.class | Bin 172 -> 172 bytes jout/production/jalangijava/OrFormula.class | Bin 652 -> 652 bytes .../jalangijava/RegexpEncoder.class | Bin 3340 -> 3344 bytes jout/production/jalangijava/RelConstant.class | Bin 746 -> 746 bytes jout/production/jalangijava/TrueFormula.class | Bin 327 -> 327 bytes scripts/histogram.py | 7 ++++--- src/js/analysis.js | 18 +++++++++++++++--- tests/unit/proto_prop_lookup.js | 14 ++++++++++++++ 10 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 tests/unit/proto_prop_lookup.js diff --git a/jout/production/jalangijava/AndFormula.class b/jout/production/jalangijava/AndFormula.class index 24bd65fafd00e236943fb7cd287cc3e46ba9a6d9..40f74b5cb6f09416947e1af27c0cb03de858952f 100644 GIT binary patch delta 17 YcmeBU?PKLQ^>5cc1_lP>jT~)E06Gi>;{X5v delta 17 YcmeBU?PKLQ^>5cc1_lPBjT~)E06GT+;s5{u diff --git a/jout/production/jalangijava/FalseFormula.class b/jout/production/jalangijava/FalseFormula.class index d748951c2b9239073578dbb3972bb4d545247a75..1fbf357b128f82c65f671ccdedfcf93436b164a2 100644 GIT binary patch delta 17 ZcmX@fbdrhV)W2Q(7#J9gH*z>K0sugV1`PlJ delta 17 ZcmX@fbdrhV)W2Q(7#J9gHgY&J0sugQ1`GfI diff --git a/jout/production/jalangijava/Formula.class b/jout/production/jalangijava/Formula.class index da1782544905ec3bf3e0d0d3e866eddbe2043802..e6bdd21e624cb4a01527616dcafcfc08d8f89d40 100644 GIT binary patch delta 16 YcmZ3(xQ3DA)W2Q(7#J9gCvq$S055cc1_lP>jT|jZ06EA7-2eap delta 17 YcmeBS?P29O^>5cc1_lPBjT|jZ06D`2+yDRo diff --git a/jout/production/jalangijava/RegexpEncoder.class b/jout/production/jalangijava/RegexpEncoder.class index 8e88df4560dbe18314971af6b66d02eb73bf358b..4357c06b0538c787f4f5b2e9a6d6b9f394be2747 100644 GIT binary patch delta 40 wcmeB?njpn->ff$?3=9m$8#!ihF{W-_$d$s#T*e?fnS&>n*_UDCff$?3=9lL8#!ihF(z(a$d$s#T*M$VnS&>HawX4n0Ol79p8x;= diff --git a/jout/production/jalangijava/RelConstant.class b/jout/production/jalangijava/RelConstant.class index 56ed45644617872448af65da250d5f199888b049..e88a62eb207b951618bf2ffc89e08618c32a1eff 100644 GIT binary patch delta 17 ZcmaFG`ihm~)W2Q(7#J9gH*!2;0suxt2KN8} delta 17 ZcmaFG`ihm~)W2Q(7#J9gHgY^-0suxo2KE2| diff --git a/jout/production/jalangijava/TrueFormula.class b/jout/production/jalangijava/TrueFormula.class index a787f822f1b4b0cc8650ee5fdee0be55d5692762..2878ee87e7a9ad55017076ed8a0db101595d8c3b 100644 GIT binary patch delta 17 ZcmX@kbexIf)W2Q(7#J9gH*(lB0sufm1_uBD delta 17 ZcmX@kbexIf)W2Q(7#J9gHgecA0sufh1_l5C diff --git a/scripts/histogram.py b/scripts/histogram.py index ba99c8cb..ca4ed35b 100644 --- a/scripts/histogram.py +++ b/scripts/histogram.py @@ -12,10 +12,11 @@ iids = {} for line in ins: record = json.loads(line) - if record[2] in iids: - iids[record[2]] = iids[record[2]] + 1 + key = str(record[2])+":"+str(record[4]) + if key in iids: + iids[key] = iids[key] + 1 else: - iids[record[2]] = 1 + iids[key] = 1 count = count + 1 ins.close() stats = sorted(iids.iteritems(), key=operator.itemgetter(1), reverse=True) diff --git a/src/js/analysis.js b/src/js/analysis.js index 9702b995..a4f04069 100755 --- a/src/js/analysis.js +++ b/src/js/analysis.js @@ -1225,7 +1225,12 @@ } } } - val[SPECIAL_PROP] = {}; + if (val.__proto__ && val.__proto__[SPECIAL_PROP]) + val[SPECIAL_PROP] = Object.create(val.__proto__[SPECIAL_PROP]); + else + val[SPECIAL_PROP] = {}; + +// val[SPECIAL_PROP] = Object.create(val[SPECIAL_PROP]); val[SPECIAL_PROP][SPECIAL_PROP] = objectId; // console.log("oid:"+objectId); objectId = objectId + 2; @@ -1286,7 +1291,11 @@ writable:true }); } - val[SPECIAL_PROP] = {}; + if (val.__proto__ && val.__proto__[SPECIAL_PROP]) + val[SPECIAL_PROP] = Object.create(val.__proto__[SPECIAL_PROP]); + else + val[SPECIAL_PROP] = {}; + //val[SPECIAL_PROP] = Object.create(val[SPECIAL_PROP]); val[SPECIAL_PROP][SPECIAL_PROP] = id = literalId; literalId = literalId + 2; // changes due to getter or setter method @@ -1352,7 +1361,10 @@ writable:true }); } - obj[SPECIAL_PROP] = {}; + if (obj.__proto__ && obj.__proto__[SPECIAL_PROP]) + obj[SPECIAL_PROP] = Object.create(obj.__proto__[SPECIAL_PROP]); + else + obj[SPECIAL_PROP] = {}; obj[SPECIAL_PROP][SPECIAL_PROP] = recordedValue; objectMap[recordedValue] = ((obj === replayValue) ? oldReplayValue : obj); } diff --git a/tests/unit/proto_prop_lookup.js b/tests/unit/proto_prop_lookup.js new file mode 100644 index 00000000..b4bcc0a9 --- /dev/null +++ b/tests/unit/proto_prop_lookup.js @@ -0,0 +1,14 @@ +function C() { + this.x = 1; +} + +C.prototype.foo = function () { + this.x = 2; +} + +var o = new C(); +o.foo(); +o.foo(); +o.foo(); +o.foo(); +o.foo();