コード例 #1
0
    def build(self, error_handler, check_num_args=True):
        from hippy.objects.resources.file_resource import W_FileResource
        from hippy.objects.resources.dir_resource import W_DirResource
        from hippy.objects.arrayobject import W_ArrayObject

        source = self.make_source(check_num_args)
        d = {
            'fname': self.funcname,
            'argument_not': argument_not,
            'arguments_exactly': arguments_exactly,
            'error_handler': error_handler,
            'warn_exactly': warn_exactly,
            'warn_not_array': warn_not_array,
            'warn_not_file_resource': warn_not_file_resource,
            'warn_not_valid_file_resource': warn_not_valid_file_resource,
            'warn_not_resource': warn_not_resource,
            'warn_not_valid_resource': warn_not_valid_resource,
            'warn_not_stream_context': warn_not_stream_context,
            'warn_not_valid_stream_context': warn_not_valid_stream_context,
            'warn_not_mysql_link': warn_not_mysql_link,
            'warn_not_valid_mysql_link': warn_not_valid_mysql_link,
            'warn_not_mysql_result': warn_not_mysql_result,
            'warn_not_valid_mysql_result': warn_not_valid_mysql_result,
            'warn_not': warn_not,
            'warn_could_not_convert_to_str': warn_could_not_convert_to_str,
            'warn_at_least': warn_at_least,
            'warn_at_most': warn_at_most,
            'warn_not_mcrypt_res': warn_not_mcrypt_res,
            'check_reference': check_reference,
            'unroll_safe': jit.unroll_safe,
            'W_FileResource': W_FileResource,
            'W_DirResource': W_DirResource,
            'W_ArrayObject': W_ArrayObject,
            'W_InstanceObject': W_InstanceObject,
            'FatalError': FatalError,
            'ConvertError': ConvertError,
            'ExitSilently': ExitSilently,
        }

        from hippy.hippyoption import is_optional_extension_enabled
        if is_optional_extension_enabled("mysql"):
            from ext_module.mysql.link_resource import W_MysqlLinkResource
            from ext_module.mysql.result_resource import W_MysqlResultResource
            d['W_MysqlLinkResource'] = W_MysqlLinkResource
            d['W_MysqlResultResource'] = W_MysqlResultResource

        if self.defaults:
            for i, default_value in zip(self.default_indices, self.defaults):
                d['default%s' % i] = default_value
        for i, unwrapper in enumerate(self.signature):
            unwrapper.register_extra_name(d, i)
        try:
            exec py.code.Source(source).compile() in d
        except:
            print source
            raise
        return d[self.internal_funcname]
コード例 #2
0
def target(driver, args):
    driver.exe_name = 'hippy-c'
    config = driver.config

    from rpython.config.config import to_optparse, SUPPRESS_USAGE
    parser = to_optparse(config, parserkwargs={'usage': SUPPRESS_USAGE })
    parser.parse_args(args)


    from hippy.hippyoption import (
        OPTIONAL_EXTS, is_optional_extension_enabled, HippyOptionError)

    from hippy.hippyoption import set_options
    set_options(config)

    for ext in OPTIONAL_EXTS:
        asked = getattr(config.optexts, ext)
        if asked and not is_optional_extension_enabled(ext):
            raise HippyOptionError("%s extension sources are missing!" % ext)

    from hippy.main import entry_point
    return entry_point, None
コード例 #3
0
ファイル: objspace.py プロジェクト: sk-/hippyvm
    func.func_name = name
    return func

for _name in ['and_', 'xor']:
    setattr(ObjSpace, _name, _new_bitwise(_name))

W_FloatObject.tp = ObjSpace.tp_float
W_BoolObject.tp = ObjSpace.tp_bool
W_IntObject.tp = ObjSpace.tp_int
W_StringObject.tp = ObjSpace.tp_str
W_ArrayObject.tp = ObjSpace.tp_array
W_NullObject.tp = ObjSpace.tp_null
W_InstanceObject.tp = ObjSpace.tp_object
W_FileResource.tp = ObjSpace.tp_file_res
W_DirResource.tp = ObjSpace.tp_dir_res
W_StreamContext.tp = ObjSpace.tp_stream_context

from hippy.hippyoption import is_optional_extension_enabled
if is_optional_extension_enabled("mysql"):
    from ext_module.mysql.link_resource import W_MysqlLinkResource
    from ext_module.mysql.result_resource import W_MysqlResultResource
    W_MysqlLinkResource.tp = ObjSpace.tp_mysql_link
    W_MysqlResultResource.tp = ObjSpace.tp_mysql_result

