Changeset 22801 for v6

Show
Ignore:
Timestamp:
10/28/08 16:39:10 (2 months ago)
Author:
ruoso
Message:

[smop-XS] YAY! we can run Mold from p5

Location:
v6/smop/SMOP
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • v6/smop/SMOP/SMOP.xs

    r22800 r22801  
    106106 
    107107SV* 
    108 create(SV* p5class, SV* consts, SV* bytecode) 
     108create(SV* p5class, int ccount, SV* consts, int bcount, SV* bytecode) 
    109109  CODE: 
    110110    AV* constsav = (AV*)SvRV(consts); 
     
    112112    SMOP__Object** consts_arr = calloc(constslen+1,sizeof(void*)); 
    113113    int i; 
    114     for (i = 0; i < constslen; i++) { 
     114    for (i = 0; i <= constslen; i++) { 
    115115        SV** e = av_fetch(constsav,i,0); 
    116116        SMOP__Object* object; 
     
    133133    int codelen = av_len(codeav); 
    134134    int* code_arr = calloc(codelen+1,sizeof(void*)); 
    135     for (i = 0; i < codelen; i++) { 
     135    for (i = 0; i <= codelen; i++) { 
    136136        SV** e = av_fetch(codeav,i,0); 
    137137        code_arr[i] = SvIV(*e); 
    138138    } 
    139     SMOP__Object* mold = SMOP__Mold_create(constslen, consts_arr, codelen, code_arr); 
     139    SMOP__Object* mold = SMOP__Mold_create(ccount, consts_arr, bcount, code_arr); 
    140140    SV* pointer = newSViv((int)mold); 
    141141    SV* object = newRV_noinc(pointer); 
  • v6/smop/SMOP/lib/SMOP.pm

    r22798 r22801  
    2727  my $rootns = SMOP::S1P->RootNamespace; 
    2828  my $prelud = SMOP::S1P->LexicalPrelude; 
    29   my $mold = SMOP::Mold->create([$rootns, $int, $true, $fals], 
    30                                 [1,2,3,1,2,3,1,2,3]); 
     29  my $mold = SMOP::Mold->create(12,[$rootns, $int, $true, $fals], 
     30                                45,[1,2,3,1,2,3,1,2,3]); 
    3131  my $frame = SMOP::MoldFrame->create($mold); 
    3232  my $result = SMOP::Interpreter->run($frame); 
  • v6/smop/SMOP/t/run_mold.t

    r22799 r22801  
    55 
    66my $submold = SMOP::Mold->create 
    7   ([ '$OUT','$_','FETCH','back','continuation', 
     7  (10, 
     8   [ '$OUT','$_','FETCH','back','continuation', 
    89     'goto','lookup','postcircumfix:{ }','print' ], 
     10   59, 
    911   [ 1,11,10,7,1,1,0,1,12,11,2,0,0,1,13,12,2,0,0,1, 
    1012     15,10,6,1,0,0,1,16,15,2,0,0,1,14,16,8,1,13,0,1, 
     
    1315 
    1416my $mold = SMOP::Mold->create 
    15   ([ SMOP::S1P->Capturize, 
     17  (13, 
     18   [ SMOP::S1P->Capturize, 
    1619     SMOP::S1P->LexicalScope, 
    1720     SMOP::S1P->Scalar, 
     
    2225     $submold, 
    2326     SMOP::S1P->LexicalPrelude ], 
     27   146, 
    2428   [ 1,23,21,10,1,3,0,1,24,23,7,0,0,1,22,24,19,1,5,0,1,25,21, 
    2529     10,1,6,0,1,26,25,7,0,0,1,27,1,12,0,2,16,21,1,28,27,16,0,