Метод | Описание | |
---|---|---|
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"
|
Метод | Описание | |
---|---|---|
EnsureWriter ( ) : void | ||
GetFileName ( ISourceLineInfo sourceInfo ) : string | ||
MarkSequencePoint ( ISourceLineInfo sourceInfo ) : void | ||
TraceCall ( OpCode opcode, MethodInfo meth ) : void |
public AddSortKey ( XmlQueryType keyType ) : void | ||
keyType | XmlQueryType | |
Результат | void |
public BranchAndMark ( |
||
lblBranch | ||
lblMark | ||
Результат | void |
public Call ( |
||
meth | ||
Результат | void |
public CallArithmeticOp ( QilNodeType opType, XmlTypeCode code ) : void | ||
opType | QilNodeType | |
code | XmlTypeCode | |
Результат | void |
public CallCacheCount ( |
||
itemStorageType | ||
Результат | void |
public CallCacheItem ( |
||
itemStorageType | ||
Результат | void |
public CallCompare ( XmlTypeCode code ) : void | ||
code | XmlTypeCode | |
Результат | void |
public CallCompareEquals ( XmlTypeCode code ) : void | ||
code | XmlTypeCode | |
Результат | void |
public CallConcatStrings ( int cStrings ) : void | ||
cStrings | int | |
Результат | void |
public CallEndSequenceConstruction ( ) : void | ||
Результат | void |
public CallGetAtomizedName ( int idxName ) : void | ||
idxName | int | |
Результат | void |
public CallGetCollation ( int idxName ) : void | ||
idxName | int | |
Результат | void |
public CallGetEarlyBoundObject ( int idxObj, |
||
idxObj | int | |
clrType | ||
Результат | void |
public CallGetGlobalValue ( int idxValue, |
||
idxValue | int | |
clrType | ||
Результат | void |
public CallGetNameFilter ( int idxFilter ) : void | ||
idxFilter | int | |
Результат | void |
public CallGetParameter ( string localName, string namespaceUri ) : void | ||
localName | string | |
namespaceUri | string | |
Результат | void |
public CallGetTypeFilter ( XPathNodeType nodeType ) : void | ||
nodeType | XPathNodeType | |
Результат | void |
public CallParseTagName ( GenerateNameType nameType ) : void | ||
nameType | GenerateNameType | |
Результат | void |
public CallSetGlobalValue ( |
||
clrType | ||
Результат | void |
public CallStartRtfConstruction ( string baseUri ) : void | ||
baseUri | string | |
Результат | void |
public CallStartSequenceConstruction ( ) : void | ||
Результат | void |
public CallStartTree ( XPathNodeType rootType ) : void | ||
rootType | XPathNodeType | |
Результат | void |
public CallToken ( |
||
meth | ||
Результат | void |
public CallValueAs ( |
||
clrType | ||
Результат | void |
public CallWriteEndAttribute ( bool callChk ) : void | ||
callChk | bool | |
Результат | void |
public CallWriteEndElement ( GenerateNameType nameType, bool callChk ) : void | ||
nameType | GenerateNameType | |
callChk | bool | |
Результат | void |
public CallWriteNamespaceDecl ( bool callChk ) : void | ||
callChk | bool | |
Результат | void |
public CallWriteStartAttribute ( GenerateNameType nameType, bool callChk ) : void | ||
nameType | GenerateNameType | |
callChk | bool | |
Результат | void |
public CallWriteStartElement ( GenerateNameType nameType, bool callChk ) : void | ||
nameType | GenerateNameType | |
callChk | bool | |
Результат | void |
public CallWriteString ( bool disableOutputEscaping, bool callChk ) : void | ||
disableOutputEscaping | bool | |
callChk | bool | |
Результат | void |
public Construct ( ConstructorInfo constr ) : void | ||
constr | ConstructorInfo | |
Результат | void |
public ConstructLiteralDecimal ( decimal dec ) : void | ||
dec | decimal | |
Результат | void |
public ConstructLiteralQName ( string localName, string namespaceName ) : void | ||
localName | string | |
namespaceName | string | |
Результат | void |
public ConvBranchToBool ( Label lblBranch, bool isTrueBranch ) : void | ||
lblBranch | Label | |
isTrueBranch | bool | |
Результат | void |
public DebugSequencePoint ( ISourceLineInfo sourceInfo ) : void | ||
sourceInfo | ISourceLineInfo | |
Результат | void |
public DeclareLocal ( string name, Type type ) : LocalBuilder | ||
name | string | |
type | Type | |
Результат | LocalBuilder |
public Emit ( OpCode opcode, ConstructorInfo constrInfo ) : void | ||
opcode | OpCode | |
constrInfo | ConstructorInfo | |
Результат | void |
public Emit ( OpCode opcode, FieldInfo fldInfo ) : void | ||
opcode | OpCode | |
fldInfo | FieldInfo | |
Результат | void |
public Emit ( OpCode opcode, Label lblVal ) : void | ||
opcode | OpCode | |
lblVal | Label | |
Результат | void |
public Emit ( OpCode opcode, LocalBuilder locBldr ) : void | ||
opcode | OpCode | |
locBldr | LocalBuilder | |
Результат | void |
public Emit ( OpCode opcode, MethodInfo methInfo ) : void | ||
opcode | OpCode | |
methInfo | MethodInfo | |
Результат | void |
public Emit ( OpCode opcode, Type typVal ) : void | ||
opcode | OpCode | |
typVal | Type | |
Результат | void |
public Emit ( OpCode opcode, byte byteVal ) : void | ||
opcode | OpCode | |
byteVal | byte | |
Результат | void |
public Emit ( OpCode opcode, double dblVal ) : void | ||
opcode | OpCode | |
dblVal | double | |
Результат | void |
public Emit ( OpCode opcode, float fltVal ) : void | ||
opcode | OpCode | |
fltVal | float | |
Результат | void |
public Emit ( OpCode opcode, int intVal ) : void | ||
opcode | OpCode | |
intVal | int | |
Результат | void |
public Emit ( OpCode opcode, long longVal ) : void | ||
opcode | OpCode | |
longVal | long | |
Результат | void |
public Emit ( OpCode opcode, sbyte sbyteVal ) : void | ||
opcode | OpCode | |
sbyteVal | sbyte | |
Результат | void |
public Emit ( OpCode opcode, short shrtVal ) : void | ||
opcode | OpCode | |
shrtVal | short | |
Результат | void |
public Emit ( OpCode opcode, string strVal ) : void | ||
opcode | OpCode | |
strVal | string | |
Результат | void |
public EmitUnconditionalBranch ( OpCode opcode, Label lblTarget ) : void | ||
opcode | OpCode | |
lblTarget | Label | |
Результат | void |
public GenerateHelper ( XmlILModule module, bool isDebug ) : System | ||
module | XmlILModule | |
isDebug | bool | |
Результат | System |
public LoadBoolean ( bool boolVal ) : void | ||
boolVal | bool | |
Результат | void |
public LoadParameter ( int paramPos ) : void | ||
paramPos | int | |
Результат | void |
public MethodBegin ( MethodBase methInfo, ISourceLineInfo sourceInfo, bool initWriters ) : void | ||
methInfo | MethodBase | |
sourceInfo | ISourceLineInfo | |
initWriters | bool | |
Результат | void |
public SetParameter ( object paramId ) : void | ||
paramId | object | |
Результат | void |
public TailCall ( MethodInfo meth ) : void | ||
meth | MethodInfo | |
Результат | void |
public TestAndBranch ( int i4, Label lblBranch, OpCode opcodeBranch ) : void | ||
i4 | int | |
lblBranch | Label | |
opcodeBranch | OpCode | |
Результат | void |
public TreatAs ( Type clrTypeSrc, Type clrTypeDst ) : void | ||
clrTypeSrc | Type | |
clrTypeDst | Type | |
Результат | void |