if is_optional_extension_enabled("xml"):
    from ext_module.xml.xmlparser import XMLParserResource
    XMLParserResource.tp = ObjSpace.tp_xmlparser_res

W_Constant.tp = ObjSpace.tp_constant
DelayedClassConstant.tp = ObjSpace.tp_delayed_class_const
コード例 #4
0
ファイル: builtin.py プロジェクト: LegendZhu/hippyvm
    def build(self, error_handler, check_num_args=True):
        from hippy.objects.resources.file_resource import W_FileResource
        from hippy.objects.resources.dir_resource import W_DirResource
        from hippy.objects.arrayobject import W_ArrayObject

        source = self.make_source(check_num_args)
        d = {
            'fname': self.funcname,
            'argument_not': argument_not,
            'arguments_exactly': arguments_exactly,
            'error_handler': error_handler,

            'warn_exactly': warn_exactly,
            'warn_not_array': warn_not_array,

            'warn_not_file_resource': warn_not_file_resource,
            'warn_not_valid_file_resource': warn_not_valid_file_resource,

            'warn_not_resource': warn_not_resource,
            'warn_not_valid_resource': warn_not_valid_resource,

            'warn_not_stream_context': warn_not_stream_context,
            'warn_not_valid_stream_context': warn_not_valid_stream_context,

            'warn_not_mysql_link': warn_not_mysql_link,
            'warn_not_valid_mysql_link': warn_not_valid_mysql_link,

            'warn_not_mysql_result': warn_not_mysql_result,
            'warn_not_valid_mysql_result': warn_not_valid_mysql_result,

            'warn_not': warn_not,
            'warn_could_not_convert_to_str': warn_could_not_convert_to_str,
            'warn_at_least': warn_at_least,
            'warn_at_most': warn_at_most,
            'warn_not_mcrypt_res': warn_not_mcrypt_res,
            'check_reference': check_reference,
            'unroll_safe': jit.unroll_safe,
            'W_FileResource': W_FileResource,
            'W_DirResource': W_DirResource,
            'W_ArrayObject': W_ArrayObject,
            'W_InstanceObject': W_InstanceObject,
            'FatalError': FatalError,
            'ConvertError': ConvertError,
            'ExitSilently': ExitSilently,
        }

        from hippy.hippyoption import is_optional_extension_enabled
        if is_optional_extension_enabled("mysql"):
            from ext_module.mysql.link_resource import W_MysqlLinkResource
            from ext_module.mysql.result_resource import W_MysqlResultResource
            d['W_MysqlLinkResource'] = W_MysqlLinkResource
            d['W_MysqlResultResource'] = W_MysqlResultResource

        if self.defaults:
            for i, default_value in zip(self.default_indices, self.defaults):
                d['default%s' % i] = default_value
        for i, unwrapper in enumerate(self.signature):
            unwrapper.register_extra_name(d, i)
        try:
            exec py.code.Source(source).compile() in d
        except:
            print source
            raise
        return d[self.internal_funcname]
コード例 #5
0
ファイル: main.py プロジェクト: CodeOps/hippyvm
def entry_point(argv):
    i = 1
    fname = None
    gcdump = None
    cgi = False
    fastcgi = False
    bench_mode = False
    bench_no = 0
    debugger_pipes = (-1, -1)
    server_port = 9000
    jit_param = None
    while i < len(argv):
        arg = argv[i]
        if arg.startswith('-'):
            if arg == '--gcdump':
                if i == len(argv) - 1:
                    print "--gcdump requires an argument"
                    return 1
                i += 1
                gcdump = argv[i]
            elif arg == '--cgi':
                cgi = True
            elif arg == '--server':
                if i == len(argv) - 1:
                    print "--server requires an int"
                    return 1
                server_port = int(argv[i + 1])
                i += 1
                fastcgi = True
            elif arg == '--bench':
                bench_mode = True
                if i == len(argv) - 1:
                    print "--bench requires an int"
                    return 1
                bench_no = int(argv[i + 1])
                i += 1
            elif arg == '--debugger_pipes':
                assert i + 2 < len(argv)
                debugger_pipes = (int(argv[i + 1]), int(argv[i + 2]))
                i += 2
            elif arg == '--jit':
                if i == len(argv) - 1:
                    print "--jit requires an argument"
                    return 1
                i += 1
                jit_param = argv[i]
            else:
                print __doc__
                print "Unknown parameter %s" % arg
                return 1
        else:
            fname = arg
            break
        i += 1
    if jit_param:
        from rpython.rlib.jit import set_user_param
        set_user_param(None, jit_param)
    if fastcgi:
        if bench_mode:
            print "can't specify --bench and --server"
            return 1
        from hippy.hippyoption import is_optional_extension_enabled
        if not is_optional_extension_enabled("fastcgi"):
            print("No fastcgi support compiled in")
            return 1
        else:
            return _run_fastcgi_server(server_port)
    rest_of_args = []
    for k in range(i + 1, len(argv)):
        s = argv[k]
        assert s is not None
        rest_of_args.append(s)
    return main(fname, rest_of_args, cgi, gcdump, debugger_pipes,
                bench_mode, bench_no)
