1. JavaScript / Говнокод #27720

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    function main4() {
    
        let i = 0;
    
        try {
            try {
                throw 1.0;
            }
            catch (e: number) {
                i++;
                print("asd1");
                throw 2.0;
            }
            finally {
                print("finally");
            }
        }
        catch (e2: number) {
            i++;
            print("asd3");
        }
    
        assert(i == 2);
    }
    
    function main() {
        main4();
        print("done.");
    }

    Ну вот и все.. шах и мат С/C++ девелоперы... последняя хитровые...аная инструкция finally сделана. (надо еще для линуха сделать .. а то они разные)

    Запостил: ASD_77, 13 Октября 2021

    Комментарии (13) RSS

    • и канеха дампик - https://pastebin.com/wXfrVFjn
      Ответить
    • а еще SEO пост - https://github.com/ASDAlexander77/TypeScriptCompiler
      Ответить
    • а еще результат работы проги

      asd1
      finally
      asd3
      done.
      Ответить
    • > а то они разные

      Я понимаю почему в крестах так -- тяжелое наследие прошлого и совместимость. А у тебя в новом языке почему такие сложности? Или это просто побочка от использования LLVM?
      Ответить
      • ну да. это же не я это все LLVM ... шас покажу код в LLVM

        static const DenseMap<unsigned, StringRef> opcMap = {
              // Ret is handled specially.
              // Br is handled specially.
              // FIXME: switch
              // FIXME: indirectbr
              // FIXME: invoke
              INST(Resume, Resume),
              // FIXME: unreachable
              // FIXME: cleanupret
              // FIXME: catchret
              // FIXME: catchswitch
              // FIXME: callbr
              // FIXME: fneg
              INST(Add, Add), INST(FAdd, FAdd), INST(Sub, Sub), INST(FSub, FSub),
              INST(Mul, Mul), INST(FMul, FMul), INST(UDiv, UDiv), INST(SDiv, SDiv),
              INST(FDiv, FDiv), INST(URem, URem), INST(SRem, SRem), INST(FRem, FRem),
              INST(Shl, Shl), INST(LShr, LShr), INST(AShr, AShr), INST(And, And),
              INST(Or, Or), INST(Xor, XOr), INST(Alloca, Alloca), INST(Load, Load),
              INST(Store, Store),
              // Getelementptr is handled specially.
              INST(Ret, Return), INST(Fence, Fence),
              // FIXME: atomiccmpxchg
              // FIXME: atomicrmw
              INST(Trunc, Trunc), INST(ZExt, ZExt), INST(SExt, SExt),
              INST(FPToUI, FPToUI), INST(FPToSI, FPToSI), INST(UIToFP, UIToFP),
              INST(SIToFP, SIToFP), INST(FPTrunc, FPTrunc), INST(FPExt, FPExt),
              INST(PtrToInt, PtrToInt), INST(IntToPtr, IntToPtr),
              INST(BitCast, Bitcast), INST(AddrSpaceCast, AddrSpaceCast),
              // FIXME: cleanuppad
              // FIXME: catchpad
              // ICmp is handled specially.
              // FIXME: fcmp
              // PHI is handled specially.
              INST(Freeze, Freeze), INST(Call, Call),
              // FIXME: select
              // FIXME: vaarg
              // FIXME: extractelement
              // FIXME: insertelement
              // FIXME: shufflevector
              // FIXME: extractvalue
              // FIXME: insertvalue
              // FIXME: landingpad
          };
        Ответить
        • обратите внимание на коменты :)
          Ответить
        • Да уж... А как шланг тогда работает? У него своя реализация этих опкодов, а в общей либе её нету?
          Ответить
          • ну да.. clang себе сами все сделали .. а тем кто юзает MLIR там этого не реализовали.. типа а кому оно надо.. приходиться самому добавлять "проход кода" для патчинга такой лажи
            Ответить
        • INST(Xor, XOr)

          Как они запоминают, для чего у них Xor, а для чего XOr?
          Ответить
          • Опечатка видимо. Увековеченная для совместимости.
            Ответить
            • не это комманды для разных неймспейсов :)
              Ответить
      • так что пришлошь патчить LLVM самому
        Ответить
    • показать все, что скрытоНет необходимости плюсовать вне оффтопов - так уж и быть, амнистирую нарушителей.
      Ответить

    Добавить комментарий