Method | Description | |
---|---|---|
AddSortKey ( XmlQueryType keyType ) : void | ||
BranchAndMark ( |
Branch to lblBranch and anchor lblMark. If lblBranch = lblMark, then no need to generate a "br" to the next instruction.
|
|
Call ( |
||
CallArithmeticOp ( QilNodeType opType, XmlTypeCode code ) : void | ||
CallCacheCount ( |
||
CallCacheItem ( |
||
CallCompare ( XmlTypeCode code ) : void | ||
CallCompareEquals ( XmlTypeCode code ) : void | ||
CallConcatStrings ( int cStrings ) : void | ||
CallEndRtfConstruction ( ) : void | ||
CallEndSequenceConstruction ( ) : void | ||
CallEndTree ( ) : void | ||
CallGetAtomizedName ( int idxName ) : void | ||
CallGetCollation ( int idxName ) : void | ||
CallGetEarlyBoundObject ( int idxObj, |
||
CallGetGlobalValue ( int idxValue, |
||
CallGetNameFilter ( int idxFilter ) : void | ||
CallGetParameter ( string localName, string namespaceUri ) : void | ||
CallGetTypeFilter ( XPathNodeType nodeType ) : void | ||
CallParseTagName ( GenerateNameType nameType ) : void | ||
CallSetGlobalValue ( |
||
CallStartElementContent ( ) : void | ||
CallStartRtfConstruction ( string baseUri ) : void | ||
CallStartSequenceConstruction ( ) : void | ||
CallStartTree ( XPathNodeType rootType ) : void | ||
CallSyncToNavigator ( ) : void |
Call a static method which attempts to reuse a navigator.
|
|
CallToken ( |
||
CallValueAs ( |
||
CallWriteEndAttribute ( bool callChk ) : void | ||
CallWriteEndComment ( ) : void | ||
CallWriteEndElement ( GenerateNameType nameType, bool callChk ) : void | ||
CallWriteEndPI ( ) : void | ||
CallWriteEndRoot ( ) : void | ||
CallWriteNamespaceDecl ( bool callChk ) : void | ||
CallWriteStartAttribute ( GenerateNameType nameType, bool callChk ) : void | ||
CallWriteStartComment ( ) : void | ||
CallWriteStartElement ( GenerateNameType nameType, bool callChk ) : void | ||
CallWriteStartPI ( ) : void | ||
CallWriteStartRoot ( ) : void | ||
CallWriteString ( bool disableOutputEscaping, bool callChk ) : void | ||
Construct ( ConstructorInfo constr ) : void | ||
ConstructLiteralDecimal ( decimal dec ) : void | ||
ConstructLiteralQName ( string localName, string namespaceName ) : void | ||
ConvBranchToBool ( Label lblBranch, bool isTrueBranch ) : void |
Assume a branch instruction has already been issued. If isTrueBranch is true, then the true path is linked to lblBranch. Otherwise, the false path is linked to lblBranch. Convert this "branching" boolean logic into an explicit push of 1 or 0 onto the stack.
|
|
DebugEndScope ( ) : void |
End a new debugging scope.
|
|
DebugSequencePoint ( ISourceLineInfo sourceInfo ) : void |
Correlate the current IL generation position with the current source position.
|
|
DebugStartScope ( ) : void |
Begin a new variable debugging scope.
|
|
DeclareLocal ( string name, Type type ) : LocalBuilder |
Generate a new local variable. Add a numeric suffix to name that ensures that all local variable names will be unique (for readability).
|
|
DefineLabel ( ) : Label | ||
Emit ( OpCode opcode ) : void | ||
Emit ( OpCode opcode, ConstructorInfo constrInfo ) : void | ||
Emit ( OpCode opcode, FieldInfo fldInfo ) : void | ||
Emit ( OpCode opcode, Label lblVal ) : void | ||
Emit ( OpCode opcode, LocalBuilder locBldr ) : void | ||
Emit ( OpCode opcode, MethodInfo methInfo ) : void | ||
Emit ( OpCode opcode, Type typVal ) : void | ||
Emit ( OpCode opcode, byte byteVal ) : void | ||
Emit ( OpCode opcode, double dblVal ) : void | ||
Emit ( OpCode opcode, float fltVal ) : void | ||
Emit ( OpCode opcode, int intVal ) : void | ||
Emit ( OpCode opcode, long longVal ) : void | ||
Emit ( OpCode opcode, sbyte sbyteVal ) : void | ||
Emit ( OpCode opcode, short shrtVal ) : void | ||
Emit ( OpCode opcode, string strVal ) : void | ||
EmitUnconditionalBranch ( OpCode opcode, Label lblTarget ) : void |
Unconditional branch opcodes (OpCode.Br, OpCode.Br_S) can lead to unverifiable code in the following cases: # DEAD CODE CASE ldc_i4 1 # Stack depth == 1 br Label2 Label1: nop # Dead code, so IL rules assume stack depth == 0. This causes a verification error, # since next instruction has depth == 1 Label2: pop # Stack depth == 1 ret # LATE BRANCH CASE ldc_i4 1 # Stack depth == 1 br Label2 Label1: nop # Not dead code, but since branch comes from below, IL rules assume stack depth = 0. # This causes a verification error, since next instruction has depth == 1 Label2: pop # Stack depth == 1 ret Label3: br Label1 # Stack depth == 1 This method works around the above limitations by using Brtrue or Brfalse in the following way: ldc_i4 1 # Since this test is always true, this is a way of creating a path to the code that brtrue Label # follows the brtrue instruction. ldc_i4 1 # Since this test is always false, this is a way of creating a path to the code that brfalse Label # starts at Label. 1. If opcode == Brtrue or Brtrue_S, then 1 will be pushed and brtrue instruction will be generated. 2. If opcode == Brfalse or Brfalse_S, then 1 will be pushed and brfalse instruction will be generated. 3. If opcode == Br or Br_S, then a br instruction will be generated.
|
|
GenerateHelper ( XmlILModule module, bool isDebug ) : System |
Cache metadata used during code-generation phase.
|
|
LoadBoolean ( bool boolVal ) : void | ||
LoadInteger ( int intVal ) : void |
Generate the optimal Ldc_I4 instruction based on intVal.
|
|
LoadParameter ( int paramPos ) : void | ||
LoadQueryContext ( ) : void | ||
LoadQueryOutput ( ) : void | ||
LoadQueryRuntime ( ) : void | ||
LoadType ( Type clrTyp ) : void | ||
LoadXsltLibrary ( ) : void | ||
MarkLabel ( Label lbl ) : void | ||
MethodBegin ( MethodBase methInfo, ISourceLineInfo sourceInfo, bool initWriters ) : void |
Begin generating code within a new method.
|
|
MethodEnd ( ) : void |
Generate "ret" instruction and branch fixup jump table.
|
|
SetParameter ( object paramId ) : void | ||
TailCall ( MethodInfo meth ) : void | ||
TestAndBranch ( int i4, Label lblBranch, OpCode opcodeBranch ) : void |
Compare the top value on the stack with the specified i4 using the specified relational comparison opcode, and branch to lblBranch if the result is true.
|
|
TreatAs ( Type clrTypeSrc, Type clrTypeDst ) : void |
Assume that an object reference is on the IL stack. Change the static Clr type from "clrTypeSrc" to "clrTypeDst"
|
Method | Description | |
---|---|---|
EnsureWriter ( ) : void | ||
GetFileName ( ISourceLineInfo sourceInfo ) : string | ||
MarkSequencePoint ( ISourceLineInfo sourceInfo ) : void | ||
TraceCall ( OpCode opcode, MethodInfo meth ) : void |
public AddSortKey ( XmlQueryType keyType ) : void | ||
keyType | XmlQueryType | |
return | void |
public BranchAndMark ( |
||
lblBranch | ||
lblMark | ||
return | void |
public Call ( |
||
meth | ||
return | void |
public CallArithmeticOp ( QilNodeType opType, XmlTypeCode code ) : void | ||
opType | QilNodeType | |
code | XmlTypeCode | |
return | void |
public CallCacheCount ( |
||
itemStorageType | ||
return | void |
public CallCacheItem ( |
||
itemStorageType | ||
return | void |
public CallCompare ( XmlTypeCode code ) : void | ||
code | XmlTypeCode | |
return | void |
public CallCompareEquals ( XmlTypeCode code ) : void | ||
code | XmlTypeCode | |
return | void |
public CallConcatStrings ( int cStrings ) : void | ||
cStrings | int | |
return | void |
public CallEndSequenceConstruction ( ) : void | ||
return | void |
public CallGetAtomizedName ( int idxName ) : void | ||
idxName | int | |
return | void |
public CallGetCollation ( int idxName ) : void | ||
idxName | int | |
return | void |
public CallGetEarlyBoundObject ( int idxObj, |
||
idxObj | int | |
clrType | ||
return | void |
public CallGetGlobalValue ( int idxValue, |
||
idxValue | int | |
clrType | ||
return | void |
public CallGetNameFilter ( int idxFilter ) : void | ||
idxFilter | int | |
return | void |
public CallGetParameter ( string localName, string namespaceUri ) : void | ||
localName | string | |
namespaceUri | string | |
return | void |
public CallGetTypeFilter ( XPathNodeType nodeType ) : void | ||
nodeType | XPathNodeType | |
return | void |
public CallParseTagName ( GenerateNameType nameType ) : void | ||
nameType | GenerateNameType | |
return | void |
public CallSetGlobalValue ( |
||
clrType | ||
return | void |
public CallStartRtfConstruction ( string baseUri ) : void | ||
baseUri | string | |
return | void |
public CallStartSequenceConstruction ( ) : void | ||
return | void |
public CallStartTree ( XPathNodeType rootType ) : void | ||
rootType | XPathNodeType | |
return | void |
public CallToken ( |
||
meth | ||
return | void |
public CallValueAs ( |
||
clrType | ||
return | void |
public CallWriteEndAttribute ( bool callChk ) : void | ||
callChk | bool | |
return | void |
public CallWriteEndElement ( GenerateNameType nameType, bool callChk ) : void | ||
nameType | GenerateNameType | |
callChk | bool | |
return | void |
public CallWriteNamespaceDecl ( bool callChk ) : void | ||
callChk | bool | |
return | void |
public CallWriteStartAttribute ( GenerateNameType nameType, bool callChk ) : void | ||
nameType | GenerateNameType | |
callChk | bool | |
return | void |
public CallWriteStartElement ( GenerateNameType nameType, bool callChk ) : void | ||
nameType | GenerateNameType | |
callChk | bool | |
return | void |
public CallWriteString ( bool disableOutputEscaping, bool callChk ) : void | ||
disableOutputEscaping | bool | |
callChk | bool | |
return | void |
public Construct ( ConstructorInfo constr ) : void | ||
constr | ConstructorInfo | |
return | void |
public ConstructLiteralDecimal ( decimal dec ) : void | ||
dec | decimal | |
return | void |
public ConstructLiteralQName ( string localName, string namespaceName ) : void | ||
localName | string | |
namespaceName | string | |
return | void |
public ConvBranchToBool ( Label lblBranch, bool isTrueBranch ) : void | ||
lblBranch | Label | |
isTrueBranch | bool | |
return | void |
public DebugSequencePoint ( ISourceLineInfo sourceInfo ) : void | ||
sourceInfo | ISourceLineInfo | |
return | void |
public DeclareLocal ( string name, Type type ) : LocalBuilder | ||
name | string | |
type | Type | |
return | LocalBuilder |
public Emit ( OpCode opcode, ConstructorInfo constrInfo ) : void | ||
opcode | OpCode | |
constrInfo | ConstructorInfo | |
return | void |
public Emit ( OpCode opcode, FieldInfo fldInfo ) : void | ||
opcode | OpCode | |
fldInfo | FieldInfo | |
return | void |
public Emit ( OpCode opcode, Label lblVal ) : void | ||
opcode | OpCode | |
lblVal | Label | |
return | void |
public Emit ( OpCode opcode, LocalBuilder locBldr ) : void | ||
opcode | OpCode | |
locBldr | LocalBuilder | |
return | void |
public Emit ( OpCode opcode, MethodInfo methInfo ) : void | ||
opcode | OpCode | |
methInfo | MethodInfo | |
return | void |
public Emit ( OpCode opcode, Type typVal ) : void | ||
opcode | OpCode | |
typVal | Type | |
return | void |
public Emit ( OpCode opcode, byte byteVal ) : void | ||
opcode | OpCode | |
byteVal | byte | |
return | void |
public Emit ( OpCode opcode, double dblVal ) : void | ||
opcode | OpCode | |
dblVal | double | |
return | void |
public Emit ( OpCode opcode, float fltVal ) : void | ||
opcode | OpCode | |
fltVal | float | |
return | void |
public Emit ( OpCode opcode, int intVal ) : void | ||
opcode | OpCode | |
intVal | int | |
return | void |
public Emit ( OpCode opcode, long longVal ) : void | ||
opcode | OpCode | |
longVal | long | |
return | void |
public Emit ( OpCode opcode, sbyte sbyteVal ) : void | ||
opcode | OpCode | |
sbyteVal | sbyte | |
return | void |
public Emit ( OpCode opcode, short shrtVal ) : void | ||
opcode | OpCode | |
shrtVal | short | |
return | void |
public Emit ( OpCode opcode, string strVal ) : void | ||
opcode | OpCode | |
strVal | string | |
return | void |
public EmitUnconditionalBranch ( OpCode opcode, Label lblTarget ) : void | ||
opcode | OpCode | |
lblTarget | Label | |
return | void |
public GenerateHelper ( XmlILModule module, bool isDebug ) : System | ||
module | XmlILModule | |
isDebug | bool | |
return | System |
public MethodBegin ( MethodBase methInfo, ISourceLineInfo sourceInfo, bool initWriters ) : void | ||
methInfo | MethodBase | |
sourceInfo | ISourceLineInfo | |
initWriters | bool | |
return | void |
public SetParameter ( object paramId ) : void | ||
paramId | object | |
return | void |
public TestAndBranch ( int i4, Label lblBranch, OpCode opcodeBranch ) : void | ||
i4 | int | |
lblBranch | Label | |
opcodeBranch | OpCode | |
return | void |
public TreatAs ( Type clrTypeSrc, Type clrTypeDst ) : void | ||
clrTypeSrc | Type | |
clrTypeDst | Type | |
return | void |