X-Git-Url: https://www.bearssl.org/gitweb//home/git/?p=BearSSL;a=blobdiff_plain;f=T0%2FCodeElementJump.cs;h=4dae0bc8c05919396b8ef965ff74521580b213fe;hp=5abd7eb7e42559f3efc8b0996094f9019af47ff6;hb=2893441f2efd4603ddd6d7f49011bdda096a4a87;hpb=3210f38e0491b39aec1ef419cb4114e9483089fb diff --git a/T0/CodeElementJump.cs b/T0/CodeElementJump.cs index 5abd7eb..4dae0bc 100644 --- a/T0/CodeElementJump.cs +++ b/T0/CodeElementJump.cs @@ -34,6 +34,7 @@ class CodeElementJump : CodeElement { this.jumpType = jumpType; } + /* obsolete internal override int Length { get { int len = Encode7EUnsigned(jumpType, null); @@ -46,6 +47,19 @@ class CodeElementJump : CodeElement { return len; } } + */ + + internal override int GetLength(bool oneByteCode) + { + int len = oneByteCode ? 1 : Encode7EUnsigned(jumpType, null); + int joff = JumpOff; + if (joff == Int32.MinValue) { + len ++; + } else { + len += Encode7ESigned(joff, null); + } + return len; + } internal override void SetJumpTarget(CodeElement target) { @@ -63,12 +77,17 @@ class CodeElementJump : CodeElement { } } - internal override int Encode(BlobWriter bw) + internal override int Encode(BlobWriter bw, bool oneByteCode) { if (bw == null) { - return Length; + return GetLength(oneByteCode); + } + int len; + if (oneByteCode) { + len = EncodeOneByte(jumpType, bw); + } else { + len = Encode7EUnsigned(jumpType, bw); } - int len = Encode7EUnsigned(jumpType, bw); int joff = JumpOff; if (joff == Int32.MinValue) { throw new Exception("Unresolved addresses");