메소드 |
설명 |
|
AddSortKey ( XmlQueryType keyType ) : void |
|
|
BranchAndMark ( Label lblBranch, Label lblMark ) : void |
Branch to lblBranch and anchor lblMark. If lblBranch = lblMark, then no need to generate a "br" to the next instruction. |
|
Call ( MethodInfo meth ) : void |
|
|
CallArithmeticOp ( QilNodeType opType, XmlTypeCode code ) : void |
|
|
CallCacheCount ( Type itemStorageType ) : void |
|
|
CallCacheItem ( Type itemStorageType ) : void |
|
|
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, Type clrType ) : void |
|
|
CallGetGlobalValue ( int idxValue, Type clrType ) : void |
|
|
CallGetNameFilter ( int idxFilter ) : void |
|
|
CallGetParameter ( string localName, string namespaceUri ) : void |
|
|
CallGetTypeFilter ( XPathNodeType nodeType ) : void |
|
|
CallParseTagName ( GenerateNameType nameType ) : void |
|
|
CallSetGlobalValue ( Type clrType ) : void |
|
|
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 ( MethodInfo meth ) : void |
|
|
CallValueAs ( Type clrType ) : void |
|
|
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" |
|