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);