Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8024970

André Bargull's list on Sep 17, 2013

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P4
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: core-libs
    • Labels:
      None

      Description

      This is an umbrella bug. We've to file separate sub-tasks after analysis and combining issues (if needed).

      André Bargull reported these:

      StackOverFlowError in LambdaForm bootstrapping is annoying to handle:

      Test 1:
      jjs> function test() { try { test(); } catch(e) { throw e+""} }
      function test() { try { test(); } catch(e) { throw e+""} }
      jjs> try { test(); } catch (e) {e.printStackTrace()}
      java.lang.NoClassDefFoundError: Could not initialize class
      jdk.nashorn.internal.runtime.ConsString
      jjs> try {""+{}}catch(e){e.printStackTrace()}
      java.lang.NoClassDefFoundError: Could not initialize class
      jdk.nashorn.internal.runtime.ConsString

      Test 2:
      jjs> function test() { try { test(1,test(1)); } catch(e) { throw
      function(){throw e}()} }
      function test() { try { test(1,test(1)); } catch(e) { throw
      function(){throw e}()} }
      jjs> try { test(); } catch (e) {e}
      java.lang.BootstrapMethodError: call site initialization exception



      jjs> (function f(o){with(o){ }})()

      Expected: should have thrown TypeError


      jjs> (function(){ try{throw 0} catch(e){try { try {throw 1}catch(e){
      return e } } finally {print(e)}} })()

      Expected: 0 - 1
      Actual: 1 - 1


      jjs> (function(o){ try{with(o){return x}}finally{return x} })({x: 1})

      Expected: ReferenceError


      jjs> (function(){ eval("print('fail')", x) })()

      Expected: ReferenceError


      jjs> (function f(){return f; var f})()
      function f(){return f; var f}

      Expected: undefined


      jjs> (function f(){return eval("f")})()

      Expected: function f(){...}


      jjs> (function f(){return eval("f")})()
      jjs> (function f(){return function(){return eval("f")}()})()
      java.lang.ClassCastException: Cannot cast
      jdk.nashorn.internal.scripts.JO0P0 to jdk.nashorn.internal.scripts.JO1P0


      jjs> (function(x){var o={x:0}; with(o){delete x} return o.x})()

      Expected: undefined


      jjs> String.prototype[3] = "hello"; Object.prototype[4] = "world"; for
      (var i in "123")print(i)

      Expected: 0 1 2 3 4


      jjs> (function f(){var a,b; with(a={set x(v){print("fail")}})with(b={get
      x(){delete this.x; return 0}})x-=1; return b.x})()

      Expected: -1, don't print "fail"


      jjs> (function(global){"use strict";
      Object.defineProperty(global,"x",{get: function(){delete global.x;
      return 0}, configurable:true}); x-=1 })(this)

      Expected: global "x" is -1
      Actual: ReferenceError


      jjs> (function(global){"use strict";
      Object.defineProperty(global,"x",{get: function(){delete global.x;
      return 0}, configurable:true}); x-- })(this)

      Expected: global "x" is -1
      Actual: ReferenceError


      jjs> (function f(){ Object.defineProperty({},"x",{get: function(){return
      {valueOf:function(){throw 0}}}}).x -= Object.defineProperty({},"x",{get:
      function(){throw 1}}).x })()

      Expected: throws 1
      Actual: throws 0


      jjs> (function f(){ Object.defineProperty({},"x",{get: function(){return
      {valueOf:function(){throw 0}}}}).x - Object.defineProperty({},"x",{get:
      function(){throw 1}}).x })()

      Expected: throws 1
      Actual: throws 0


      jjs> (function f(){try{throw 0}catch(e){print(e); eval("var e=1");
      print(e); eval("delete e"); print(e)} print(e) })()

      Expected: 0 1 1 undefined
      Actual: 0 0 0 1


      jjs> describe = function(o,
      pk){print(JSON.stringify(Object.getOwnPropertyDescriptor(o,pk)))}
      function(o,
      pk){print(JSON.stringify(Object.getOwnPropertyDescriptor(o,pk)))}
      jjs> var x=0; eval("var y=0")
      jjs> describe(this,"x"); describe(this,"y")
      {"configurable":false,"enumerable":true,"writable":true,"value":0}
      {"configurable":false,"enumerable":true,"writable":true,"value":0}

      Expected: second property descriptor is configurable=true
      Actual: second property descriptor is configurable=false


      jjs> "use strict"; throw "not early"; delete x

      Expected: early SyntaxError (spec is a bit unclear here)


      jjs> (function(){var x; (function(){"use strict"; eval("delete x");
      })(); })()
      jjs> (function(){var x; (function(){ eval("delete x"); })(); })()

      Expected: Second expression should not throw SyntaxError
      Actual: SyntaxError from first expression also thrown in second expression


      jjs> ({valueOf: function(){throw 0}}) - ({valueOf: function(){throw 1}} - 1)

      Expected: throws 1
      Actual: throws 0


      jjs> (function f(){ if(0){var x}; return x })()

      Expected: returns undefined
      Actual: ReferenceError "x" is not defined


      jjs> function f(){ try{throw null}catch(e){return}finally{return e} var
      e; }; print(f())

      Expected: prints "undefined"
      Actual: prints "null"


      jjs> function f(){ try{throw null}catch(e){return}finally{} return 3; }; f()
      0
      jjs> function f(){ try{throw null}catch(e){return}finally{} return true;
      }; f()
      false
      jjs> function f(){ try{throw null}catch(e){return}finally{} return 2.1;
      }; f()
      NaN

      Expected: returns always "undefined"


      jjs> function f(){ do{do{break}while(0); return}while(0); }

      Expected: outer do-while's body is marked as terminal (inspect generated
      bytecode, dup of JDK-8012472?)

      jjs> function f(v){switch(v){case 0: case 1: return "zero-or-one";
      default: return "other"}}

      Expected: switch is marked as terminal (inspect generated bytecode)


      jjs> function f(v){switch(0){case 0: return "ups"; case false: return "aw"}}
      java.lang.ClassCastException: java.lang.Boolean cannot be cast to
      java.lang.Integer


      jjs> Object.defineProperty(this,"x",{value:0})
      [object global]
      jjs> eval("function x(){}")
      0

      Expected: Throw TypeError
      Actual: no TypeError

      jjs>
      Object.defineProperty(this,"x",{value:0,writable:true,enumerable:false})
      [object global]
      jjs> eval("function x(){}")
      function x(){}

      Expected: Throw TypeError
      Actual: no TypeError


      jjs> Object.defineProperty(this,"x",{set: function(v){print("fail")}})
      [object global]
      jjs> eval("function x(){}")
      function x(){}

      Expected: Throw TypeError
      Actual: prints "fail"


      jjs> (function f(v){switch(v|0){}})({valueOf: function(){throw 0}})

      Expected: throws 0
      Actual: no exception thrown

      Also: tableswitch never emitted for size < 4!


      jjs> (function(global){var x=1; with(global){eval("eval('var x=0')")}
      return x})(this)
      Expected: 0
      Actual: 1

      jjs> (function(global){var x=1; with({eval:
      global.eval}){eval("eval('var x=0')")} return x})(this)
      Expected: 0
      Actual: 1


      jjs> s = ""; for (i = 0; i < 1000; ++i) s+="o = new Object()\n";
      s+="g()"; try{eval("function f(){"+s+"}")()}catch(e){e.stack+""}

      Expected: $split method not present in stacktrace
      Actual: $split method in stacktrace


      jjs> 1/(new Date(1969, 8, 1)).getHours()

      (-Duser.timezone=America/Los_Angeles)
      Expected: Infinity
      Actual: -Infinity


      jjs> function RandomObject() { this.toString = function() { return
      (Math.random() * 100).toString(); } }
      jjs> for (var j=0; j <100; ++j) {var arr = []; for (var i = 0; i < 64;
      ++i) arr[i] = new RandomObject; arr.sort();}

      Expected: no IllegalArgumentException is thrown
      Actual: java.lang.IllegalArgumentException: Comparison method violates
      its general contract!


      jjs> x = "global"; (function(){eval("var x='local'"); delete x; return x})()
      local
      jjs> x = "global"; (function(){eval("var x='local'"); delete x; return x})()
      jjs>

      Expected: "global" "global"
      Actual: "local" -

        Attachments

          Issue Links

          There are no Sub-Tasks for this issue.

            Activity

              People

              • Assignee:
                jlaskey Jim Laskey
                Reporter:
                sundar Sundararajan Athijegannathan
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: