1 /* 2 * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /** 25 * JDK-8078049: Nashorn crashes when attempting to start the new tsc.js compiler for TypeScript 26 * 27 * @test 28 * @run 29 * @fork 30 * @option -Dnashorn.debug=true 31 */ 32 33 var m = 1; 34 35 var fields = { 36 p0: { code: 0, category: m }, 37 p1: { code: 1, category: m }, 38 p2: { code: 2, category: m } 39 }; 40 41 var spill = { 42 p0: { code: 0, category: m }, 43 p1: { code: 1, category: m }, 44 p2: { code: 2, category: m }, 45 p3: { code: 3, category: m }, 46 p4: { code: 4, category: m }, 47 p5: { code: 5, category: m }, 48 p6: { code: 6, category: m }, 49 p7: { code: 7, category: m }, 50 p8: { code: 8, category: m }, 51 p9: { code: 9, category: m }, 52 p10: { code: 10, category: m }, 53 p11: { code: 11, category: m }, 54 p12: { code: 12, category: m }, 55 p13: { code: 13, category: m }, 56 p14: { code: 14, category: m }, 57 p15: { code: 15, category: m }, 58 p16: { code: 16, category: m }, 59 p17: { code: 17, category: m }, 60 p18: { code: 18, category: m }, 61 p19: { code: 19, category: m }, 62 p20: { code: 20, category: m }, 63 p21: { code: 21, category: m }, 64 p22: { code: 22, category: m }, 65 p23: { code: 23, category: m }, 66 p24: { code: 24, category: m }, 67 p25: { code: 25, category: m }, 68 p26: { code: 26, category: m }, 69 p27: { code: 27, category: m }, 70 p28: { code: 28, category: m }, 71 p29: { code: 29, category: m }, 72 p30: { code: 30, category: m }, 73 p31: { code: 31, category: m }, 74 p32: { code: 32, category: m }, 75 p33: { code: 33, category: m }, 76 p34: { code: 34, category: m }, 77 p35: { code: 35, category: m }, 78 p36: { code: 36, category: m }, 79 p37: { code: 37, category: m }, 80 p38: { code: 38, category: m }, 81 p39: { code: 39, category: m }, 82 p40: { code: 40, category: m }, 83 p41: { code: 41, category: m }, 84 p42: { code: 42, category: m }, 85 p43: { code: 43, category: m }, 86 p44: { code: 44, category: m }, 87 p45: { code: 45, category: m }, 88 p46: { code: 46, category: m }, 89 p47: { code: 47, category: m }, 90 p48: { code: 48, category: m }, 91 p49: { code: 49, category: m }, 92 p50: { code: 50, category: m }, 93 p51: { code: 51, category: m }, 94 p52: { code: 52, category: m }, 95 p53: { code: 53, category: m }, 96 p54: { code: 54, category: m }, 97 p55: { code: 55, category: m }, 98 p56: { code: 56, category: m }, 99 p57: { code: 57, category: m }, 100 p58: { code: 58, category: m }, 101 p59: { code: 59, category: m }, 102 p60: { code: 60, category: m }, 103 p61: { code: 61, category: m }, 104 p62: { code: 62, category: m }, 105 p63: { code: 63, category: m }, 106 p64: { code: 64, category: m }, 107 p65: { code: 65, category: m }, 108 p66: { code: 66, category: m }, 109 p67: { code: 67, category: m }, 110 p68: { code: 68, category: m }, 111 p69: { code: 69, category: m }, 112 p70: { code: 70, category: m }, 113 p71: { code: 71, category: m }, 114 p72: { code: 72, category: m }, 115 p73: { code: 73, category: m }, 116 p74: { code: 74, category: m }, 117 p75: { code: 75, category: m }, 118 p76: { code: 76, category: m }, 119 p77: { code: 77, category: m }, 120 p78: { code: 78, category: m }, 121 p79: { code: 79, category: m }, 122 p80: { code: 80, category: m }, 123 p81: { code: 81, category: m }, 124 p82: { code: 82, category: m }, 125 p83: { code: 83, category: m }, 126 p84: { code: 84, category: m }, 127 p85: { code: 85, category: m }, 128 p86: { code: 86, category: m }, 129 p87: { code: 87, category: m }, 130 p88: { code: 88, category: m }, 131 p89: { code: 89, category: m }, 132 p90: { code: 90, category: m }, 133 p91: { code: 91, category: m }, 134 p92: { code: 92, category: m }, 135 p93: { code: 93, category: m }, 136 p94: { code: 94, category: m }, 137 p95: { code: 95, category: m }, 138 p96: { code: 96, category: m }, 139 p97: { code: 97, category: m }, 140 p98: { code: 98, category: m }, 141 p99: { code: 99, category: m }, 142 p100: { code: 100, category: m }, 143 p101: { code: 101, category: m }, 144 p102: { code: 102, category: m }, 145 p103: { code: 103, category: m }, 146 p104: { code: 104, category: m }, 147 p105: { code: 105, category: m }, 148 p106: { code: 106, category: m }, 149 p107: { code: 107, category: m }, 150 p108: { code: 108, category: m }, 151 p109: { code: 109, category: m }, 152 p110: { code: 110, category: m }, 153 p111: { code: 111, category: m }, 154 p112: { code: 112, category: m }, 155 p113: { code: 113, category: m }, 156 p114: { code: 114, category: m }, 157 p115: { code: 115, category: m }, 158 p116: { code: 116, category: m }, 159 p117: { code: 117, category: m }, 160 p118: { code: 118, category: m }, 161 p119: { code: 119, category: m }, 162 p120: { code: 120, category: m }, 163 p121: { code: 121, category: m }, 164 p122: { code: 122, category: m }, 165 p123: { code: 123, category: m }, 166 p124: { code: 124, category: m }, 167 p125: { code: 125, category: m }, 168 p126: { code: 126, category: m }, 169 p127: { code: 127, category: m }, 170 p128: { code: 128, category: m }, 171 p129: { code: 129, category: m }, 172 p130: { code: 130, category: m }, 173 p131: { code: 131, category: m }, 174 p132: { code: 132, category: m }, 175 p133: { code: 133, category: m }, 176 p134: { code: 134, category: m }, 177 p135: { code: 135, category: m }, 178 p136: { code: 136, category: m }, 179 p137: { code: 137, category: m }, 180 p138: { code: 138, category: m }, 181 p139: { code: 139, category: m }, 182 p140: { code: 140, category: m }, 183 p141: { code: 141, category: m }, 184 p142: { code: 142, category: m }, 185 p143: { code: 143, category: m }, 186 p144: { code: 144, category: m }, 187 p145: { code: 145, category: m }, 188 p146: { code: 146, category: m }, 189 p147: { code: 147, category: m }, 190 p148: { code: 148, category: m }, 191 p149: { code: 149, category: m }, 192 p150: { code: 150, category: m }, 193 p151: { code: 151, category: m }, 194 p152: { code: 152, category: m }, 195 p153: { code: 153, category: m }, 196 p154: { code: 154, category: m }, 197 p155: { code: 155, category: m }, 198 p156: { code: 156, category: m }, 199 p157: { code: 157, category: m }, 200 p158: { code: 158, category: m }, 201 p159: { code: 159, category: m }, 202 p160: { code: 160, category: m }, 203 p161: { code: 161, category: m }, 204 p162: { code: 162, category: m }, 205 p163: { code: 163, category: m }, 206 p164: { code: 164, category: m }, 207 p165: { code: 165, category: m }, 208 p166: { code: 166, category: m }, 209 p167: { code: 167, category: m }, 210 p168: { code: 168, category: m }, 211 p169: { code: 169, category: m }, 212 p170: { code: 170, category: m }, 213 p171: { code: 171, category: m }, 214 p172: { code: 172, category: m }, 215 p173: { code: 173, category: m }, 216 p174: { code: 174, category: m }, 217 p175: { code: 175, category: m }, 218 p176: { code: 176, category: m }, 219 p177: { code: 177, category: m }, 220 p178: { code: 178, category: m }, 221 p179: { code: 179, category: m }, 222 p180: { code: 180, category: m }, 223 p181: { code: 181, category: m }, 224 p182: { code: 182, category: m }, 225 p183: { code: 183, category: m }, 226 p184: { code: 184, category: m }, 227 p185: { code: 185, category: m }, 228 p186: { code: 186, category: m }, 229 p187: { code: 187, category: m }, 230 p188: { code: 188, category: m }, 231 p189: { code: 189, category: m }, 232 p190: { code: 190, category: m }, 233 p191: { code: 191, category: m }, 234 p192: { code: 192, category: m }, 235 p193: { code: 193, category: m }, 236 p194: { code: 194, category: m }, 237 p195: { code: 195, category: m }, 238 p196: { code: 196, category: m }, 239 p197: { code: 197, category: m }, 240 p198: { code: 198, category: m }, 241 p199: { code: 199, category: m }, 242 p200: { code: 200, category: m }, 243 p201: { code: 201, category: m }, 244 p202: { code: 202, category: m }, 245 p203: { code: 203, category: m }, 246 p204: { code: 204, category: m }, 247 p205: { code: 205, category: m }, 248 p206: { code: 206, category: m }, 249 p207: { code: 207, category: m }, 250 p208: { code: 208, category: m }, 251 p209: { code: 209, category: m }, 252 p210: { code: 210, category: m }, 253 p211: { code: 211, category: m }, 254 p212: { code: 212, category: m }, 255 p213: { code: 213, category: m }, 256 p214: { code: 214, category: m }, 257 p215: { code: 215, category: m }, 258 p216: { code: 216, category: m }, 259 p217: { code: 217, category: m }, 260 p218: { code: 218, category: m }, 261 p219: { code: 219, category: m }, 262 p220: { code: 220, category: m }, 263 p221: { code: 221, category: m }, 264 p222: { code: 222, category: m }, 265 p223: { code: 223, category: m }, 266 p224: { code: 224, category: m }, 267 p225: { code: 225, category: m }, 268 p226: { code: 226, category: m }, 269 p227: { code: 227, category: m }, 270 p228: { code: 228, category: m }, 271 p229: { code: 229, category: m }, 272 p230: { code: 230, category: m }, 273 p231: { code: 231, category: m }, 274 p232: { code: 232, category: m }, 275 p233: { code: 233, category: m }, 276 p234: { code: 234, category: m }, 277 p235: { code: 235, category: m }, 278 p236: { code: 236, category: m }, 279 p237: { code: 237, category: m }, 280 p238: { code: 238, category: m }, 281 p239: { code: 239, category: m }, 282 p240: { code: 240, category: m }, 283 p241: { code: 241, category: m }, 284 p242: { code: 242, category: m }, 285 p243: { code: 243, category: m }, 286 p244: { code: 244, category: m }, 287 p245: { code: 245, category: m }, 288 p246: { code: 246, category: m }, 289 p247: { code: 247, category: m }, 290 p248: { code: 248, category: m }, 291 p249: { code: 249, category: m }, 292 p250: { code: 250, category: m }, 293 p251: { code: 251, category: m }, 294 p252: { code: 252, category: m }, 295 p253: { code: 253, category: m }, 296 p254: { code: 254, category: m }, 297 p255: { code: 255, category: m }, 298 p256: { code: 256, category: m }, 299 p257: { code: 257, category: m }, 300 p258: { code: 258, category: m }, 301 p259: { code: 259, category: m }, 302 p260: { code: 260, category: m }, 303 p261: { code: 261, category: m }, 304 p262: { code: 262, category: m }, 305 p263: { code: 263, category: m }, 306 p264: { code: 264, category: m }, 307 p265: { code: 265, category: m }, 308 p266: { code: 266, category: m }, 309 p267: { code: 267, category: m }, 310 p268: { code: 268, category: m }, 311 p269: { code: 269, category: m }, 312 p270: { code: 270, category: m }, 313 p271: { code: 271, category: m }, 314 p272: { code: 272, category: m }, 315 p273: { code: 273, category: m }, 316 p274: { code: 274, category: m }, 317 p275: { code: 275, category: m }, 318 p276: { code: 276, category: m }, 319 p277: { code: 277, category: m }, 320 p278: { code: 278, category: m }, 321 p279: { code: 279, category: m }, 322 p280: { code: 280, category: m }, 323 p281: { code: 281, category: m }, 324 p282: { code: 282, category: m }, 325 p283: { code: 283, category: m }, 326 p284: { code: 284, category: m }, 327 p285: { code: 285, category: m }, 328 p286: { code: 286, category: m }, 329 p287: { code: 287, category: m }, 330 p288: { code: 288, category: m }, 331 p289: { code: 289, category: m }, 332 p290: { code: 290, category: m }, 333 p291: { code: 291, category: m }, 334 p292: { code: 292, category: m }, 335 p293: { code: 293, category: m }, 336 p294: { code: 294, category: m }, 337 p295: { code: 295, category: m }, 338 p296: { code: 296, category: m }, 339 p297: { code: 297, category: m }, 340 p298: { code: 298, category: m }, 341 p299: { code: 299, category: m }, 342 p300: { code: 300, category: m }, 343 p301: { code: 301, category: m }, 344 p302: { code: 302, category: m }, 345 p303: { code: 303, category: m }, 346 p304: { code: 304, category: m }, 347 p305: { code: 305, category: m }, 348 p306: { code: 306, category: m }, 349 p307: { code: 307, category: m }, 350 p308: { code: 308, category: m }, 351 p309: { code: 309, category: m }, 352 p310: { code: 310, category: m }, 353 p311: { code: 311, category: m }, 354 p312: { code: 312, category: m }, 355 p313: { code: 313, category: m }, 356 p314: { code: 314, category: m }, 357 p315: { code: 315, category: m }, 358 p316: { code: 316, category: m }, 359 p317: { code: 317, category: m }, 360 p318: { code: 318, category: m }, 361 p319: { code: 319, category: m }, 362 p320: { code: 320, category: m }, 363 p321: { code: 321, category: m }, 364 p322: { code: 322, category: m }, 365 p323: { code: 323, category: m }, 366 p324: { code: 324, category: m }, 367 p325: { code: 325, category: m }, 368 p326: { code: 326, category: m }, 369 p327: { code: 327, category: m }, 370 p328: { code: 328, category: m }, 371 p329: { code: 329, category: m }, 372 p330: { code: 330, category: m }, 373 p331: { code: 331, category: m }, 374 p332: { code: 332, category: m }, 375 p333: { code: 333, category: m }, 376 p334: { code: 334, category: m }, 377 p335: { code: 335, category: m }, 378 p336: { code: 336, category: m }, 379 p337: { code: 337, category: m }, 380 p338: { code: 338, category: m }, 381 p339: { code: 339, category: m }, 382 p340: { code: 340, category: m }, 383 p341: { code: 341, category: m }, 384 p342: { code: 342, category: m }, 385 p343: { code: 343, category: m }, 386 p344: { code: 344, category: m }, 387 p345: { code: 345, category: m }, 388 p346: { code: 346, category: m }, 389 p347: { code: 347, category: m }, 390 p348: { code: 348, category: m }, 391 p349: { code: 349, category: m }, 392 p350: { code: 350, category: m }, 393 p351: { code: 351, category: m }, 394 p352: { code: 352, category: m }, 395 p353: { code: 353, category: m }, 396 p354: { code: 354, category: m }, 397 p355: { code: 355, category: m }, 398 p356: { code: 356, category: m }, 399 p357: { code: 357, category: m }, 400 p358: { code: 358, category: m }, 401 p359: { code: 359, category: m }, 402 p360: { code: 360, category: m }, 403 p361: { code: 361, category: m }, 404 p362: { code: 362, category: m }, 405 p363: { code: 363, category: m }, 406 p364: { code: 364, category: m }, 407 p365: { code: 365, category: m }, 408 p366: { code: 366, category: m }, 409 p367: { code: 367, category: m }, 410 p368: { code: 368, category: m }, 411 p369: { code: 369, category: m }, 412 p370: { code: 370, category: m }, 413 p371: { code: 371, category: m }, 414 p372: { code: 372, category: m }, 415 p373: { code: 373, category: m }, 416 p374: { code: 374, category: m }, 417 p375: { code: 375, category: m }, 418 p376: { code: 376, category: m }, 419 p377: { code: 377, category: m }, 420 p378: { code: 378, category: m }, 421 p379: { code: 379, category: m }, 422 p380: { code: 380, category: m }, 423 p381: { code: 381, category: m }, 424 p382: { code: 382, category: m }, 425 p383: { code: 383, category: m }, 426 p384: { code: 384, category: m }, 427 p385: { code: 385, category: m }, 428 p386: { code: 386, category: m }, 429 p387: { code: 387, category: m }, 430 p388: { code: 388, category: m }, 431 p389: { code: 389, category: m }, 432 p390: { code: 390, category: m }, 433 p391: { code: 391, category: m }, 434 p392: { code: 392, category: m }, 435 p393: { code: 393, category: m }, 436 p394: { code: 394, category: m }, 437 p395: { code: 395, category: m }, 438 p396: { code: 396, category: m }, 439 p397: { code: 397, category: m }, 440 p398: { code: 398, category: m }, 441 p399: { code: 399, category: m }, 442 p400: { code: 400, category: m }, 443 p401: { code: 401, category: m }, 444 p402: { code: 402, category: m }, 445 p403: { code: 403, category: m }, 446 p404: { code: 404, category: m }, 447 p405: { code: 405, category: m }, 448 p406: { code: 406, category: m }, 449 p407: { code: 407, category: m }, 450 p408: { code: 408, category: m }, 451 p409: { code: 409, category: m }, 452 p410: { code: 410, category: m }, 453 p411: { code: 411, category: m }, 454 p412: { code: 412, category: m }, 455 p413: { code: 413, category: m }, 456 p414: { code: 414, category: m }, 457 p415: { code: 415, category: m }, 458 p416: { code: 416, category: m }, 459 p417: { code: 417, category: m }, 460 p418: { code: 418, category: m }, 461 p419: { code: 419, category: m }, 462 p420: { code: 420, category: m }, 463 p421: { code: 421, category: m }, 464 p422: { code: 422, category: m }, 465 p423: { code: 423, category: m }, 466 p424: { code: 424, category: m }, 467 p425: { code: 425, category: m }, 468 p426: { code: 426, category: m }, 469 p427: { code: 427, category: m }, 470 p428: { code: 428, category: m }, 471 p429: { code: 429, category: m }, 472 p430: { code: 430, category: m }, 473 p431: { code: 431, category: m }, 474 p432: { code: 432, category: m }, 475 p433: { code: 433, category: m }, 476 p434: { code: 434, category: m }, 477 p435: { code: 435, category: m }, 478 p436: { code: 436, category: m }, 479 p437: { code: 437, category: m }, 480 p438: { code: 438, category: m }, 481 p439: { code: 439, category: m }, 482 p440: { code: 440, category: m }, 483 p441: { code: 441, category: m }, 484 p442: { code: 442, category: m }, 485 p443: { code: 443, category: m }, 486 p444: { code: 444, category: m }, 487 p445: { code: 445, category: m }, 488 p446: { code: 446, category: m }, 489 p447: { code: 447, category: m }, 490 p448: { code: 448, category: m }, 491 p449: { code: 449, category: m }, 492 p450: { code: 450, category: m }, 493 p451: { code: 451, category: m }, 494 p452: { code: 452, category: m }, 495 p453: { code: 453, category: m }, 496 p454: { code: 454, category: m }, 497 p455: { code: 455, category: m }, 498 p456: { code: 456, category: m }, 499 p457: { code: 457, category: m }, 500 p458: { code: 458, category: m }, 501 p459: { code: 459, category: m }, 502 p460: { code: 460, category: m }, 503 p461: { code: 461, category: m }, 504 p462: { code: 462, category: m }, 505 p463: { code: 463, category: m }, 506 p464: { code: 464, category: m }, 507 p465: { code: 465, category: m }, 508 p466: { code: 466, category: m }, 509 p467: { code: 467, category: m }, 510 p468: { code: 468, category: m }, 511 p469: { code: 469, category: m }, 512 p470: { code: 470, category: m }, 513 p471: { code: 471, category: m }, 514 p472: { code: 472, category: m }, 515 p473: { code: 473, category: m }, 516 p474: { code: 474, category: m }, 517 p475: { code: 475, category: m }, 518 p476: { code: 476, category: m }, 519 p477: { code: 477, category: m }, 520 p478: { code: 478, category: m }, 521 p479: { code: 479, category: m }, 522 p480: { code: 480, category: m }, 523 p481: { code: 481, category: m }, 524 p482: { code: 482, category: m }, 525 p483: { code: 483, category: m }, 526 p484: { code: 484, category: m }, 527 p485: { code: 485, category: m }, 528 p486: { code: 486, category: m }, 529 p487: { code: 487, category: m }, 530 p488: { code: 488, category: m }, 531 p489: { code: 489, category: m }, 532 p490: { code: 490, category: m }, 533 p491: { code: 491, category: m }, 534 p492: { code: 492, category: m }, 535 p493: { code: 493, category: m }, 536 p494: { code: 494, category: m }, 537 p495: { code: 495, category: m }, 538 p496: { code: 496, category: m }, 539 p497: { code: 497, category: m }, 540 p498: { code: 498, category: m }, 541 p499: { code: 499, category: m } 542 }; 543 544 var AccessorProperty = Java.type("jdk.nashorn.internal.runtime.AccessorProperty"); 545 var SpillProperty = Java.type("jdk.nashorn.internal.runtime.SpillProperty"); 546 var PropertyMap = Java.type("jdk.nashorn.internal.runtime.PropertyMap"); 547 var findPropertyMethod = PropertyMap.class.getMethod("findProperty", java.lang.Object.class); 548 549 Assert.assertTrue(Object.keys(fields).length === 3); 550 Assert.assertTrue(findPropertyMethod.invoke(Debug.map(fields), "p0").getClass() === AccessorProperty.class); 551 Assert.assertTrue(findPropertyMethod.invoke(Debug.map(fields), "p2").getClass() === AccessorProperty.class); 552 553 Assert.assertTrue(Object.keys(spill).length === 500); 554 555 Assert.assertTrue(findPropertyMethod.invoke(Debug.map(spill), "p0").getClass() === SpillProperty.class); 556 Assert.assertTrue(findPropertyMethod.invoke(Debug.map(spill), "p499").getClass() === SpillProperty.class);