当前位置: 首页>>代码示例>>Python>>正文


Python Frame.take_reg方法代码示例

本文整理汇总了Python中frame.Frame.take_reg方法的典型用法代码示例。如果您正苦于以下问题:Python Frame.take_reg方法的具体用法?Python Frame.take_reg怎么用?Python Frame.take_reg使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在frame.Frame的用法示例。


在下文中一共展示了Frame.take_reg方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: __init__

# 需要导入模块: from frame import Frame [as 别名]
# 或者: from frame.Frame import take_reg [as 别名]

#.........这里部分代码省略.........
            self.call(add_property, obj, key, value)

            self.frame.pop()
            self.frame.pop()

        # the object pointers stays on the stack

    def op_function(self, node):
        assert 0

    def op_this(self, nodes):

        @function(c_int)
        def this():
            return self.ctx.this.raw

        self.call(this)
        reg = self.frame.alloc_reg()
        self.assembler.mov(reg, eax)

        self.frame.push('unknown', reg)

    def op_unary_minus(self, node):
        self.compile_node(node[0])

        lhs = self.frame.peek(-1)
        if lhs.is_constant():
            self.frame.pop()
            value = self.rt.sub(boxed_integer(0), lhs.to_boxed_int())
            self.push_boxed_int(value)
        elif lhs.is_int():
            reg = lhs.to_reg()
            self.frame.pop()
            self.frame.take_reg(reg)
            self.assembler.neg(reg)
            self.frame.push('int', reg)
        else:
            @function(c_int, BoxedInt)
            def unary_minus(lhs):
                return self.rt.sub(boxed_integer(0), lhs).value

            self.call(unary_minus, lhs)

            result = self.frame.alloc_reg()
            self.assembler.mov(result, eax)

            self.frame.pop()
            self.frame.push('unknown', result)

    def op_unary_plus(self, node):
        self.compile_node(node[0])

        lhs = self.frame.peek(-1)

        if lhs.is_int() or lhs.is_double():
            return # nothing to do

        if lhs.is_constant():
            self.frame.pop()
            value = self.rt.toNumber(lhs.to_boxed_int())
            self.frame.push_boxed_int(value)
        else:
            reg = lhs.to_reg()
            if lhs.is_bool():
                self.frame.pop()
                self.frame.take_reg(reg)
开发者ID:evilpie,项目名称:python-js-jit,代码行数:70,代码来源:compiler.py


注:本文中的frame.Frame.take_reg方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。