コード例 #6
0
ファイル: main.py プロジェクト: mnazimek/hippyvm
def entry_point(argv):
    if len(argv) < 2:
        print __doc__
        return 1

    i = 1
    fname = None
    gcdump = None
    cgi = False
    fastcgi = False
    bench_mode = False
    bench_no = 0
    debugger_pipes = (-1, -1)
    server_port = 9000
    while i < len(argv):
        arg = argv[i]
        if arg.startswith('-'):
            if arg == '--gcdump':
                if i == len(argv) - 1:
                    print "--gcdump requires an argument"
                    return 1
                i += 1
                gcdump = argv[i]
            elif arg == '--cgi':
                cgi = True
            elif arg == '--server':
                if i == len(argv) - 1:
                    print "--server requires an int"
                    return 1
                server_port = int(argv[i + 1])
                i += 1
                fastcgi = True
            elif arg == '--bench':
                bench_mode = True
                if i == len(argv) - 1:
                    print "--bench requires an int"
                    return 1
                bench_no = int(argv[i + 1])
                i += 1
            elif arg == '--debugger_pipes':
                assert i + 2 < len(argv)
                debugger_pipes = (int(argv[i + 1]), int(argv[i + 2]))
                i += 2
            else:
                print __doc__
                print "Unknown parameter %s" % arg
                return 1
        else:
            fname = arg
            break
        i += 1
    if not fname and not fastcgi:
        print "php filename required"
        return 1
    if fastcgi:
        if bench_mode:
            print "can't specify --bench and --server"
            return 1
        from hippy.hippyoption import is_optional_extension_enabled
        if not is_optional_extension_enabled("fastcgi"):
            print("No fastcgi support compiled in")
            return 1
        else:
            return _run_fastcgi_server(server_port)
    else:
        rest_of_args = []
        for k in range(i + 1, len(argv)):
            s = argv[k]
            assert s is not None
            rest_of_args.append(s)
        return main(fname, rest_of_args, cgi, gcdump, debugger_pipes,
                    bench_mode, bench_no)
コード例 #7
0
 def test_all_enabled(self):
     # for tests, all extensions should be enabled
     for ext in OPTIONAL_EXTS:
         assert is_optional_extension_enabled(ext)
コード例 #8
0
for _name in ['and_', 'xor']:
    setattr(ObjSpace, _name, _new_bitwise(_name))

W_FloatObject.tp = ObjSpace.tp_float
W_BoolObject.tp = ObjSpace.tp_bool
W_IntObject.tp = ObjSpace.tp_int
W_StringObject.tp = ObjSpace.tp_str
W_ArrayObject.tp = ObjSpace.tp_array
W_NullObject.tp = ObjSpace.tp_null
W_InstanceObject.tp = ObjSpace.tp_object
W_FileResource.tp = ObjSpace.tp_file_res
W_DirResource.tp = ObjSpace.tp_dir_res
W_StreamContext.tp = ObjSpace.tp_stream_context

from hippy.hippyoption import is_optional_extension_enabled
if is_optional_extension_enabled("mysql"):
    from ext_module.mysql.link_resource import W_MysqlLinkResource
    from ext_module.mysql.result_resource import W_MysqlResultResource
    W_MysqlLinkResource.tp = ObjSpace.tp_mysql_link
    W_MysqlResultResource.tp = ObjSpace.tp_mysql_result

if is_optional_extension_enabled("xml"):
    from ext_module.xml.xmlparser import XMLParserResource
    XMLParserResource.tp = ObjSpace.tp_xmlparser_res

if is_optional_extension_enabled("mcrypt"):
    from ext_module.mcrypt.mcrypt_resource import W_McryptResource
    W_McryptResource.tp = ObjSpace.tp_mcrypt_res

W_Constant.tp = ObjSpace.tp_constant
DelayedClassConstant.tp = ObjSpace.tp_delayed_class_const