Search in sources :

Example 16 with Result

use of io.nuls.contract.vm.Result in project nuls by nuls-io.

the class NativeObject method getClass.

/**
 * native
 *
 * @see Object#getClass()
 */
private static Result getClass(MethodCode methodCode, MethodArgs methodArgs, Frame frame) {
    ObjectRef objectRef = methodArgs.objectRef;
    ObjectRef classRef = frame.heap.getClassRef(objectRef.getVariableType().getDesc());
    Result result = NativeMethod.result(methodCode, classRef, frame);
    return result;
}
Also used : ObjectRef(io.nuls.contract.vm.ObjectRef) Result(io.nuls.contract.vm.Result)

Example 17 with Result

use of io.nuls.contract.vm.Result in project nuls by nuls-io.

the class NativeObject method hashCode.

/**
 * native
 *
 * @see Object#hashCode()
 */
private static Result hashCode(MethodCode methodCode, MethodArgs methodArgs, Frame frame) {
    ObjectRef objectRef = methodArgs.objectRef;
    int hashCode = NativeSystem.identityHashCode(objectRef);
    Result result = NativeMethod.result(methodCode, hashCode, frame);
    return result;
}
Also used : ObjectRef(io.nuls.contract.vm.ObjectRef) Result(io.nuls.contract.vm.Result)

Example 18 with Result

use of io.nuls.contract.vm.Result in project nuls by nuls-io.

the class NativeObject method clone.

/**
 * native
 *
 * @see Object#clone()
 */
private static Result clone(MethodCode methodCode, MethodArgs methodArgs, Frame frame) {
    ObjectRef objectRef = methodArgs.objectRef;
    ObjectRef newRef;
    if (objectRef.isArray()) {
        newRef = frame.heap.newArray(objectRef.getVariableType(), objectRef.getDimensions());
        frame.heap.arraycopy(objectRef, 0, newRef, 0, objectRef.getDimensions()[0]);
    } else {
        Map<String, Object> fields = frame.heap.getFields(objectRef);
        Map<String, Object> newFields = CloneUtils.clone(fields);
        newRef = frame.heap.newObjectRef(null, objectRef.getDesc(), objectRef.getDimensions());
        frame.heap.putFields(newRef, newFields);
    }
    Result result = NativeMethod.result(methodCode, newRef, frame);
    return result;
}
Also used : ObjectRef(io.nuls.contract.vm.ObjectRef) Result(io.nuls.contract.vm.Result)

Example 19 with Result

use of io.nuls.contract.vm.Result in project nuls by nuls-io.

the class NativeFloat method toString.

/**
 * override
 *
 * @see Float#toString(float)
 */
private static Result toString(MethodCode methodCode, MethodArgs methodArgs, Frame frame) {
    float f = (float) methodArgs.invokeArgs[0];
    String s = Float.toString(f);
    ObjectRef ref = frame.heap.newString(s);
    Result result = NativeMethod.result(methodCode, ref, frame);
    return result;
}
Also used : ObjectRef(io.nuls.contract.vm.ObjectRef) Result(io.nuls.contract.vm.Result)

Example 20 with Result

use of io.nuls.contract.vm.Result in project nuls by nuls-io.

the class NativeFloat method parseFloat.

/**
 * override
 *
 * @see Float#parseFloat(String)
 */
private static Result parseFloat(MethodCode methodCode, MethodArgs methodArgs, Frame frame) {
    ObjectRef objectRef = (ObjectRef) methodArgs.invokeArgs[0];
    String s = frame.heap.runToString(objectRef);
    float f;
    try {
        f = Float.parseFloat(s);
    } catch (Exception e) {
        frame.throwNumberFormatException(e.getMessage());
        return null;
    }
    Result result = NativeMethod.result(methodCode, f, frame);
    return result;
}
Also used : ObjectRef(io.nuls.contract.vm.ObjectRef) Result(io.nuls.contract.vm.Result)

Aggregations

Result (io.nuls.contract.vm.Result)63 ObjectRef (io.nuls.contract.vm.ObjectRef)35 VariableType (io.nuls.contract.vm.code.VariableType)12 MethodCode (io.nuls.contract.vm.code.MethodCode)6 ClassCode (io.nuls.contract.vm.code.ClassCode)5 MethodArgs (io.nuls.contract.vm.MethodArgs)3 MethodInsnNode (org.objectweb.asm.tree.MethodInsnNode)3 Frame (io.nuls.contract.vm.Frame)1 VM (io.nuls.contract.vm.VM)1 ErrorException (io.nuls.contract.vm.exception.ErrorException)1 ArrayList (java.util.ArrayList)1 AccountState (org.ethereum.core.AccountState)1 DataWord (org.ethereum.vm.DataWord)1