+11
-2
@@ -87,2 +87,3 @@ 'use strict'; | ||
| list.splice(-1 - index, 0, phi); | ||
| phiNode.splitControl(frontier); | ||
| frontier.prepend(phiNode); | ||
@@ -224,6 +225,14 @@ } | ||
| var block = this.pipeline.blocks[i]; | ||
| for (var j = block.nodes.length - 1; j >= 0; j--) { | ||
| // Find offset of the first phi | ||
| for (var j = 0; j < block.nodes.length; j++) { | ||
| var node = block.nodes[j]; | ||
| if (node.opcode !== 'ssa:phi') | ||
| break; | ||
| } | ||
| j--; | ||
| // Phis are inserted at the block start | ||
| for (; j >= 0; j--) { | ||
| var node = block.nodes[j]; | ||
| if (node.opcode !== 'ssa:phi') | ||
@@ -230,0 +239,0 @@ break; |
+2
-2
| { | ||
| "name": "ssa.js", | ||
| "version": "2.0.0", | ||
| "version": "2.0.2", | ||
| "description": "SSA Phi Insertion helper", | ||
@@ -28,3 +28,3 @@ "main": "lib/ssa.js", | ||
| "jshint": "^2.8.0", | ||
| "json-pipeline": "^3.0.0", | ||
| "json-pipeline": "^3.7.0", | ||
| "mocha": "~1.17.0" | ||
@@ -31,0 +31,0 @@ }, |
+87
-51
@@ -15,2 +15,3 @@ var fixtures = require('./fixtures'); | ||
| i6 = add i4, i5 | ||
| i7 = return ^b0, i6 | ||
| } | ||
@@ -24,4 +25,5 @@ } | ||
| i2 = literal 1 | ||
| i4 = literal 2 | ||
| i3 = add i4, i2 | ||
| i3 = literal 2 | ||
| i4 = add i3, i2 | ||
| i5 = return ^b0, i4 | ||
| } | ||
@@ -38,2 +40,3 @@ } | ||
| i3 = ssa:store 0, i2 | ||
| i4 = jump ^b0 | ||
| } | ||
@@ -43,5 +46,6 @@ b0 -> b1 | ||
| b1 { | ||
| i4 = literal 2 | ||
| i5 = ssa:load 0 | ||
| i6 = add i4, i5 | ||
| i5 = literal 2 | ||
| i6 = ssa:load 0 | ||
| i7 = add i5, i6 | ||
| i8 = return ^b1, i7 | ||
| } | ||
@@ -55,2 +59,3 @@ } | ||
| i2 = literal 1 | ||
| i3 = jump ^b0 | ||
| } | ||
@@ -61,3 +66,4 @@ b0 -> b1 | ||
| i4 = literal 2 | ||
| i3 = add i4, i2 | ||
| i5 = add i4, i2 | ||
| i6 = return ^b1, i5 | ||
| } | ||
@@ -70,2 +76,3 @@ } | ||
| b0 { | ||
| i0 = if ^b0 | ||
| } | ||
@@ -75,4 +82,5 @@ b0 -> b1, b2 | ||
| b1 { | ||
| i0 = literal 1 | ||
| i1 = ssa:store 0, i0 | ||
| i1 = literal 1 | ||
| i2 = ssa:store 0, i1 | ||
| i3 = jump ^b1 | ||
| } | ||
@@ -82,4 +90,5 @@ b1 -> b3 | ||
| b2 { | ||
| i2 = literal 2 | ||
| i3 = ssa:store 0, i2 | ||
| i4 = literal 2 | ||
| i5 = ssa:store 0, i4 | ||
| i6 = jump ^b2 | ||
| } | ||
@@ -89,4 +98,4 @@ b2 -> b3 | ||
| b3 { | ||
| i4 = ssa:load 0 | ||
| i5 = return i4 | ||
| i7 = ssa:load 0 | ||
| i8 = return ^b3, i7 | ||
| } | ||
@@ -97,18 +106,18 @@ } | ||
| b0 { | ||
| i0 = if ^b0 | ||
| } | ||
| b0 -> b1, b2 | ||
| b1 { | ||
| i0 = literal 1 | ||
| i1 = literal 1 | ||
| i2 = jump ^b1 | ||
| } | ||
| b1 -> b3 | ||
| b2 { | ||
| i2 = literal 2 | ||
| i3 = literal 2 | ||
| i4 = jump ^b2 | ||
| } | ||
| b2 -> b3 | ||
| b3 { | ||
| i1 = ssa:phi i0, i2 | ||
| i3 = return i1 | ||
| i5 = ssa:phi ^b3, i1, i3 | ||
| i6 = return ^i5, i5 | ||
| } | ||
@@ -134,2 +143,3 @@ } | ||
| i1 = ssa:store 1, i0 | ||
| i2 = if ^b0 | ||
| } | ||
@@ -139,2 +149,3 @@ b0 -> b1, b5 | ||
| b1 { | ||
| i3 = if ^b1 | ||
| } | ||
@@ -144,4 +155,5 @@ b1 -> b2, b3 | ||
| b2 { | ||
| i2 = literal 1 | ||
| i3 = ssa:store 0, i2 | ||
| i4 = literal 1 | ||
| i5 = ssa:store 0, i4 | ||
| i6 = jump ^b2 | ||
| } | ||
@@ -151,4 +163,5 @@ b2 -> b4 | ||
| b3 { | ||
| i4 = literal 2 | ||
| i5 = ssa:store 0, i4 | ||
| i7 = literal 2 | ||
| i8 = ssa:store 0, i7 | ||
| i9 = jump ^b3 | ||
| } | ||
@@ -158,2 +171,3 @@ b3 -> b4 | ||
| b4 { | ||
| i10 = jump ^b4 | ||
| } | ||
@@ -163,2 +177,3 @@ b4 -> b9 | ||
| b5 { | ||
| i11 = jump ^b5 | ||
| } | ||
@@ -168,4 +183,5 @@ b5 -> b6, b7 | ||
| b6 { | ||
| i6 = literal 3 | ||
| i7 = ssa:store 0, i6 | ||
| i12 = literal 3 | ||
| i13 = ssa:store 0, i12 | ||
| i14 = jump ^b6 | ||
| } | ||
@@ -175,4 +191,5 @@ b6 -> b8 | ||
| b7 { | ||
| i8 = literal 4 | ||
| i9 = ssa:store 0, i8 | ||
| i15 = literal 4 | ||
| i16 = ssa:store 0, i15 | ||
| i17 = jump ^b7 | ||
| } | ||
@@ -182,2 +199,3 @@ b7 -> b8 | ||
| b8 { | ||
| i18 = jump ^b8 | ||
| } | ||
@@ -187,5 +205,6 @@ b8 -> b9 | ||
| b9 { | ||
| i10 = ssa:load 0 | ||
| i11 = ssa:load 1 | ||
| i12 = add i10, i11 | ||
| i19 = ssa:load 0 | ||
| i20 = ssa:load 1 | ||
| i21 = add i19, i20 | ||
| i22 = return ^b9, i21 | ||
| } | ||
@@ -197,37 +216,47 @@ } | ||
| i0 = literal "pass-through" | ||
| i1 = if ^b0 | ||
| } | ||
| b0 -> b1, b5 | ||
| b1 { | ||
| i2 = if ^b1 | ||
| } | ||
| b1 -> b2, b3 | ||
| b2 { | ||
| i2 = literal 1 | ||
| i3 = literal 1 | ||
| i4 = jump ^b2 | ||
| } | ||
| b2 -> b4 | ||
| b3 { | ||
| i4 = literal 2 | ||
| i5 = literal 2 | ||
| i6 = jump ^b3 | ||
| } | ||
| b3 -> b4 | ||
| b4 { | ||
| i13 = ssa:phi i2, i4 | ||
| i7 = ssa:phi ^b4, i3, i5 | ||
| i8 = jump ^i7 | ||
| } | ||
| b4 -> b9 | ||
| b5 { | ||
| i9 = jump ^b5 | ||
| } | ||
| b5 -> b6, b7 | ||
| b6 { | ||
| i6 = literal 3 | ||
| i10 = literal 3 | ||
| i11 = jump ^b6 | ||
| } | ||
| b6 -> b8 | ||
| b7 { | ||
| i8 = literal 4 | ||
| i12 = literal 4 | ||
| i13 = jump ^b7 | ||
| } | ||
| b7 -> b8 | ||
| b8 { | ||
| i3 = ssa:phi i6, i8 | ||
| i14 = ssa:phi ^b8, i10, i12 | ||
| i15 = jump ^i14 | ||
| } | ||
| b8 -> b9 | ||
| b9 { | ||
| i9 = ssa:phi i13, i3 | ||
| i12 = add i9, i0 | ||
| i16 = ssa:phi ^b9, i7, i14 | ||
| i17 = add i16, i0 | ||
| i18 = return ^i16, i17 | ||
| } | ||
@@ -240,2 +269,3 @@ } | ||
| b0 { | ||
| i0 = jump ^b0 | ||
| } | ||
@@ -245,2 +275,3 @@ b0 -> b1 | ||
| b1 { | ||
| i1 = if ^b1 | ||
| } | ||
@@ -250,5 +281,6 @@ b1 -> b2, b3 | ||
| b2 { | ||
| i0 = literal 1 | ||
| i1 = ssa:store 0, i0 | ||
| i2 = ssa:load 0 | ||
| i2 = literal 1 | ||
| i3 = ssa:store 0, i2 | ||
| i4 = ssa:load 0 | ||
| i5 = jump ^b2 | ||
| } | ||
@@ -258,2 +290,4 @@ b2 -> b1 | ||
| b3 { | ||
| i6 = literal 0 | ||
| i7 = return ^b3, i6 | ||
| } | ||
@@ -264,15 +298,17 @@ } | ||
| b0 { | ||
| i0 = jump ^b0 | ||
| } | ||
| b0 -> b1 | ||
| b1 { | ||
| i1 = if ^b1 | ||
| } | ||
| b1 -> b2, b3 | ||
| b2 { | ||
| i0 = literal 1 | ||
| i2 = literal 1 | ||
| i3 = jump ^b2 | ||
| } | ||
| b2 -> b1 | ||
| b3 { | ||
| i4 = literal 0 | ||
| i5 = return ^b3, i4 | ||
| } | ||
@@ -303,3 +339,3 @@ } | ||
| i5 = ssa:load 0 | ||
| i6 = return ^b3, i2 | ||
| i6 = return ^b3, i5 | ||
| } | ||
@@ -314,8 +350,8 @@ } | ||
| b1 { | ||
| i3 = ssa:undefined | ||
| i1 = jump ^b1 | ||
| i1 = ssa:undefined | ||
| i2 = jump ^b1 | ||
| } | ||
| b1 -> b3 | ||
| b2 { | ||
| i2 = literal 1 | ||
| i3 = literal 1 | ||
| i4 = jump ^b2 | ||
@@ -325,4 +361,4 @@ } | ||
| b3 { | ||
| i5 = ssa:phi i3, i2 | ||
| i6 = return ^b3, i2 | ||
| i5 = ssa:phi ^b3, i1, i3 | ||
| i6 = return ^i5, i5 | ||
| } | ||
@@ -329,0 +365,0 @@ } |
+1
-0
@@ -22,2 +22,3 @@ var assertText = require('assert-text'); | ||
| p.reindex(); | ||
| assertText.equal(p.render({ cfg: true }, 'printable'), | ||
@@ -24,0 +25,0 @@ fn2str(output)); |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
23250
5.35%545
10.1%