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.

Reply via email to