Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
b3b8a23f
K
kotlin
项目概览
硅谷海盗
/
kotlin
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kotlin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b3b8a23f
编写于
8月 22, 2011
作者:
M
Maxim Shafirov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Get rid of myStack holding intermediate StackValues and use functional style visitor instead.
上级
4571d94c
变更
17
展开全部
隐藏空白更改
内联
并排
Showing
17 changed file
with
258 addition
and
290 deletion
+258
-290
idea/src/org/jetbrains/jet/codegen/ClassContext.java
idea/src/org/jetbrains/jet/codegen/ClassContext.java
+1
-1
idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java
idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java
+202
-225
idea/src/org/jetbrains/jet/codegen/FunctionCodegen.java
idea/src/org/jetbrains/jet/codegen/FunctionCodegen.java
+6
-30
idea/src/org/jetbrains/jet/codegen/StackValue.java
idea/src/org/jetbrains/jet/codegen/StackValue.java
+16
-2
idea/src/org/jetbrains/jet/codegen/intrinsics/ArraySize.java
idea/src/org/jetbrains/jet/codegen/intrinsics/ArraySize.java
+2
-2
idea/src/org/jetbrains/jet/codegen/intrinsics/BinaryOp.java
idea/src/org/jetbrains/jet/codegen/intrinsics/BinaryOp.java
+5
-6
idea/src/org/jetbrains/jet/codegen/intrinsics/Concat.java
idea/src/org/jetbrains/jet/codegen/intrinsics/Concat.java
+9
-7
idea/src/org/jetbrains/jet/codegen/intrinsics/Increment.java
idea/src/org/jetbrains/jet/codegen/intrinsics/Increment.java
+2
-2
idea/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethod.java
...org/jetbrains/jet/codegen/intrinsics/IntrinsicMethod.java
+1
-1
idea/src/org/jetbrains/jet/codegen/intrinsics/Inv.java
idea/src/org/jetbrains/jet/codegen/intrinsics/Inv.java
+2
-2
idea/src/org/jetbrains/jet/codegen/intrinsics/Not.java
idea/src/org/jetbrains/jet/codegen/intrinsics/Not.java
+3
-3
idea/src/org/jetbrains/jet/codegen/intrinsics/NumberCast.java
.../src/org/jetbrains/jet/codegen/intrinsics/NumberCast.java
+2
-2
idea/src/org/jetbrains/jet/codegen/intrinsics/PsiMethodCall.java
...c/org/jetbrains/jet/codegen/intrinsics/PsiMethodCall.java
+2
-2
idea/src/org/jetbrains/jet/codegen/intrinsics/RangeTo.java
idea/src/org/jetbrains/jet/codegen/intrinsics/RangeTo.java
+1
-1
idea/src/org/jetbrains/jet/codegen/intrinsics/TypeInfo.java
idea/src/org/jetbrains/jet/codegen/intrinsics/TypeInfo.java
+1
-1
idea/src/org/jetbrains/jet/codegen/intrinsics/UnaryMinus.java
.../src/org/jetbrains/jet/codegen/intrinsics/UnaryMinus.java
+2
-2
idea/src/org/jetbrains/jet/codegen/intrinsics/ValueTypeInfo.java
...c/org/jetbrains/jet/codegen/intrinsics/ValueTypeInfo.java
+1
-1
未找到文件。
idea/src/org/jetbrains/jet/codegen/ClassContext.java
浏览文件 @
b3b8a23f
...
...
@@ -37,7 +37,7 @@ public class ClassContext {
}
public
StackValue
getThisExpression
()
{
if
(
parentContext
==
null
)
return
null
;
if
(
parentContext
==
null
)
return
StackValue
.
none
()
;
thisWasUsed
=
true
;
if
(
thisExpression
!=
null
)
return
thisExpression
;
...
...
idea/src/org/jetbrains/jet/codegen/ExpressionCodegen.java
浏览文件 @
b3b8a23f
此差异已折叠。
点击以展开。
idea/src/org/jetbrains/jet/codegen/FunctionCodegen.java
浏览文件 @
b3b8a23f
...
...
@@ -3,7 +3,9 @@ package org.jetbrains.jet.codegen;
import
org.jetbrains.jet.lang.descriptors.FunctionDescriptor
;
import
org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor
;
import
org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor
;
import
org.jetbrains.jet.lang.psi.*
;
import
org.jetbrains.jet.lang.psi.JetDeclarationWithBody
;
import
org.jetbrains.jet.lang.psi.JetExpression
;
import
org.jetbrains.jet.lang.psi.JetNamedFunction
;
import
org.jetbrains.jet.lang.resolve.BindingContext
;
import
org.objectweb.asm.ClassVisitor
;
import
org.objectweb.asm.MethodVisitor
;
...
...
@@ -12,7 +14,6 @@ import org.objectweb.asm.Type;
import
org.objectweb.asm.commons.InstructionAdapter
;
import
org.objectweb.asm.commons.Method
;
import
java.util.Collections
;
import
java.util.List
;
/**
...
...
@@ -40,11 +41,10 @@ public class FunctionCodegen {
ClassContext
funContext
=
owner
.
intoFunction
(
functionDescriptor
);
final
JetExpression
bodyExpression
=
f
.
getBodyExpression
();
final
List
<
JetElement
>
bodyExpressions
=
bodyExpression
!=
null
?
Collections
.<
JetElement
>
singletonList
(
bodyExpression
)
:
null
;
generatedMethod
(
bodyExpressions
,
jvmMethod
,
funContext
,
functionDescriptor
.
getValueParameters
(),
functionDescriptor
.
getTypeParameters
());
generatedMethod
(
bodyExpression
,
jvmMethod
,
funContext
,
functionDescriptor
.
getValueParameters
(),
functionDescriptor
.
getTypeParameters
());
}
private
void
generatedMethod
(
List
<
JetElement
>
bodyExpressions
,
private
void
generatedMethod
(
JetExpression
bodyExpressions
,
Method
jvmSignature
,
ClassContext
context
,
List
<
ValueParameterDescriptor
>
paramDescrs
,
...
...
@@ -95,35 +95,11 @@ public class FunctionCodegen {
iv
.
areturn
(
jvmSignature
.
getReturnType
());
}
else
if
(!
isAbstract
)
{
JetElement
last
=
null
;
for
(
JetElement
expression
:
bodyExpressions
)
{
expression
.
accept
(
codegen
);
last
=
expression
;
}
generateReturn
(
mv
,
last
,
codegen
,
jvmSignature
);
codegen
.
returnExpression
(
bodyExpressions
);
}
mv
.
visitMaxs
(
0
,
0
);
mv
.
visitEnd
();
}
}
private
void
generateReturn
(
MethodVisitor
mv
,
JetElement
bodyExpression
,
ExpressionCodegen
codegen
,
Method
jvmSignature
)
{
if
(!
endsWithReturn
(
bodyExpression
))
{
if
(
jvmSignature
.
getReturnType
()
==
Type
.
VOID_TYPE
)
{
mv
.
visitInsn
(
Opcodes
.
RETURN
);
}
else
{
codegen
.
returnTopOfStack
();
}
}
}
private
static
boolean
endsWithReturn
(
JetElement
bodyExpression
)
{
if
(
bodyExpression
instanceof
JetBlockExpression
)
{
final
List
<
JetElement
>
statements
=
((
JetBlockExpression
)
bodyExpression
).
getStatements
();
return
statements
.
size
()
>
0
&&
statements
.
get
(
statements
.
size
()-
1
)
instanceof
JetReturnExpression
;
}
return
bodyExpression
instanceof
JetReturnExpression
;
}
}
idea/src/org/jetbrains/jet/codegen/StackValue.java
浏览文件 @
b3b8a23f
...
...
@@ -48,8 +48,7 @@ public abstract class StackValue {
}
public
static
StackValue
onStack
(
Type
type
)
{
assert
type
!=
Type
.
VOID_TYPE
;
return
new
OnStack
(
type
);
return
type
==
Type
.
VOID_TYPE
?
none
()
:
new
OnStack
(
type
);
}
public
static
StackValue
constant
(
Object
value
,
Type
type
)
{
...
...
@@ -190,6 +189,21 @@ public abstract class StackValue {
v
.
mark
(
end
);
}
public
static
StackValue
none
()
{
return
None
.
INSTANCE
;
}
private
static
class
None
extends
StackValue
{
public
static
None
INSTANCE
=
new
None
();
private
None
()
{
super
(
Type
.
VOID_TYPE
);
}
@Override
public
void
put
(
Type
type
,
InstructionAdapter
v
)
{
}
}
public
static
class
Local
extends
StackValue
{
private
final
int
index
;
...
...
idea/src/org/jetbrains/jet/codegen/intrinsics/ArraySize.java
浏览文件 @
b3b8a23f
...
...
@@ -15,8 +15,8 @@ import java.util.List;
*/
public
class
ArraySize
implements
IntrinsicMethod
{
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
codegen
.
ensureReceiverOnStack
(
element
,
null
,
JetTypeMapper
.
TYPE_OBJECT
);
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
receiver
.
put
(
JetTypeMapper
.
TYPE_OBJECT
,
v
);
v
.
arraylength
();
return
StackValue
.
onStack
(
Type
.
INT_TYPE
);
}
...
...
idea/src/org/jetbrains/jet/codegen/intrinsics/BinaryOp.java
浏览文件 @
b3b8a23f
...
...
@@ -2,7 +2,6 @@ package org.jetbrains.jet.codegen.intrinsics;
import
com.intellij.psi.PsiElement
;
import
org.jetbrains.jet.codegen.ExpressionCodegen
;
import
org.jetbrains.jet.codegen.JetTypeMapper
;
import
org.jetbrains.jet.codegen.StackValue
;
import
org.jetbrains.jet.lang.psi.JetExpression
;
import
org.objectweb.asm.Type
;
...
...
@@ -21,16 +20,16 @@ public class BinaryOp implements IntrinsicMethod {
}
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
if
(
arguments
.
size
()
==
1
)
{
// intrinsic is called as an ordinary function
codegen
.
ensureReceiverOnStack
(
element
,
null
,
expectedType
);
if
(
receiver
!=
null
)
{
receiver
.
put
(
expectedType
,
v
);
}
codegen
.
gen
(
arguments
.
get
(
0
),
expectedType
);
}
else
{
if
(!
haveReceiver
)
{
codegen
.
gen
(
arguments
.
get
(
0
),
expectedType
);
}
codegen
.
gen
(
arguments
.
get
(
0
),
expectedType
);
codegen
.
gen
(
arguments
.
get
(
1
),
expectedType
);
}
v
.
visitInsn
(
expectedType
.
getOpcode
(
opcode
));
...
...
idea/src/org/jetbrains/jet/codegen/intrinsics/Concat.java
浏览文件 @
b3b8a23f
...
...
@@ -14,16 +14,18 @@ import java.util.List;
*/
public
class
Concat
implements
IntrinsicMethod
{
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
codegen
.
generateStringBuilderConstructor
();
if
(
haveReceiver
)
{
v
.
swap
();
codegen
.
invokeAppendMethod
(
codegen
.
expressionType
(
arguments
.
get
(
0
)));
}
else
{
if
(
receiver
==
null
)
{
// LHS.plus(RHS)
v
.
swap
();
// StringBuilder LHS
codegen
.
invokeAppendMethod
(
codegen
.
expressionType
(
arguments
.
get
(
0
)));
// StringBuilder(LHS)
codegen
.
invokeAppend
(
arguments
.
get
(
0
));
}
codegen
.
invokeAppend
(
arguments
.
get
(
1
));
else
{
// LHS + RHS
codegen
.
invokeAppend
(
arguments
.
get
(
0
));
// StringBuilder(LHS)
codegen
.
invokeAppend
(
arguments
.
get
(
1
));
}
v
.
invokevirtual
(
ExpressionCodegen
.
CLASS_STRING_BUILDER
,
"toString"
,
"()Ljava/lang/String;"
);
return
StackValue
.
onStack
(
Type
.
getObjectType
(
"java/lang/String"
));
}
...
...
idea/src/org/jetbrains/jet/codegen/intrinsics/Increment.java
浏览文件 @
b3b8a23f
...
...
@@ -22,7 +22,7 @@ public class Increment implements IntrinsicMethod {
}
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
final
JetExpression
operand
=
arguments
.
get
(
0
);
if
(
operand
instanceof
JetReferenceExpression
)
{
final
int
index
=
codegen
.
indexOfLocal
((
JetReferenceExpression
)
operand
);
...
...
@@ -31,7 +31,7 @@ public class Increment implements IntrinsicMethod {
return
StackValue
.
local
(
index
,
expectedType
);
}
}
StackValue
value
=
codegen
.
gen
erateIntermediateValue
(
operand
);
StackValue
value
=
codegen
.
gen
Qualified
(
receiver
,
operand
);
value
.
dupReceiver
(
v
,
0
);
value
.
put
(
expectedType
,
v
);
if
(
expectedType
==
Type
.
LONG_TYPE
)
{
...
...
idea/src/org/jetbrains/jet/codegen/intrinsics/IntrinsicMethod.java
浏览文件 @
b3b8a23f
...
...
@@ -14,5 +14,5 @@ import java.util.List;
* @author yole
*/
public
interface
IntrinsicMethod
extends
Callable
{
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
);
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
);
}
idea/src/org/jetbrains/jet/codegen/intrinsics/Inv.java
浏览文件 @
b3b8a23f
...
...
@@ -14,8 +14,8 @@ import java.util.List;
*/
public
class
Inv
implements
IntrinsicMethod
{
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
codegen
.
putTopOfStack
(
expectedType
);
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
receiver
.
put
(
expectedType
,
v
);
v
.
aconst
(-
1
);
v
.
xor
(
expectedType
);
return
StackValue
.
onStack
(
expectedType
);
...
...
idea/src/org/jetbrains/jet/codegen/intrinsics/Not.java
浏览文件 @
b3b8a23f
...
...
@@ -14,13 +14,13 @@ import java.util.List;
*/
public
class
Not
implements
IntrinsicMethod
{
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
final
StackValue
stackValue
;
if
(
arguments
.
size
()
==
1
)
{
stackValue
=
codegen
.
gen
erateIntermediateValue
(
arguments
.
get
(
0
));
stackValue
=
codegen
.
gen
(
arguments
.
get
(
0
));
}
else
{
stackValue
=
codegen
.
getReceiverAsStackValue
(
element
,
null
,
expectedType
)
;
stackValue
=
receiver
;
}
return
StackValue
.
not
(
stackValue
);
}
...
...
idea/src/org/jetbrains/jet/codegen/intrinsics/NumberCast.java
浏览文件 @
b3b8a23f
...
...
@@ -14,8 +14,8 @@ import java.util.List;
*/
public
class
NumberCast
implements
IntrinsicMethod
{
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
codegen
.
putTopOfStack
(
expectedType
);
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
receiver
.
put
(
expectedType
,
v
);
return
StackValue
.
onStack
(
expectedType
);
}
}
idea/src/org/jetbrains/jet/codegen/intrinsics/PsiMethodCall.java
浏览文件 @
b3b8a23f
...
...
@@ -24,9 +24,9 @@ public class PsiMethodCall implements IntrinsicMethod {
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
final
CallableMethod
callableMethod
=
codegen
.
getTypeMapper
().
mapToCallableMethod
(
myMethod
);
codegen
.
invokeMethodWithArguments
(
callableMethod
,
(
JetCallExpression
)
element
,
haveR
eceiver
);
codegen
.
invokeMethodWithArguments
(
callableMethod
,
(
JetCallExpression
)
element
,
r
eceiver
);
return
StackValue
.
onStack
(
callableMethod
.
getSignature
().
getReturnType
());
}
}
idea/src/org/jetbrains/jet/codegen/intrinsics/RangeTo.java
浏览文件 @
b3b8a23f
...
...
@@ -21,7 +21,7 @@ public class RangeTo implements IntrinsicMethod {
private
static
final
String
CLASS_INT_RANGE
=
"jet/IntRange"
;
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
JetBinaryExpression
expression
=
(
JetBinaryExpression
)
element
;
final
Type
leftType
=
codegen
.
expressionType
(
expression
.
getLeft
());
if
(
JetTypeMapper
.
isIntPrimitive
(
leftType
))
{
...
...
idea/src/org/jetbrains/jet/codegen/intrinsics/TypeInfo.java
浏览文件 @
b3b8a23f
...
...
@@ -17,7 +17,7 @@ import java.util.List;
*/
public
class
TypeInfo
implements
IntrinsicMethod
{
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
final
List
<
JetTypeProjection
>
typeArguments
=
((
JetCallExpression
)
element
).
getTypeArguments
();
if
(
typeArguments
.
size
()
!=
1
)
{
throw
new
UnsupportedOperationException
(
"one type argument expected"
);
...
...
idea/src/org/jetbrains/jet/codegen/intrinsics/UnaryMinus.java
浏览文件 @
b3b8a23f
...
...
@@ -14,12 +14,12 @@ import java.util.List;
*/
public
class
UnaryMinus
implements
IntrinsicMethod
{
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
if
(
arguments
.
size
()
==
1
)
{
codegen
.
gen
(
arguments
.
get
(
0
),
expectedType
);
}
else
{
codegen
.
ensureReceiverOnStack
(
element
,
null
,
expectedType
);
receiver
.
put
(
expectedType
,
v
);
}
v
.
neg
(
expectedType
);
return
StackValue
.
onStack
(
expectedType
);
...
...
idea/src/org/jetbrains/jet/codegen/intrinsics/ValueTypeInfo.java
浏览文件 @
b3b8a23f
...
...
@@ -15,7 +15,7 @@ import java.util.List;
*/
public
class
ValueTypeInfo
implements
IntrinsicMethod
{
@Override
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
boolean
haveR
eceiver
)
{
public
StackValue
generate
(
ExpressionCodegen
codegen
,
InstructionAdapter
v
,
Type
expectedType
,
PsiElement
element
,
List
<
JetExpression
>
arguments
,
StackValue
r
eceiver
)
{
codegen
.
gen
(
arguments
.
get
(
0
),
JetTypeMapper
.
TYPE_JET_OBJECT
);
v
.
invokeinterface
(
"jet/JetObject"
,
"getTypeInfo"
,
"()Ljet/typeinfo/TypeInfo;"
);
return
StackValue
.
onStack
(
JetTypeMapper
.
TYPE_TYPEINFO
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录