BUG? #42

Closed
opened 2019-05-26 05:09:31 +00:00 by zaoqi · 0 comments
zaoqi commented 2019-05-26 05:09:31 +00:00 (Migrated from github.com)

59d8d3500c/core/pure/lua/lang.lua

local function jsbool_no_force_equal_p(x, y)
    local stack1 = {x}
    local stack2 = {y}
    while #stack1 ~= 0 do
        local ret1, new_stack1 = unpack(machinetext_print_step(stack1))
        local ret2, new_stack2 = unpack(machinetext_print_step(stack2))
        if #ret1 ~= #ret2 then
            return false
        end
        do
            local i = 0
            while i < #ret1 do
                if ret1[i + 1] ~= ret2[i + 1] then
                    return false
                end
                i = i + 1
            end
        end
        stack1 = new_stack1
        stack2 = new_stack2
    end
    return #stack2 == 0
end
____exports.simple_print = simple_print

compile...
decompile...

/*
 * Decompiled with CFR 0.144.
 * 
 * Could not load the following classes:
 *  org.luaj.vm2.LuaBoolean
 *  org.luaj.vm2.LuaString
 *  org.luaj.vm2.LuaTable
 *  org.luaj.vm2.LuaValue
 *  org.luaj.vm2.Varargs
 *  org.luaj.vm2.lib.TwoArgFunction
 */
import org.luaj.vm2.LuaBoolean;
import org.luaj.vm2.LuaString;
import org.luaj.vm2.LuaTable;
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.Varargs;
import org.luaj.vm2.lib.TwoArgFunction;

public class Lang$luaj$simple_print
extends TwoArgFunction {
    LuaValue u0;
    LuaValue u1;
    static final LuaValue k0 = LuaValue.valueOf((int)0);
    static final LuaValue k1 = LuaString.valueOf((String)"unpack");
    static final LuaValue k2 = LuaValue.valueOf((int)1);

    public final LuaValue call(LuaValue arg1, LuaValue arg2) {
        LuaValue ret1;
        LuaValue stack2;
        LuaTable stack1 = LuaValue.tableOf((int)1, (int)0);
        LuaValue luaValue = arg1;
        stack1.rawset(1, luaValue);
        luaValue = LuaValue.tableOf((int)1, (int)0);
        LuaValue luaValue2 = arg2;
        stack2.rawset(1, luaValue2);
        while (!(luaValue2 = stack1.len()).eq_b(k0)) {
            LuaValue ret2;
            LuaValue s9;
            LuaValue i;
            luaValue2 = this.u0.get(k1);
            LuaValue luaValue3 = this.u1;
            LuaTable luaTable = stack1;
            Varargs v = luaValue3.invoke((Varargs)luaTable);
            Varargs varargs = ret1.invoke(v.subargs(1));
            ret1 = varargs.arg1();
            LuaValue new_stack1 = varargs.arg(2);
            luaTable = this.u0.get(k1);
            LuaValue luaValue4 = this.u1;
            LuaValue luaValue5 = stack2;
            v = luaValue4.invoke((Varargs)luaValue5);
            Varargs varargs2 = ret2.invoke(v.subargs(1));
            ret2 = varargs2.arg1();
            LuaValue new_stack2 = varargs2.arg(2);
            luaValue5 = ret1.len();
            if (!luaValue5.eq_b(s9 = ret2.len())) {
                luaValue5 = LuaValue.FALSE;
                return i;
            }
            i = k0;
            while (i.lt_b(s9 = ret1.len())) {
                s9 = i.add(k2);
                s9 = ret1.get(s9);
                LuaValue s10 = i.add(k2);
                if (!s9.eq_b(s10 = ret2.get(s10))) {
                    s9 = LuaValue.FALSE;
                    return s9;
                }
                i = i.add(k2);
            }
            stack1 = new_stack1;
            stack2 = new_stack2;
        }
        ret1 = stack2.len();
        ret1 = !ret1.eq_b(k0) ? LuaValue.FALSE : LuaValue.TRUE;
        return ret1;
    }
}
https://gitlab.com/the-language/the-language/blob/59d8d3500cd08f7b2d246bbf6841cd2a31b2d817/core/pure/lua/lang.lua ```lua local function jsbool_no_force_equal_p(x, y) local stack1 = {x} local stack2 = {y} while #stack1 ~= 0 do local ret1, new_stack1 = unpack(machinetext_print_step(stack1)) local ret2, new_stack2 = unpack(machinetext_print_step(stack2)) if #ret1 ~= #ret2 then return false end do local i = 0 while i < #ret1 do if ret1[i + 1] ~= ret2[i + 1] then return false end i = i + 1 end end stack1 = new_stack1 stack2 = new_stack2 end return #stack2 == 0 end ____exports.simple_print = simple_print ``` compile... decompile... ```java /* * Decompiled with CFR 0.144. * * Could not load the following classes: * org.luaj.vm2.LuaBoolean * org.luaj.vm2.LuaString * org.luaj.vm2.LuaTable * org.luaj.vm2.LuaValue * org.luaj.vm2.Varargs * org.luaj.vm2.lib.TwoArgFunction */ import org.luaj.vm2.LuaBoolean; import org.luaj.vm2.LuaString; import org.luaj.vm2.LuaTable; import org.luaj.vm2.LuaValue; import org.luaj.vm2.Varargs; import org.luaj.vm2.lib.TwoArgFunction; public class Lang$luaj$simple_print extends TwoArgFunction { LuaValue u0; LuaValue u1; static final LuaValue k0 = LuaValue.valueOf((int)0); static final LuaValue k1 = LuaString.valueOf((String)"unpack"); static final LuaValue k2 = LuaValue.valueOf((int)1); public final LuaValue call(LuaValue arg1, LuaValue arg2) { LuaValue ret1; LuaValue stack2; LuaTable stack1 = LuaValue.tableOf((int)1, (int)0); LuaValue luaValue = arg1; stack1.rawset(1, luaValue); luaValue = LuaValue.tableOf((int)1, (int)0); LuaValue luaValue2 = arg2; stack2.rawset(1, luaValue2); while (!(luaValue2 = stack1.len()).eq_b(k0)) { LuaValue ret2; LuaValue s9; LuaValue i; luaValue2 = this.u0.get(k1); LuaValue luaValue3 = this.u1; LuaTable luaTable = stack1; Varargs v = luaValue3.invoke((Varargs)luaTable); Varargs varargs = ret1.invoke(v.subargs(1)); ret1 = varargs.arg1(); LuaValue new_stack1 = varargs.arg(2); luaTable = this.u0.get(k1); LuaValue luaValue4 = this.u1; LuaValue luaValue5 = stack2; v = luaValue4.invoke((Varargs)luaValue5); Varargs varargs2 = ret2.invoke(v.subargs(1)); ret2 = varargs2.arg1(); LuaValue new_stack2 = varargs2.arg(2); luaValue5 = ret1.len(); if (!luaValue5.eq_b(s9 = ret2.len())) { luaValue5 = LuaValue.FALSE; return i; } i = k0; while (i.lt_b(s9 = ret1.len())) { s9 = i.add(k2); s9 = ret1.get(s9); LuaValue s10 = i.add(k2); if (!s9.eq_b(s10 = ret2.get(s10))) { s9 = LuaValue.FALSE; return s9; } i = i.add(k2); } stack1 = new_stack1; stack2 = new_stack2; } ret1 = stack2.len(); ret1 = !ret1.eq_b(k0) ? LuaValue.FALSE : LuaValue.TRUE; return ret1; } } ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: open-autonomous-connection/luaj#42