scala's StringBuilder and -XX:+OptimizeStringConcat

79 views
Skip to first unread message

Simon Ochsenreither

unread,
Sep 2, 2015, 1:13:19 PM9/2/15
to scala-internals
I worked a bit on https://groups.google.com/forum/#!topic/scala-language/AN2Ymk1J1ik

These are the changes I made until now: https://github.com/scala/scala/compare/scala:2.12.x...soc:SI-9315?expand=1

It seems like there is still some kind of hidden dependency which rears its head in the final class file, leading to a failure because scala.collection.mutable.StringBuilder != java.lang.StringBuilder:

quick.bin:

BUILD FAILED
/home/soc/Entwicklung/scala/build.xml:1118: The following error occurred while executing this line:
/home/soc/Entwicklung/scala/build-ant-macros.xml:330: The following error occurred while executing this line:
/home/soc/Entwicklung/scala/build-ant-macros.xml:337: java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    scala/tools/ant/ScalaTool.scala$tools$ant$ScalaTool$$$anonfun$2(Ljava/lang/String;Ljava/lang/String;)Lscala/collection/immutable/List; @98: invokevirtual
  Reason:
    Type 'scala/collection/mutable/StringBuilder' (current frame, stack[1]) is not assignable to 'java/lang/StringBuilder'
  Current Frame:
    bci: @98
    flags: { }
    locals: { 'scala/tools/ant/ScalaTool', 'java/lang/String', 'java/lang/String', 'java/lang/String' }
    stack: { 'scala/tools/ant/ScalaTool', 'scala/collection/mutable/StringBuilder', 'java/lang/String' }
  Bytecode:
    0x0000000: 2cb6 00e9 4e2a b602 422d b602 469a 0006
    0x0000010: a700 432b 12f1 3a04 59c6 0006 a700 0c57
    0x0000020: 1904 c600 2ba7 000e 1904 b601 8f9a 0020
    0x0000030: a700 03b2 00b5 b200 8104 bd00 8559 032d
    0x0000040: 53c0 008b b602 14b6 0249 a700 06b2 024e
    0x0000050: a700 222a bb01 9159 b701 9213 0250 b601
    0x0000060: 952d b601 9513 0252 b601 95b6 0196 b601
    0x0000070: d9bf b0                               
  Stackmap Table:
    append_frame(@19,Object[#133])
    full_frame(@31,{Object[#2],Object[#133],Object[#133],Object[#133],Object[#133]},{Object[#133]})
    same_locals_1_stack_item_frame(@40,Object[#133])
    same_frame(@51)
    same_frame(@77)
    same_locals_1_stack_item_frame(@80,Object[#187])
    chop_frame(@83,1)
    full_frame(@114,{Object[#2],Object[#133],Object[#133],Object[#133],Object[#133]},{Object[#187]})

    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:579)
    at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:237)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197)
    at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:154)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
    at org.apache.tools.ant.Main.runBuild(Main.java:851)
    at org.apache.tools.ant.Main.startAnt(Main.java:235)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Reply all
Reply to author
Forward
0 new messages