Examples of IBehaviorInfo


Examples of tod.core.database.structure.IBehaviorInfo

        if (isStepInto) {
            methodEvents = this.getTODSession().getTODHandler().getStepIntoChildrenBrowser(parentEvent);
        } else {
            methodEvents = this.getTODSession().getTODHandler().getChildrenBrowser(parentEvent);
        }
        IBehaviorInfo parentBehavior = parentEvent.getOperationBehavior();
        System.out.println("Local variable scope: " + parentBehavior.getDeclaringType().getJvmName() + " - " + parentBehavior.getName() + parentBehavior.getSignature());
        IEventBrowser variableWrites = this.getTODSession().getTODHandler().filterLocalVariableWrites(methodEvents);
        ILogEvent target = result.lastEvent;
       
        if (!variableWrites.hasNext()) {
            return;
View Full Code Here

Examples of tod.core.database.structure.IBehaviorInfo

        } while (variableWrites.hasNext() && currentEvent.getDepth() == parentEvent.getDepth()+1);       
    }
   
    private void updateThis(SearchResult result, boolean isStepInto) {
        // If the current method is static, there is no this object.
        IBehaviorInfo currentBehavior = result.behavior;
        if (currentBehavior.isStatic() || currentBehavior.isStaticInit()) {
            this.thisObject = null;
            return;
        }
       
        // The "target" of the current method is our "this" object.
        ICallerSideEvent parent;
        parent = findParent(result);
       
        // Our parent must be a method call.
        if (!(parent instanceof IBehaviorCallEvent)) {
            return;
        }
       
        IBehaviorCallEvent callEvent = (IBehaviorCallEvent)parent;
        Object target = callEvent.getTarget();
       
        // The target object must be an ObjectId
        if (!(target instanceof ObjectId)) {
            this.thisObject = null;
            return;
        }
       
        // Our current method's "declaring type" will give us the type signature.
        String thisType = currentBehavior.getDeclaringType().getName();
       
        // We want the object to only have data up to our target event's timestamp.
        long validTimestamp = result.lastEvent.getTimestamp();
        // Set the this pointer. It must be a MirroredObjectInstance. and not a NullReference.
        MirroredValue instanceFromTOD = MirrorFactory.instanceFromTOD(session, target, thisType, validTimestamp);
View Full Code Here

Examples of tod.core.database.structure.IBehaviorInfo

        }
    }

    private ICallerSideEvent findParent(SearchResult result) {
        // Find the event that CALLED our current scope.
        IBehaviorInfo current = result.behavior;
        IBehaviorCallEvent call;
       
        // Are we currently on a method call?
        if (result.targetEvent instanceof IBehaviorCallEvent) {
            call = (IBehaviorCallEvent)result.targetEvent;
View Full Code Here

Examples of tod.core.database.structure.IBehaviorInfo

        } else if (ile instanceof OpcodeEvent) {
            OpcodeEvent e = (OpcodeEvent)ile;
            return e.getOpcode() == Opcodes.GOTO;
        } else if (ile instanceof IMethodCallEvent) {
            IMethodCallEvent imce = (IMethodCallEvent)ile;
            IBehaviorInfo executedBehavior = imce.getExecutedBehavior();
            IBehaviorInfo calledBehavior = imce.getCalledBehavior();
            if (executedBehavior == null && calledBehavior == null) {
                return true;
            }
           
            // Use either executedBehavior or calledBehavior, in that order, depending on which is available.
            IBehaviorInfo intendedBehavior = executedBehavior != null ? executedBehavior : calledBehavior;
            MethodInfo methodInfo = getTODSession().getClassInformationProvider().getMethodInfo(intendedBehavior);
            return !getTODSession().getFilter().acceptMethod(methodInfo);
        } else if (ile instanceof ICallerSideEvent) {
            ICallerSideEvent callerSideEvent = (ICallerSideEvent)ile;
            IBehaviorInfo operationBehavior = callerSideEvent.getOperationBehavior();
            if (operationBehavior == null) {
                return true;
            }
           
            // If it is something that occurred in java's SDK, ignore it.
View Full Code Here

Examples of tod.core.database.structure.IBehaviorInfo

            ITypeInfo[] args = new ITypeInfo[argumentTypes.size()];
            for (int i = 0; i < argumentTypes.size(); i++) {
                args[i] = db.getType(argumentTypes.get(i).signature(), false);
            }
            ITypeInfo ret = db.getType(method.returnType().signature(), false);
            IBehaviorInfo behavior = cls.getBehavior(method.name(), args, ret);
            return behavior;
        } catch (ClassNotLoadedException ex) {
            return null;
        }
    }
View Full Code Here

