本文整理汇总了Golang中github.com/zxh0/jvm/go/jvmgo/rtda/class.Method.Class方法的典型用法代码示例。如果您正苦于以下问题:Golang Method.Class方法的具体用法?Golang Method.Class怎么用?Golang Method.Class使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/zxh0/jvm/go/jvmgo/rtda/class.Method
的用法示例。
在下文中一共展示了Method.Class方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: InvokeMethod
func (self *Thread) InvokeMethod(method *rtc.Method) {
//self._logInvoke(self.stack.size, method)
currentFrame := self.CurrentFrame()
newFrame := self.NewFrame(method)
self.PushFrame(newFrame)
argSlotsCount := method.ArgSlotCount()
if argSlotsCount > 0 {
_passArgs(currentFrame.operandStack, newFrame.localVars, argSlotsCount)
}
if method.IsSynchronized() {
var monitor *rtc.Monitor
if method.IsStatic() {
classObj := method.Class().JClass()
monitor = classObj.Monitor()
} else {
thisObj := newFrame.LocalVars().GetThis()
monitor = thisObj.Monitor()
}
monitor.Enter(self)
newFrame.SetOnPopAction(func() {
monitor.Exit(self)
})
}
}
示例2: _logInvoke
func (self *Thread) _logInvoke(stackSize uint, method *rtc.Method) {
space := strings.Repeat(" ", int(stackSize))
className := method.Class().Name()
methodName := method.Name()
if method.IsStatic() {
fmt.Printf("[method]%v thread:%p %v.%v()\n", space, self, className, methodName)
} else {
fmt.Printf("[method]%v thread:%p %v#%v()\n", space, self, className, methodName)
}
}