| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // ------------------------------------------------------------------- | 5 // ------------------------------------------------------------------- |
| 6 | 6 |
| 7 var kMessages = { | 7 var kMessages = { |
| 8 // Error | 8 // Error |
| 9 cyclic_proto: ["Cyclic __proto__ value"], | 9 cyclic_proto: ["Cyclic __proto__ value"], |
| 10 code_gen_from_strings: ["%0"], | 10 code_gen_from_strings: ["%0"], |
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 return MakeGenericError($ReferenceError, type, [arg]); | 403 return MakeGenericError($ReferenceError, type, [arg]); |
| 404 } | 404 } |
| 405 | 405 |
| 406 /** | 406 /** |
| 407 * Find a line number given a specific source position. | 407 * Find a line number given a specific source position. |
| 408 * @param {number} position The source position. | 408 * @param {number} position The source position. |
| 409 * @return {number} 0 if input too small, -1 if input too large, | 409 * @return {number} 0 if input too small, -1 if input too large, |
| 410 else the line number. | 410 else the line number. |
| 411 */ | 411 */ |
| 412 function ScriptLineFromPosition(position) { | 412 function ScriptLineFromPosition(position) { |
| 413 var lower = 0; |
| 414 var upper = this.lineCount() - 1; |
| 413 var line_ends = this.line_ends; | 415 var line_ends = this.line_ends; |
| 414 var upper = line_ends.length - 1; | |
| 415 if (upper < 0) return -1; | |
| 416 | 416 |
| 417 // We'll never find invalid positions so bail right away. | 417 // We'll never find invalid positions so bail right away. |
| 418 if (position > line_ends[upper]) return -1; | 418 if (position > line_ends[upper]) { |
| 419 if (position <= line_ends[0]) return 0; | 419 return -1; |
| 420 } |
| 420 | 421 |
| 421 var lower = 1; | 422 // This means we don't have to safe-guard indexing line_ends[i - 1]. |
| 422 // Binary search. | 423 if (position <= line_ends[0]) { |
| 423 while (true) { | 424 return 0; |
| 424 var mid = (upper + lower) >> 1; | 425 } |
| 425 if (position <= line_ends[mid - 1]) { | 426 |
| 426 upper = mid - 1; | 427 // Binary search to find line # from position range. |
| 427 } else if (position > line_ends[mid]){ | 428 while (upper >= 1) { |
| 428 lower = mid + 1; | 429 var i = (lower + upper) >> 1; |
| 430 |
| 431 if (position > line_ends[i]) { |
| 432 lower = i + 1; |
| 433 } else if (position <= line_ends[i - 1]) { |
| 434 upper = i - 1; |
| 429 } else { | 435 } else { |
| 430 return mid; | 436 return i; |
| 431 } | 437 } |
| 432 } | 438 } |
| 439 |
| 440 return -1; |
| 433 } | 441 } |
| 434 | 442 |
| 435 /** | 443 /** |
| 436 * Get information on a specific source position. | 444 * Get information on a specific source position. |
| 437 * @param {number} position The source position | 445 * @param {number} position The source position |
| 438 * @param {boolean} include_resource_offset Set to true to have the resource | 446 * @param {boolean} include_resource_offset Set to true to have the resource |
| 439 * offset added to the location | 447 * offset added to the location |
| 440 * @return {SourceLocation} | 448 * @return {SourceLocation} |
| 441 * If line is negative or not in the source null is returned. | 449 * If line is negative or not in the source null is returned. |
| 442 */ | 450 */ |
| (...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1269 function SetUpStackOverflowBoilerplate() { | 1277 function SetUpStackOverflowBoilerplate() { |
| 1270 var boilerplate = MakeRangeError('stack_overflow', []); | 1278 var boilerplate = MakeRangeError('stack_overflow', []); |
| 1271 | 1279 |
| 1272 %DefineAccessorPropertyUnchecked( | 1280 %DefineAccessorPropertyUnchecked( |
| 1273 boilerplate, 'stack', StackTraceGetter, StackTraceSetter, DONT_ENUM); | 1281 boilerplate, 'stack', StackTraceGetter, StackTraceSetter, DONT_ENUM); |
| 1274 | 1282 |
| 1275 return boilerplate; | 1283 return boilerplate; |
| 1276 } | 1284 } |
| 1277 | 1285 |
| 1278 var kStackOverflowBoilerplate = SetUpStackOverflowBoilerplate(); | 1286 var kStackOverflowBoilerplate = SetUpStackOverflowBoilerplate(); |
| OLD | NEW |