MRI: some minor optimizations #16
					 6 changed files with 24 additions and 22 deletions
				
			
		| 
						 | 
					@ -126,7 +126,7 @@ static void printP(int argc, VALUE *argv,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (int i = 0; i < argc; ++i)
 | 
						for (int i = 0; i < argc; ++i)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		VALUE str = rb_funcall(argv[i], conv, 0);
 | 
							VALUE str = rb_funcall2(argv[i], conv, 0, NULL);
 | 
				
			||||||
		rb_str_buf_append(dispString, str);
 | 
							rb_str_buf_append(dispString, str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (i < argc)
 | 
							if (i < argc)
 | 
				
			||||||
| 
						 | 
					@ -210,12 +210,12 @@ static void runRMXPScripts()
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	size_t scriptCount = RARRAY_LEN(scriptArray);
 | 
						long scriptCount = RARRAY_LEN(scriptArray);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	std::string decodeBuffer;
 | 
						std::string decodeBuffer;
 | 
				
			||||||
	decodeBuffer.resize(0x1000);
 | 
						decodeBuffer.resize(0x1000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (size_t i = 0; i < scriptCount; ++i)
 | 
						for (long i = 0; i < scriptCount; ++i)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		VALUE script = rb_ary_entry(scriptArray, i);
 | 
							VALUE script = rb_ary_entry(scriptArray, i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -251,8 +251,7 @@ static void runRMXPScripts()
 | 
				
			||||||
		if (result != Z_OK)
 | 
							if (result != Z_OK)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			static char buffer[256];
 | 
								static char buffer[256];
 | 
				
			||||||
			/* FIXME: '%zu' apparently gcc only? */
 | 
								snprintf(buffer, sizeof(buffer), "Error decoding script %ld: '%s'",
 | 
				
			||||||
			snprintf(buffer, sizeof(buffer), "Error decoding script %zu: '%s'",
 | 
					 | 
				
			||||||
			         i, RSTRING_PTR(scriptName));
 | 
								         i, RSTRING_PTR(scriptName));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			showMsg(buffer);
 | 
								showMsg(buffer);
 | 
				
			||||||
| 
						 | 
					@ -274,8 +273,8 @@ static void runRMXPScripts()
 | 
				
			||||||
		/* Execute code */
 | 
							/* Execute code */
 | 
				
			||||||
		rb_eval_string_protect(decData.c_str(), 0);
 | 
							rb_eval_string_protect(decData.c_str(), 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		VALUE exc = rb_gv_get("$!");
 | 
							VALUE exc = rb_errinfo();
 | 
				
			||||||
		if (rb_type(exc) != RUBY_T_NIL)
 | 
							if (!NIL_P(exc))
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -296,13 +295,13 @@ static void mriBindingExecute()
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		runRMXPScripts();
 | 
							runRMXPScripts();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	VALUE exc = rb_gv_get("$!");
 | 
						VALUE exc = rb_errinfo();
 | 
				
			||||||
	if (rb_type(exc) != RUBY_T_NIL && !rb_eql(rb_obj_class(exc), rb_eSystemExit))
 | 
						if (!NIL_P(exc) && !rb_obj_is_kind_of(exc, rb_eSystemExit))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		Debug() << "Had exception:" << rb_class2name(rb_obj_class(exc));
 | 
							Debug() << "Had exception:" << rb_class2name(rb_obj_class(exc));
 | 
				
			||||||
		VALUE bt = rb_funcall(exc, rb_intern("backtrace"), 0);
 | 
							VALUE bt = rb_funcall2(exc, rb_intern("backtrace"), 0, NULL);
 | 
				
			||||||
		rb_p(bt);
 | 
							rb_p(bt);
 | 
				
			||||||
		VALUE msg = rb_funcall(exc, rb_intern("message"), 0);
 | 
							VALUE msg = rb_funcall2(exc, rb_intern("message"), 0, NULL);
 | 
				
			||||||
		if (RSTRING_LEN(msg) < 256)
 | 
							if (RSTRING_LEN(msg) < 256)
 | 
				
			||||||
			showMsg(RSTRING_PTR(msg));
 | 
								showMsg(RSTRING_PTR(msg));
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -322,7 +322,7 @@ rb_check_argc(int actual, int expected)
 | 
				
			||||||
		Klass *k = getPrivateData<Klass>(self); \
 | 
							Klass *k = getPrivateData<Klass>(self); \
 | 
				
			||||||
		VALUE propObj = *argv; \
 | 
							VALUE propObj = *argv; \
 | 
				
			||||||
		PropKlass *prop; \
 | 
							PropKlass *prop; \
 | 
				
			||||||
		if (rb_type(propObj) == RUBY_T_NIL) \
 | 
							if (NIL_P(propObj)) \
 | 
				
			||||||
			prop = 0; \
 | 
								prop = 0; \
 | 
				
			||||||
		else \
 | 
							else \
 | 
				
			||||||
			prop = getPrivateDataCheck<PropKlass>(propObj, PropKlass##Type); \
 | 
								prop = getPrivateDataCheck<PropKlass>(propObj, PropKlass##Type); \
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "sharedstate.h"
 | 
					#include "sharedstate.h"
 | 
				
			||||||
#include "filesystem.h"
 | 
					#include "filesystem.h"
 | 
				
			||||||
 | 
					#include "util.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "ruby/encoding.h"
 | 
					#include "ruby/encoding.h"
 | 
				
			||||||
#include "ruby/intern.h"
 | 
					#include "ruby/intern.h"
 | 
				
			||||||
| 
						 | 
					@ -118,9 +119,9 @@ kernelLoadDataInt(const char *filename)
 | 
				
			||||||
	VALUE marsh = rb_const_get(rb_cObject, rb_intern("Marshal"));
 | 
						VALUE marsh = rb_const_get(rb_cObject, rb_intern("Marshal"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// FIXME need to catch exceptions here with begin rescue
 | 
						// FIXME need to catch exceptions here with begin rescue
 | 
				
			||||||
	VALUE result = rb_funcall(marsh, rb_intern("load"), 1, port);
 | 
						VALUE result = rb_funcall2(marsh, rb_intern("load"), 1, &port);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rb_funcall(port, rb_intern("close"), 0);
 | 
						rb_funcall2(port, rb_intern("close"), 0, NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return result;
 | 
						return result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -144,13 +145,14 @@ RB_METHOD(kernelSaveData)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rb_get_args(argc, argv, "oS", &obj, &filename RB_ARG_END);
 | 
						rb_get_args(argc, argv, "oS", &obj, &filename RB_ARG_END);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	VALUE file = rb_funcall(rb_cFile, rb_intern("open"), 2, filename, rb_str_new_cstr("w"));
 | 
						VALUE file = rb_file_open_str(filename, "wb");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	VALUE marsh = rb_const_get(rb_cObject, rb_intern("Marshal"));
 | 
						VALUE marsh = rb_const_get(rb_cObject, rb_intern("Marshal"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rb_funcall(marsh, rb_intern("dump"), 2, obj, file);
 | 
						VALUE v[] = { obj, file };
 | 
				
			||||||
 | 
						rb_funcall2(marsh, rb_intern("dump"), ARRAY_SIZE(v), v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rb_funcall(file, rb_intern("close"), 0);
 | 
						rb_io_close(file);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return Qnil;
 | 
						return Qnil;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -187,7 +189,8 @@ RB_METHOD(_marshalLoad)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	VALUE marsh = rb_const_get(rb_cObject, rb_intern("Marshal"));
 | 
						VALUE marsh = rb_const_get(rb_cObject, rb_intern("Marshal"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return rb_funcall(marsh, rb_intern("_mkxp_load_alias"), 2, port, utf8Proc);
 | 
						VALUE v[] = { port, utf8Proc };
 | 
				
			||||||
 | 
						return rb_funcall2(marsh, rb_intern("_mkxp_load_alias"), ARRAY_SIZE(v), v);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,7 +38,7 @@ RB_METHOD(flashableFlash)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rb_get_args(argc, argv, "oi", &colorObj, &duration RB_ARG_END);
 | 
						rb_get_args(argc, argv, "oi", &colorObj, &duration RB_ARG_END);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (rb_type(colorObj) == RUBY_T_NIL)
 | 
						if (NIL_P(rb_type(colorObj)))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		f->flash(0, duration);
 | 
							f->flash(0, duration);
 | 
				
			||||||
		return Qnil;
 | 
							return Qnil;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,7 +74,7 @@ RB_METHOD(tilemapInitialize)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rb_get_args(argc, argv, "|o", &viewportObj RB_ARG_END);
 | 
						rb_get_args(argc, argv, "|o", &viewportObj RB_ARG_END);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (rb_type(viewportObj) != RUBY_T_NIL)
 | 
						if (!NIL_P(viewportObj))
 | 
				
			||||||
		viewport = getPrivateDataCheck<Viewport>(viewportObj, ViewportType);
 | 
							viewport = getPrivateDataCheck<Viewport>(viewportObj, ViewportType);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Construct object */
 | 
						/* Construct object */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,7 +54,7 @@ RB_METHOD(viewportElementSetViewport)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rb_get_args(argc, argv, "o", &viewportObj RB_ARG_END);
 | 
						rb_get_args(argc, argv, "o", &viewportObj RB_ARG_END);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (rb_type(viewportObj) != RUBY_T_NIL)
 | 
						if (!NIL_P(viewportObj))
 | 
				
			||||||
		viewport = getPrivateDataCheck<Viewport>(viewportObj, ViewportType);
 | 
							viewport = getPrivateDataCheck<Viewport>(viewportObj, ViewportType);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	GUARD_EXC( ve->setViewport(viewport); );
 | 
						GUARD_EXC( ve->setViewport(viewport); );
 | 
				
			||||||
| 
						 | 
					@ -76,7 +76,7 @@ viewportElementInitialize(int argc, VALUE *argv, VALUE self)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rb_get_args(argc, argv, "|o", &viewportObj RB_ARG_END);
 | 
						rb_get_args(argc, argv, "|o", &viewportObj RB_ARG_END);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (rb_type(viewportObj) != RUBY_T_NIL)
 | 
						if (!NIL_P(viewportObj))
 | 
				
			||||||
		viewport = getPrivateDataCheck<Viewport>(viewportObj, ViewportType);
 | 
							viewport = getPrivateDataCheck<Viewport>(viewportObj, ViewportType);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Construct object */
 | 
						/* Construct object */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue