GithubHelp home page GithubHelp logo

Comments (4)

leibnitz27 avatar leibnitz27 commented on July 18, 2024 1

This is (partially) handled in InstanceConstants

Map<Object, Expression> visibleInstanceConstants = ConstantLinks.getVisibleInstanceConstants(thisType, refSearchType, b, state);

However, while it's a 'nice' thing, it tends to lead to completely confusing code in all but the most obvious cases; it's been a while so I may be mis remembering, but GUI code in particular uses a lot of magic constants , so the code to do this is very pessimistic. ( while a false negative is annoying, a false positive is downright confusing ).

from cfr.

wodin avatar wodin commented on July 18, 2024

The name of the constant is not stored in the constant pool in the bytecode. The disassembled code looks like this:

     419: aload_0
     420: dload         23
     422: ldc2_w        #117                // double 1.6777216E7d
     425: dmul
     426: invokestatic  #66                 // Method org/bukkit/util/NumberConversions.floor:(D)I
     429: putfield      #119                // Field secondError:I

So it's just fetching the value stored at index 117 in the constant pool and pushing it onto the stack. There's no name associated with that value.

So the best CFR would be able to do is guess that it's the same as the gridSize constant. Is that what you're proposing?

from cfr.

DecompExplorer avatar DecompExplorer commented on July 18, 2024

The name of the constant is not stored in the constant pool in the bytecode. The disassembled code looks like this:

     419: aload_0
     420: dload         23
     422: ldc2_w        #117                // double 1.6777216E7d
     425: dmul
     426: invokestatic  #66                 // Method org/bukkit/util/NumberConversions.floor:(D)I
     429: putfield      #119                // Field secondError:I

So it's just fetching the value stored at index 117 in the constant pool and pushing it onto the stack. There's no name associated with that value.

So the best CFR would be able to do is guess that it's the same as the gridSize constant. Is that what you're proposing?

Yes, that's what I'm proposing. Thank you for clarifying that!

from cfr.

DecompExplorer avatar DecompExplorer commented on July 18, 2024

This is (partially) handled in InstanceConstants

Map<Object, Expression> visibleInstanceConstants = ConstantLinks.getVisibleInstanceConstants(thisType, refSearchType, b, state);

However, while it's a 'nice' thing, it tends to lead to completely confusing code in all but the most obvious cases; it's been a while so I may be mis remembering, but GUI code in particular uses a lot of magic constants , so the code to do this is very pessimistic. ( while a false negative is annoying, a false positive is downright confusing ).

Thank you for your explanation.

from cfr.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.