Commit 1bff6a8f authored by Paolo Bosetti's avatar Paolo Bosetti

Merge branch 'master' of git://github.com/mruby/mruby into XCode

parents 8fafbe7e b2d0f22d
......@@ -190,10 +190,9 @@ static const uint8_t __m[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
#define kh_size(h) ((h)->size)
#define kh_n_buckets(h) ((h)->n_buckets)
//#define kh_int_hash_func(mrb,key) (uint32_t)(key)
#define kh_int_hash_func(mrb,key) (uint32_t)((key)^((key)<<2)^((key)>>2))
#define kh_int_hash_func(mrb,key) (khint_t)((key)^((key)<<2)^((key)>>2))
#define kh_int_hash_equal(mrb,a, b) (a == b)
#define kh_int64_hash_func(mrb,key) (uint32_t)((key)>>33^(key)^(key)<<11)
#define kh_int64_hash_func(mrb,key) (khint_t)((key)>>33^(key)^(key)<<11)
#define kh_int64_hash_equal(mrb,a, b) (a == b)
static inline khint_t __ac_X31_hash_string(const char *s)
{
......
......@@ -56,39 +56,4 @@ module Kernel
yield
end
end
##
# Invoke the method with the name +symbol+ on
# the receiver and pass +args+ and the given
# block.
#
# ISO 15.3.1.3.44
#def send(symbol, *args, &block)
### *** TODO *** ###
#end
##
# Print arguments
#
# ISO 15.3.1.2.10
def print(*args)
args.each do|x|
if x.nil?
__printstr__ "nil"
else
__printstr__ x.to_s
end
end
end
##
# Print arguments with newline
#
# ISO 15.3.1.2.11
def puts(*args)
args.each do|x|
__printstr__ x.to_s
__printstr__ "\n"
end
end
end
......@@ -532,7 +532,7 @@ scope_body(codegen_scope *s, node *tree)
}
else {
codegen(scope, tree->cdr, VAL);
genop(scope, MKOP_AB(OP_RETURN, cursp(), OP_R_NORMAL));
genop(scope, MKOP_AB(OP_RETURN, scope->sp, OP_R_NORMAL));
}
scope_finish(scope, idx);
......
......@@ -240,18 +240,6 @@ mrb_obj_id_m(mrb_state *mrb, mrb_value self)
return mrb_fixnum_value(mrb_obj_id(self));
}
mrb_value
send_internal(int argc, mrb_value *argv, mrb_value recv, enum call_type ctype)
{
return mrb_nil_value(); /* dummy */
}
mrb_value
mrb_f_send(int argc, mrb_value *argv, mrb_value recv)
{
return send_internal(argc, argv, recv, CALL_FCALL);
}
/* 15.3.1.3.4 */
/* 15.3.1.3.44 */
/*
......@@ -272,34 +260,15 @@ mrb_f_send(int argc, mrb_value *argv, mrb_value recv)
* k.send :hello, "gentle", "readers" #=> "Hello gentle readers"
*/
static mrb_value
mrb_f_send_m(mrb_state *mrb, mrb_value self)
mrb_f_send(mrb_state *mrb, mrb_value self)
{
mrb_value name, block, *argv;
int argc;
mrb_get_args(mrb, "&o*", &block, &name, &argv, &argc);
mrb_get_args(mrb, "o*&", &name, &argv, &argc, &block);
return mrb_funcall_with_block(mrb,self, mrb_string_value_ptr(mrb, name), argc, argv, block);
}
/* 15.3.1.2.1 */
/* 15.3.1.3.5 */
/*
* call-seq:
* spawn([env,] command... [,options]) -> pid
* Process.spawn([env,] command... [,options]) -> pid
*
* spawn executes specified command and return its pid.
*/
static mrb_value
mrb_f_spawn_m(mrb_state *mrb, mrb_value self)
{
mrb_value *argv;
int argc;
mrb_get_args(mrb, "*", &argv, &argc);
return (mrb_f_send(argc, argv, self));
}
static mrb_value
mrb_f_block_given_p(void)
{
......@@ -1400,7 +1369,6 @@ mrb_init_kernel(mrb_state *mrb)
struct RClass *krn;
krn = mrb->kernel_module = mrb_define_module(mrb, "Kernel");
mrb_define_class_method(mrb, krn, "'", mrb_f_spawn_m, ARGS_ANY()); /* 15.3.1.2.1 */
mrb_define_class_method(mrb, krn, "block_given?", mrb_f_block_given_p_m, ARGS_NONE()); /* 15.3.1.2.2 */
mrb_define_class_method(mrb, krn, "eval", mrb_f_eval_m, ARGS_ANY()); /* 15.3.1.2.3 */
mrb_define_class_method(mrb, krn, "global_variables", mrb_f_global_variables, ARGS_NONE()); /* 15.3.1.2.4 */
......@@ -1418,8 +1386,7 @@ mrb_init_kernel(mrb_state *mrb)
mrb_define_method(mrb, krn, "!=", mrb_obj_not_equal_m, ARGS_REQ(1));
mrb_define_method(mrb, krn, "===", mrb_equal_m, ARGS_REQ(1)); /* 15.3.1.3.2 */
mrb_define_method(mrb, krn, "__id__", mrb_obj_id_m, ARGS_NONE()); /* 15.3.1.3.3 */
mrb_define_method(mrb, krn, "__send__", mrb_f_send_m, ARGS_ANY()); /* 15.3.1.3.4 */
mrb_define_method(mrb, krn, "'", mrb_f_spawn_m, ARGS_ANY()); /* 15.3.1.3.5 *//* "spawn"->"'" */
mrb_define_method(mrb, krn, "__send__", mrb_f_send, ARGS_ANY()); /* 15.3.1.3.4 */
mrb_define_method(mrb, krn, "block_given?", mrb_f_block_given_p_m, ARGS_NONE()); /* 15.3.1.3.6 */
mrb_define_method(mrb, krn, "class", mrb_obj_class_m, ARGS_NONE()); /* 15.3.1.3.7 */
mrb_define_method(mrb, krn, "clone", mrb_obj_clone, ARGS_NONE()); /* 15.3.1.3.8 */
......@@ -1454,7 +1421,7 @@ mrb_init_kernel(mrb_state *mrb)
mrb_define_method(mrb, krn, "remove_instance_variable", mrb_obj_remove_instance_variable,ARGS_REQ(1)); /* 15.3.1.3.41 */
mrb_define_method(mrb, krn, "require", mrb_f_require, ARGS_REQ(1)); /* 15.3.1.3.42 */
mrb_define_method(mrb, krn, "respond_to?", obj_respond_to, ARGS_ANY()); /* 15.3.1.3.43 */
mrb_define_method(mrb, krn, "send", mrb_f_send_m, ARGS_ANY()); /* 15.3.1.3.44 */
mrb_define_method(mrb, krn, "send", mrb_f_send, ARGS_ANY()); /* 15.3.1.3.44 */
mrb_define_method(mrb, krn, "singleton_methods", mrb_obj_singleton_methods_m, ARGS_ANY()); /* 15.3.1.3.45 */
mrb_define_method(mrb, krn, "to_s", mrb_any_to_s, ARGS_NONE()); /* 15.3.1.3.46 */
......
......@@ -5163,7 +5163,13 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
if (n2->car) {
dump_prefix(offset+2);
printf("rest:\n");
parser_dump(mrb, n2->car, offset+3);
if (n2->car == (node*)-1) {
dump_prefix(offset+2);
printf("(empty)\n");
}
else {
parser_dump(mrb, n2->car, offset+3);
}
}
n2 = n2->cdr;
if (n2) {
......
This diff is collapsed.
......@@ -17,7 +17,7 @@
#include <stdio.h>
/* ------------------------------------------------------ */
KHASH_MAP_INIT_INT(s2n, const char*);
KHASH_INIT(s2n, mrb_sym, const char*, 1, kh_int_hash_func, kh_int_hash_equal)
KHASH_MAP_INIT_STR(n2s, mrb_sym);
/* ------------------------------------------------------ */
mrb_sym
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment