RFR: replace stdout by configurable object [v16]
Leonid Kuskov
lkuskov at openjdk.org
Tue Oct 18 02:39:16 UTC 2022
On Mon, 17 Oct 2022 12:54:11 GMT, Jiří Vaněk <jvanek at openjdk.org> wrote:
>> See https://github.com/openjdk/asmtools/pull/38 for full story
>> The PR will be enhanced by handling of two streams in compiler logger. Then the stdout work can continue.
>
> Jiří Vaněk has updated the pull request incrementally with one additional commit since the last revision:
>
> Temporary workaround around tests being order-sensitive
>
> As -g is now making some disassmebld code not asemble-able back, and
> order of tests is not deterministic, and Options are static, thus if -g
> is now set in some test, it is not unset in other tests.
>
> Real fix is to move Options out of static context to context of
> environment as it is done for jcoder.
I like your updates, everything looks good. I've checked your changes they didn't cause any regression in what I was able to test.
> refactor ToolsInput/Output interfaces with many inner classes to separate pkg
`Agreed`
> adjust readme.md which will describe library-like usage
👍
>if you would agree, then rename four Main classes to match what they are Main of eg jasm.Main -> jasm.JasmMain - it is super easy to call wrong main.
`Doesn't work - there are few references that can't be updated`
>get rid of dual stream logging? Now when I see the intnetional usage between trace/log maybe it canbe usefull to keep it in. But on the other side, it is confusing.
`Let's keep it in`
> use uEscWriter as currentClass wrapper??
Much better to use uEscWriter
Concerning my changes - I've added couple new methods into Main classes to keep asmtools working with some old staff. And right now I'm fixing constructions like this one that jasm is losing during decoding:
`
0: ldc #1; // Dynamic REF_invokeStatic:Method cpldyn00105m013.method20:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":
// name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method19:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method18:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method17:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method16:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method15:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method14:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method13:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method12:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method11:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method10:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method9:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method8:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method7:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method6:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method5:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method4:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method3:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method2:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method1:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// Dynamic REF_invokeStatic:Method cpldyn00105m013.method20:"(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)I":name:"I" {
// String "foo-bar"
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
`
-------------
PR: https://git.openjdk.org/asmtools/pull/44
More information about the asmtools-dev
mailing list