Lines Matching defs:vm

61 static void ficlPrimitiveStepIn(ficlVm *vm);
62 static void ficlPrimitiveStepOver(ficlVm *vm);
63 static void ficlPrimitiveStepBreak(ficlVm *vm);
92 ficlVmSetBreak(ficlVm *vm, ficlBreakpoint *pBP)
94 ficlWord *pStep = ficlSystemLookup(vm->callback.system, "step-break");
95 FICL_VM_ASSERT(vm, pStep);
97 pBP->address = vm->ip;
98 pBP->oldXT = *vm->ip;
99 *vm->ip = pStep;
106 ficlDebugPrompt(ficlVm *vm, int debug)
137 ficlPrimitiveHashSummary(ficlVm *vm)
139 ficlDictionary *dictionary = ficlVmGetDictionary(vm);
152 FICL_VM_DICTIONARY_CHECK(vm, dictionary, 0);
186 sprintf(vm->pad, "%d bins, %2.0f%% filled, Depth: "
191 ficlVmTextOut(vm, vm->pad);
204 ficlPrimitiveSeeXT(ficlVm *vm)
209 word = (ficlWord *)ficlStackPopPointer(vm->dataStack);
214 sprintf(vm->pad, ": %.*s\n", word->length, word->name);
215 ficlVmTextOut(vm, vm->pad);
216 ficlDictionarySee(ficlVmGetDictionary(vm), word,
217 &(vm->callback));
220 ficlVmTextOut(vm, "does>\n");
221 ficlDictionarySee(ficlVmGetDictionary(vm),
222 (ficlWord *)word->param->p, &(vm->callback));
225 ficlVmTextOut(vm, "create\n");
228 sprintf(vm->pad, "variable = %ld (%#lx)\n",
230 ficlVmTextOut(vm, vm->pad);
234 sprintf(vm->pad, "user variable %ld (%#lx)\n",
236 ficlVmTextOut(vm, vm->pad);
240 sprintf(vm->pad, "constant = %ld (%#lx)\n",
242 ficlVmTextOut(vm, vm->pad);
245 sprintf(vm->pad, "constant = %ld %ld (%#lx %#lx)\n",
249 ficlVmTextOut(vm, vm->pad);
253 sprintf(vm->pad, "%.*s is a primitive\n", word->length,
255 ficlVmTextOut(vm, vm->pad);
260 ficlVmTextOut(vm, "immediate\n");
264 ficlVmTextOut(vm, "compile-only\n");
269 ficlPrimitiveSee(ficlVm *vm)
271 ficlPrimitiveTick(vm);
272 ficlPrimitiveSeeXT(vm);
284 ficlPrimitiveDebugXT(ficlVm *vm)
286 ficlWord *xt = ficlStackPopPointer(vm->dataStack);
289 ficlStackPushPointer(vm->dataStack, xt);
290 ficlPrimitiveSeeXT(vm);
299 ficlVmExecuteWord(vm, xt);
300 ficlVmSetBreak(vm, &(vm->callback.system->breakpoint));
303 ficlVmExecuteWord(vm, xt);
315 ficlPrimitiveStepIn(ficlVm *vm)
320 ficlVmExecuteWord(vm, *vm->ip++);
325 ficlVmSetBreak(vm, &(vm->callback.system->breakpoint));
336 ficlPrimitiveStepOver(ficlVm *vm)
340 ficlWord *pStep = ficlSystemLookup(vm->callback.system, "step-break");
341 FICL_VM_ASSERT(vm, pStep);
343 word = *vm->ip;
353 vm->callback.system->breakpoint.address = vm->ip + 1;
354 vm->callback.system->breakpoint.oldXT = vm->ip[1];
355 vm->ip[1] = pStep;
358 ficlPrimitiveStepIn(vm);
383 ficlPrimitiveStepBreak(ficlVm *vm)
390 if (!vm->restart) {
391 FICL_VM_ASSERT(vm, vm->callback.system->breakpoint.address);
392 FICL_VM_ASSERT(vm, vm->callback.system->breakpoint.oldXT);
399 vm->ip = (ficlIp)(vm->callback.system->breakpoint.address);
400 *vm->ip = vm->callback.system->breakpoint.oldXT;
405 pOnStep = ficlSystemLookup(vm->callback.system, "on-step");
407 ficlVmExecuteXT(vm, pOnStep);
412 word = vm->callback.system->breakpoint.oldXT;
416 sprintf(vm->pad, "next: %s (instruction %ld)\n",
420 sprintf(vm->pad, "next: %s\n", word->name);
425 ficlVmTextOut(vm, vm->pad);
426 ficlDebugPrompt(vm, debug);
428 vm->restart = 0;
431 command = ficlVmGetWord(vm);
435 ficlPrimitiveStepIn(vm);
439 ficlPrimitiveStepOver(vm);
448 ficlVmGetDictionary(vm), (ficlCell *)(vm->ip));
450 ficlStackPushPointer(vm->dataStack, xt);
451 ficlPrimitiveSeeXT(vm);
453 ficlVmTextOut(vm, "sorry - can't do that\n");
455 ficlVmThrow(vm, FICL_VM_STATUS_RESTART);
460 ficlDebugPrompt(vm, 0);
461 ficlVmThrow(vm, FICL_VM_STATUS_ABORT);
470 ficlWord *oldRunningWord = vm->runningWord;
473 vm->tib.text + vm->tib.index);
475 vm->tib.end - FICL_STRING_GET_POINTER(s));
477 returnValue = ficlVmExecuteString(vm, s);
481 vm->runningWord = oldRunningWord;
482 ficlVmTextOut(vm, "\n");
485 ficlDebugPrompt(vm, 0);
487 ficlVmThrow(vm, returnValue);
492 ficlVmTextOut(vm,
500 ficlDebugPrompt(vm, 1);
501 ficlVmThrow(vm, FICL_VM_STATUS_RESTART);
505 ficlDebugPrompt(vm, 0);
515 ficlPrimitiveBye(ficlVm *vm)
517 ficlVmThrow(vm, FICL_VM_STATUS_USER_EXIT);
528 ficlVm *vm;
548 ficlVmTextOut(context->vm, buffer);
556 ficlVm *vm = stack->vm;
569 ficlVmTextOut(vm, buffer);
572 myContext.vm = vm;
586 ficlVmTextOut(vm, buffer);
590 ficlVmDisplayDataStack(ficlVm *vm)
592 ficlStackDisplay(vm->dataStack, NULL, NULL);
603 ficlVmTextOut(context->vm, buffer);
608 ficlVmDisplayDataStackSimple(ficlVm *vm)
610 ficlStack *stack = vm->dataStack;
617 ficlVmTextOut(vm, buffer);
619 context.vm = vm;
655 ficlVmTextOut(context->vm, buffer);
660 ficlVmDisplayReturnStack(ficlVm *vm)
663 context.vm = vm;
665 context.dictionary = ficlVmGetDictionary(vm);
666 ficlStackDisplay(vm->returnStack, ficlReturnStackDisplayCallback,
674 ficlPrimitiveForgetWid(ficlVm *vm)
676 ficlDictionary *dictionary = ficlVmGetDictionary(vm);
679 hash = (ficlHash *)ficlStackPopPointer(vm->dataStack);
696 ficlPrimitiveForget(ficlVm *vm)
699 ficlDictionary *dictionary = ficlVmGetDictionary(vm);
702 ficlPrimitiveTick(vm);
703 where = ((ficlWord *)ficlStackPopPointer(vm->dataStack))->name;
714 ficlPrimitiveWords(ficlVm *vm)
716 ficlDictionary *dictionary = ficlVmGetDictionary(vm);
743 ficlVmThrowError(vm, "Error: out of memory");
789 ficlVmTextOut(vm, pPad);
807 ficlPrimitiveListEnv(ficlVm *vm)
809 ficlDictionary *dictionary = vm->callback.system->environment;
819 sprintf(vm->pad, "%s\n", word->name);
820 if (pager_output(vm->pad))
825 sprintf(vm->pad, "Environment: %d words, %ld cells used of %u total\n",
828 pager_output(vm->pad);
838 ficlPrimitiveParseStepList(ficlVm *vm)
841 ficlSystem *system = vm->callback.system;
842 FICL_VM_ASSERT(vm, system);
844 ficlVmTextOut(vm, "Parse steps:\n");
845 ficlVmTextOut(vm, "lookup\n");
849 ficlVmTextOut(vm, system->parseList[i]->name);
850 ficlVmTextOut(vm, "\n");
862 ficlPrimitiveEnvConstant(ficlVm *vm)
865 FICL_STACK_CHECK(vm->dataStack, 1, 0);
867 ficlVmGetWordToPad(vm);
868 value = ficlStackPopUnsigned(vm->dataStack);
869 ficlDictionarySetConstant(ficlSystemGetEnvironment(vm->callback.system),
870 vm->pad, (ficlUnsigned)value);
874 ficlPrimitiveEnv2Constant(ficlVm *vm)
878 FICL_STACK_CHECK(vm->dataStack, 2, 0);
880 ficlVmGetWordToPad(vm);
881 value = ficlStackPop2Integer(vm->dataStack);
883 ficlSystemGetEnvironment(vm->callback.system), vm->pad, value);