1- #define  K8_VERSION  " 0.2.2-r65 " //  known to work with V8-3.16.14
1+ #define  K8_VERSION  " 0.2.3-r67 " //  known to work with V8-3.16.14
22
33#include  < stdlib.h> 
44#include  < stdint.h> 
@@ -596,9 +596,9 @@ JS_METHOD(k8_file_readline, args) // see iStream::readline(sep=line) for details
596596	return  ret >= 0 ? scope.Close (v8::Integer::New (dret)) : scope.Close (v8::Integer::New (ret));
597597}
598598
599- /* ********************* 
599+ /* *****************
600600 *** Set object *** 
601-  ********************* * / 
601+  ******************/  
602602
603603#include  " khash.h" 
604604KHASH_MAP_INIT_STR (str, kh_cstr_t )
@@ -792,9 +792,19 @@ static v8::Persistent<v8::Context> CreateShellContext() // adapted from shell.cc
792792int  main (int  argc, char * argv[])
793793{
794794	v8::V8::SetFlagsFromCommandLine (&argc, argv, true );
795+ 
796+ 	//  set --max_old_space_size. We have to do it before CreateShellContext(), I guess.
797+ 	int  c;
798+ 	char  flag_buf[256 ], *size = 0 ;
799+ 	while  ((c = getopt (argc, argv, " ve:E:M:" 0 )
800+ 		if  (c == ' M' 
801+ 	strcat (strcpy (flag_buf, " --max_old_space_size=" " 16384" 
802+ 	v8::V8::SetFlagsFromString (flag_buf, strlen (flag_buf));
803+ 	opterr = optind = 1 ;
804+ 
795805	int  ret = 0 ;
796806	if  (argc == 1 ) {
797- 		fprintf (stderr, " Usage: k8 [-v] [-e jsSrc] [-E jsSrc] <src.js> [arguments]\n " 
807+ 		fprintf (stderr, " Usage: k8 [-v] [-e jsSrc] [-E jsSrc] [-M maxRSS]  <src.js> [arguments]\n " 
798808		return  1 ;
799809	}
800810	{
@@ -805,8 +815,7 @@ int main(int argc, char* argv[])
805815			return  1 ;
806816		}
807817		context->Enter ();
808- 		int  i, c;
809- 		while  ((c = getopt (argc, argv, " ve:E:" 0 ) //  parse k8 related command line options
818+ 		while  ((c = getopt (argc, argv, " ve:E:M:" 0 ) //  parse k8 related command line options
810819			if  (c == ' e' ' E' 
811820				if  (!k8_execute (JS_STR (optarg), JS_STR (" CLI" ' E' //  note the difference between 'e' and 'E'
812821					ret = 1 ;
@@ -816,7 +825,7 @@ int main(int argc, char* argv[])
816825		if  (!ret && optind != argc) {
817826			v8::HandleScope scope2;
818827			v8::Local<v8::Array> args = v8::Array::New (argc - optind - 1 );
819- 			for  (i = optind + 1 ; i < argc; ++i)
828+ 			for  (int   i = optind + 1 ; i < argc; ++i)
820829				args->Set (v8::Integer::New (i - optind - 1 ), JS_STR (argv[i]));
821830			context->Global ()->Set (JS_STR (" arguments" 
822831			if  (!k8_execute (k8_readfile (argv[optind]), JS_STR (argv[optind]), false )) ret = 1 ;
0 commit comments