This page has a call to eval and a script tag on the same line. 

To run this test manually, load it in the browser then load the WebInspector and look at the profile. In the profile there should be multiple (program) elements and one that represents the eval().

Profile title: Two Execution Contexts on the same line
Thread_1 (no file) (line 0)
   startTest execution-context-and-eval-on-same-line.html (line 11)
      evalFunction (no file) (line 1)
         insertNewText profiler-test-JS-resources.js (line 17)
            createElement (no file) (line 0)
            createTextNode (no file) (line 0)
            appendChild (no file) (line 0)
            getElementById (no file) (line 0)
      endTest profiler-test-JS-resources.js (line 1)


