Ok, I'm able to start the example shell right now. But I got the next problem.
Trying to run a js-script brings up an illegal instruction caused by "mls". I think it's generated by the JIT, right? The script I'm trying to run is a "port" of the dhrystone test (source: http://jsperf.com/pystone-js): var LOOPS = 500000; var Ident1 = 1, Ident2 = 2, Ident3 = 3, Ident4 = 4, Ident5 = 5; var TRUE = 1, FALSE = 0; var IntGlob = 0; var BoolGlob = FALSE; var Char1Glob = '\0'; var Char2Glob = '\0'; var Array1Glob = new Array(51); for (var i = 0; i < Array1Glob.length; ++i) { Array1Glob[i] = 0 } var Array2Glob = Array1Glob.map(function(n) { return Array1Glob.slice(); }); var PtrGlb = null; var PtrGlbNext = null; var strings = { someString:"DHRYSTONE PROGRAM, SOME STRING", fstString:"DHRYSTONE PROGRAM, 1'ST STRING", sndString:"DHRYSTONE PROGRAM, 2'ND STRING" }; function main(){ Proc0(); } function Record(PtrComp, Discr, EnumComp, IntComp, StringComp) { this.PtrComp = PtrComp || null; this.Discr = Discr || 0; this.EnumComp = EnumComp || 0; this.IntComp = IntComp || 0; this.StringComp = StringComp || 0; } function structassign(d,s){ d.PtrComp = s.PtrComp; d.Discr = s.Discr; d.EnumComp = s.EnumComp; d.IntComp = s.IntComp; d.StringComp = s.StringComp; } function clock(){ return new Date().valueOf() / 1000.0 } function Proc0(){ var CharIndex; var starttime, benchtime, nulltime; var starttime = clock(); for(var i = 0; i < LOOPS; ++i); nulltime = clock() - starttime; PtrGlbNext = new Record(); PtrGlb = new Record(); PtrGlb.PtrComp = PtrGlbNext; PtrGlb.Discr = Ident1; PtrGlb.EnumComp = Ident3; PtrGlb.IntComp = 40; PtrGlb.StringComp = "DHRYSTONE PROGRAM, SOME STRING"; // im Original wird hier ein strcpy angewandt var String1Loc = "DHRYSTONE PROGRAM, 1'ST STRING"; Array2Glob[8][7] = 10; /* start timer */ starttime = clock(); for(var i = 0; i < LOOPS; ++i){ Proc5(); Proc4(); IntLoc1 = 2; IntLoc2 = 3; var String2Loc = "DHRYSTONE PROGRAM, 2'ND STRING"; // im Original wird hier ein strcpy angewandt var EnumLoc = Ident2; BoolGlob = !Func2(String1Loc, String2Loc); while(IntLoc1 < IntLoc2){ IntLoc3 = 5 * IntLoc1 - IntLoc2; Proc7(IntLoc1, IntLoc2, IntLoc3); ++IntLoc1; } Proc8(Array1Glob, Array2Glob, IntLoc1, IntLoc3); Proc1(PtrGlb); for (CharIndex = 'A'; CharIndex <= Char2Glob; CharIndex = String.fromCharCode(CharIndex.charCodeAt(0) + 1)){ // string to int to string convertion required by js if (EnumLoc == Func1(CharIndex, 'C')) EnumLoc = Proc6(Ident1); } IntLoc3 = IntLoc2 * IntLoc1; IntLoc2 = IntLoc3 / IntLoc1; IntLoc2 = 7 * (IntLoc3 - IntLoc2) - IntLoc1; IntLoc1 = Proc2(IntLoc1); // nicht by-reference ? } benchtime = clock() - starttime - nulltime; print("JsPystone() time for " + LOOPS + " passes = " + benchtime); print("This machine benchmarks at " + (LOOPS / benchtime) + " pystones/second"); // console.log("JsPystone() time for " + LOOPS + " passes = " + benchtime); // console.log("This machine benchmarks at " + (LOOPS / benchtime) + " pystones/second"); } function Proc1(PtrParIn){ var NextRecord = PtrParIn.PtrComp; structassign(NextRecord, PtrGlb); PtrParIn.IntComp = 5; NextRecord.IntComp = PtrParIn.IntComp; NextRecord.PtrComp = PtrParIn.PtrComp; Proc3(NextRecord.PtrComp); if(NextRecord.PtrComp == Ident1){ NextRecord.IntComp = 6; NextRecord.EnumComp = Proc6(PtrParIn.EnumComp); NextRecord.PtrComp = PtrGlb.PtrComp; NextRecord.IntComp = Proc7(NextRecord.IntComp, 10); } else structassign(PtrParIn, NextRecord); NextRecord.PtrComp = null; return PtrParIn; } function Proc2(IntParIO){ var IntLoc, EnumLoc; IntLoc = IntParIO + 10; for(;;){ if (Char1Glob == 'A'){ --IntLoc; IntParIO = IntLoc - IntGlob; EnumLoc = Ident1; } if (EnumLoc == Ident1) break; } } function Proc3(PtrParOut){ if (PtrGlb !== null) { PtrParOut = PtrGlb.PtrComp; } else { IntGlob = 100; } PtrGlb.IntComp = Proc7(10, IntGlob); return PtrParOut; } function Proc4(){ var BoolLoc = Char1Glob == 'A'; BoolLoc |= BoolGlob; Char2Glob = 'B'; } function Proc5(){ Char1Glob = 'A'; BoolGlob = FALSE; } function Proc6(EnumParIn, EnumParOut){ var EnumParOut = EnumParIn; if(!Func3(EnumParIn)) EnumParOut = Ident4; switch (EnumParIn){ case Ident1: EnumParOut = Ident1; break; case Ident2: if (IntGlob > 100){ EnumParOut = Ident1; } else EnumParOut = Ident4; break; case Ident3: EnumParOut = Ident2; break; case Ident4: break; case Ident5: EnumParOut = Ident3; } return EnumParOut; } function Proc7(IntParI1, IntParI2, IntParOut){ var IntLoc = IntParI1 + 2; IntParOut = IntParI2 + IntLoc; return IntParOut; } function Proc8(Array1Par, Array2Par, IntParI1, IntParI2) { var IntLoc = IntParI1 + 5; Array1Par[IntLoc] = IntParI2; Array1Par[IntLoc + 1] = Array1Par[IntLoc]; Array1Par[IntLoc + 30] = IntLoc; // for IntIndex in range(IntLoc, IntLoc+2): for (var IntIndex = IntLoc; IntIndex < IntLoc + 2; ++IntIndex) { Array2Par[IntLoc][IntIndex] = IntLoc; } Array2Par[IntLoc][IntLoc - 1] = Array2Par[IntLoc][IntLoc - 1] + 1; Array2Par[IntLoc + 20][IntLoc] = Array1Par[IntLoc]; IntGlob = 5; } function Func1(CharPar1, CharPar2) { var CharLoc1 = CharPar1; var CharLoc2 = CharLoc1; if (CharLoc2 != CharPar2) { return Ident1; } else { return Ident2; } } function Func2(StrParI1, StrParI2) { var IntLoc = 1; while (IntLoc <= 1) { if (Func1(StrParI1[IntLoc], StrParI2[IntLoc + 1]) == Ident1) { var CharLoc = 'A'; IntLoc = IntLoc + 1; } } if (CharLoc >= 'W' && CharLoc <= 'Z') { IntLoc = 7; } if (CharLoc == 'X') { return TRUE; } else { if (StrParI1 > StrParI2) { IntLoc = IntLoc + 7 return TRUE; } else { return FALSE; } } } function Func3(EnumParIn) { var EnumLoc = EnumParIn; if (EnumLoc == Ident3) return TRUE; return FALSE; } main(); -- -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