Examples of tod.core.database.structure.IBehaviorInfo

        LinkedList<MethodInfo> stack = new LinkedList<MethodInfo>();
        boolean loggedMethod = false;
        if (event instanceof IMethodCallEvent) {
            IMethodCallEvent mce = (IMethodCallEvent)event;
            if (mce.getCalledBehavior() != null && isForward) {
                IBehaviorInfo b = mce.getCalledBehavior();
                MethodInfo i = getTODSession().getClassInformationProvider().getMethodInfo(b);
                mce.getOperationBytecodeIndex();
                int n = TypeUtils.calculateLineNumber(b, mce.getOperationBytecodeIndex());
                i.setLineNumber(n);
                stack.add(i);
                loggedMethod = true;
            }
        }
        ICallerSideEvent currentEvent = (ICallerSideEvent)event;
        boolean isFirst = true;
        do {
            if (currentEvent.getOperationBehavior() != null) {
                IBehaviorInfo method = currentEvent.getOperationBehavior();
                MethodInfo i = getTODSession().getClassInformationProvider().getMethodInfo(method);
                int n = TypeUtils.calculateLineNumber(method, currentEvent.getOperationBytecodeIndex());
                //we really need the current location not some calculated position...is this possible?
                i.setLineNumber(n);
                if(!isStepInto && isFirst && isForward && event instanceof IMethodCallEvent){
View Full Code Here

Examples of tod.core.database.structure.IBehaviorInfo

        IEventBrowser browser = getTODSession().getTODHandler().getStepOverEventBrowser();
        while (browser.hasNext()) {
            ILogEvent event = browser.next();
            if (event instanceof IMethodCallEvent) {
                IMethodCallEvent mce = (IMethodCallEvent)event;
                IBehaviorInfo called = mce.getCalledBehavior();
                if (called != null) {
                    String calledSignature = called.getName() + called.getSignature();
                    String calledClass = called.getDeclaringType().getName();
                    if (calledClass.startsWith("quorum.") && (calledSignature.equals("main()V") || calledSignature.equals("Main()V"))) {
                        if (browser.hasNext()) {
                            ILogEvent next = browser.next();
                            if (next instanceof ICallerSideEvent) {
                                ICallerSideEvent e = (ICallerSideEvent)next;
                                IClassInfo c = called.getDeclaringType();
                                ClassInfo ci = getTODSession().getClassInformationProvider().getClassInfo(c);
                                mainClassName = ci.getFullyQualifiedName();
                                mainFirstLine = TypeUtils.calculateLineNumber(called, e.getOperationBytecodeIndex());
                                break;
                            }
View Full Code Here

Examples of tod.core.database.structure.IBehaviorInfo

        return null;
    }

    private static MethodCallStep methodCallTOD(TODSession session, IMethodCallEvent event, boolean forward, boolean live) {
        MethodCallStep s = new MethodCallStep();
        IBehaviorInfo behavior = event.getOperationBehavior();
        IBehaviorInfo calledBehavior = event.getCalledBehavior();
       
        if (calledBehavior == null) {
            calledBehavior = event.getExecutedBehavior();
        }
        // If there is no associated behavior, TOD does not have information
        // for the given class. It is likely out of scope.
        if (behavior == null || calledBehavior == null || calledBehavior.isStaticInit()) {
            return null;
        }
        MethodInfo methodInfo = session.getClassInformationProvider().getMethodInfo(behavior);
        MethodInfo targetMethodInfo = session.getClassInformationProvider().getMethodInfo(calledBehavior);
        if (!session.getFilter().acceptMethod(targetMethodInfo)) {
            return null;
        }
        s.setType(StepType.METHOD_CALL);
        s.setLive(live);
        s.setMethodInfo(methodInfo);
        s.setTargetMethodInfo(targetMethodInfo);
        int line = TypeUtils.calculateLineNumber(event.getOperationBehavior(), event.getOperationBytecodeIndex());
        s.setLineNumber(line); // TODO
        s.setTargetLineNumber(0); // TODO
        s.setForward(forward);
       
        // Set up the parameters.
        Object[] arguments = event.getArguments();
        for (int i = 0; i < arguments.length; i++) {
            Object arg = arguments[i];
            s.addParameter(MirrorFactory.instanceFromTOD(session, arg, calledBehavior.getArgumentTypes()[i].getJvmName()));
        }
       
        return s;
    }
View Full Code Here

Examples of tod.core.database.structure.IBehaviorInfo

        return s;
    }
   
    private static MethodReturnStep methodReturnTOD(TODSession session, BehaviorExitEvent event, boolean forward, boolean live) {
        MethodReturnStep s = new MethodReturnStep();
        IBehaviorInfo behavior = event.getOperationBehavior();
        // If there is no associated behavior, TOD does not have information
        // for the given class. It is likely out of scope.
        if (behavior == null || behavior.isStaticInit()) {
            return null;
        }
        MethodInfo methodInfo = session.getClassInformationProvider().getMethodInfo(behavior);
        if (!session.getFilter().acceptMethod(methodInfo)) {
            return null;
View Full Code Here

Examples of tod.core.database.structure.IBehaviorInfo

        return s;
    }

    private static ProgramStep assignmentFromTOD(TODSession session, ICallerSideEvent event, boolean forward, boolean live) {
        AssignmentStep s = new AssignmentStep();
        IBehaviorInfo behavior = event.getOperationBehavior();
        s.setType(StepType.ASSIGNMENT);
        s.setLive(live);
        s.setMethodInfo(session.getClassInformationProvider().getMethodInfo(behavior));
        int line = TypeUtils.calculateLineNumber(event.getOperationBehavior(), event.getOperationBytecodeIndex());
        s.setLineNumber(line); // TODO
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.