Changeset 2610
- Timestamp:
- Oct 16, 2011 12:23:26 AM (20 months ago)
- File:
-
- 1 edited
-
ofw/core/ofwcore.fth (modified) (26 diffs)
Legend:
- Unmodified
- Added
- Removed
-
ofw/core/ofwcore.fth
r2588 r2610 674 674 headers 675 675 676 defer voc>phandle ' noop to voc>phandle 677 defer phandle>voc ' noop to phandle>voc 678 676 679 \ TODO 677 680 \ Don't use the system search order; use a private stack … … 681 684 682 685 2 actions 683 action: drop context token@ ;684 action: drop context token! definitions ;686 action: drop context token@ voc>phandle ; 687 action: drop phandle>voc context token! definitions ; 685 688 create current-device use-actions 686 689 … … 688 691 : ufield \ name ( offset size -- offset' ) 689 692 create over , + 690 does> @ current-device >body >user +693 does> @ current-device phandle>voc >body >user + 691 694 ; 692 695 … … 716 719 717 720 headers 718 : >parent ( node -- parent-node ) >voc-link link@ ;721 : >parent ( node -- parent-node ) >voc-link link@ voc>phandle ; 719 722 : parent-device ( -- parent-node ) current-device >parent ; 720 723 724 : (select-package) ( phandle -- ) phandle>voc execute ; 725 : (push-package) ( phandle -- ) also (select-package) ; 726 : (pop-package) ( phandle -- ) previous ; 721 727 : push-package ( phandle -- ) 722 728 dup 0= if ." Attempting to push null package!!!" abort then 723 also executedefinitions724 ; 725 : pop-package ( -- ) previousdefinitions ;729 (push-package) definitions 730 ; 731 : pop-package ( -- ) (pop-package) definitions ; 726 732 : push-device ( acf -- ) to current-device ; 727 733 … … 946 952 @ 947 953 my-self if \ Use current instance's package if there is a current instance 948 my-voc also execute initial-values previous954 my-voc (push-package) initial-values (pop-package) 949 955 else \ Otherwise use the active package 950 956 initial-values … … 1046 1052 1047 1053 : destroy-instance ( -- ) 1048 also my-voc execute( )1054 my-voc (push-package) ( ) 1049 1055 '#values @ '#buffers @ negate ( value-size variable-size ) 1050 previous( value-size variable-size )1056 (pop-package) ( value-size variable-size ) 1051 1057 deallocate-instance 1052 1058 … … 1150 1156 : $vexecute? ( adr len voc-acf -- true | ??? false) 1151 1157 (search-wordlist) if execute false else true then 1158 ; 1159 : $package-execute? ( adr len phandle -- true | ??? false) 1160 phandle>voc (search-wordlist) if execute false else true then 1152 1161 ; 1153 1162 : $vexecute ( adr len voc-acf -- ?? ) $vexecute? drop ; … … 1228 1237 : my-#adr-cells ( -- n ) 1229 1238 my-self if \ Use current instance's package if there is a current instance 1230 my-voc also execute '#adr-cells @ previous1239 my-voc (push-package) '#adr-cells @ (pop-package) 1231 1240 else \ Otherwise use the active package 1232 1241 '#adr-cells @ … … 1360 1369 : property ( value-adr,len name-adr,len -- ) 1361 1370 my-self if 1362 context token@ >r my-voc execute1371 context token@ >r my-voc (select-package) 1363 1372 (property) 1364 1373 r> context token! … … 1516 1525 headers 1517 1526 : package-execute ( ?? adr len -- ?? ) 1518 current-device $ vexecute? abort" Package method not found"1527 current-device $package-execute? abort" Package method not found" 1519 1528 ; 1520 1529 headerless … … 1789 1798 ." @" 1790 1799 unit-str>phys ( phys.lo .. phys.hi ) 1791 " encode-unit" parent-device ( phys.lo .. phys.hi adr,len ph )1792 $ vexecute? if( phys.lo .. phys.hi )1800 " encode-unit" parent-device ( phys.lo .. phys.hi adr,len phandle ) 1801 $package-execute? if ( phys.lo .. phys.hi ) 1793 1802 '#adr-cells @ if .nh then ( phys.lo .. phys.next ) 1794 1803 '#adr-cells @ 1- 0 max 0 ?do ." ," .nh loop ( ) … … 2133 2142 2134 2143 : get-package-property ( adr len phandle -- true | adr' len' false ) 2135 also execute get-property previous2144 (push-package) get-property (pop-package) 2136 2145 ; 2137 2146 … … 2274 2283 2275 2284 : apply-method ( adr len -- no-such-method? ) 2276 my-voc fm-hook ['] $ vexecute? catch ?dup if ( x x x errno )2285 my-voc fm-hook ['] $package-execute? catch ?dup if ( x x x errno ) 2277 2286 \ executing method caused an error 2278 2287 nip nip nip ( errno ) … … 2772 2781 2773 2782 " encode-unit" parent-device ( phys .. adr,len phandle ) ( R: $ ) 2774 $ vexecute? if( phys .. ) ( R: $ )2783 $package-execute? if ( phys .. ) ( R: $ ) 2775 2784 2776 2785 2r> ( phys .. adr,len ) ( R: ) … … 3165 3174 : (trace) ( adr len phandle -- adr len phandle ) 3166 3175 >r >r >r .s r> r> ( adr len ) ( r: phandle ) 3167 also r@ execute( adr len ) ( r: phandle )3176 r@ (push-package) ( adr len ) ( r: phandle ) 3168 3177 " name" get-property ( adr len value-str false ) ( r: phandle ) 3169 previous( adr len value-str false ) ( r: phandle )3178 (pop-package) ( adr len value-str false ) ( r: phandle ) 3170 3179 drop get-encoded-string type ( adr len ) ( r: phandle ) 3171 3180 ." : " 2dup type space cr ( adr len ) ( r: phandle ) … … 4052 4061 4053 4062 : setnode ( nodeid | 0 -- ) 4054 dup 0= if drop ['] root-node then also execute4063 dup 0= if drop ['] root-node then (push-package) 4055 4064 ; 4056 4065 … … 4125 4134 then 4126 4135 then ( cstr ) 4127 previous4136 (pop-package) 4128 4137 ; 4129 4138 : .cstr ( cstr -- ) begin dup c@ ?dup while emit 1+ repeat drop ; … … 4151 4160 0 'child ( last-nodeid &next-nodeid ) 4152 4161 begin get-token? while ( last-nodeid next-nodeid ) 4153 nip dup execute( next-nodeid )4162 nip dup (select-package) ( next-nodeid ) 4154 4163 'peer ( last-nodeid' &next-nodeid ) 4155 4164 repeat ( last-nodeid' ) 4156 previous( nodeid )4165 (pop-package) ( nodeid ) 4157 4166 ; 4158 4167 … … 4167 4176 4168 4177 \ Select the first child of our parent 4169 dup >parent also execute( nodeid )4170 'child token@ execute( nodeid )4178 dup >parent (push-package) ( nodeid ) 4179 'child token@ (select-package) ( nodeid ) 4171 4180 4172 4181 dup current-device = if ( nodeid ) … … 4182 4191 2drop current-device ( nodeid' ) 4183 4192 then ( nodeid | 0 ) 4184 previous( nodeid | 0 )4193 (pop-package) ( nodeid | 0 ) 4185 4194 ; 4186 4195 … … 4204 4213 then ( len | -1 ) 4205 4214 then ( len | -1 ) 4206 previous( len | -1 )4215 (pop-package) ( len | -1 ) 4207 4216 ; 4208 4217 … … 4229 4238 then ( len|-1 ) 4230 4239 then ( len|-1 ) 4231 previous( len|-1 )4240 (pop-package) ( len|-1 ) 4232 4241 ; 4233 4242 … … 4260 4269 then ( len|-1 ) 4261 4270 then ( len|-1 ) 4262 previous4271 (pop-package) 4263 4272 ; 4264 4273 … … 4326 4335 : append-my-unit ( phys.. -- ) 4327 4336 " @" canon+ 4328 " encode-unit" parent-device ( phys.. adr,len ph )4329 $ vexecute? if( phys.. )4337 " encode-unit" parent-device ( phys.. adr,len phandle ) 4338 $package-execute? if ( phys.. ) 4330 4339 '#adr-cells @ if (nh.) canon+ then ( phys.lo .. phys.next ) 4331 4340 '#adr-cells @ 1- 0 max 0 ?do ( phys.lo .. phys.next ) … … 4425 4434 : ?delete-address ( adr len -- adr len ) 4426 4435 my-self if ( adr len ) 4427 also my-voc execute( adr len )4436 my-voc (push-package) ( adr len ) 4428 4437 " address" get-property 0= if ( adr len value-adr,len ) 4429 4438 get-encoded-int 2 pick = if ( adr len ) … … 4431 4440 then ( adr len ) 4432 4441 then ( adr len ) 4433 previous( adr len )4442 (pop-package) ( adr len ) 4434 4443 then ( adr len ) 4435 4444 ;
Note: See TracChangeset
for help on using the changeset viewer.
