OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
526 static void CheckCodeForUnsafeLiteral(Handle<JSFunction> f) { | 526 static void CheckCodeForUnsafeLiteral(Handle<JSFunction> f) { |
527 // Create a disassembler with default name lookup. | 527 // Create a disassembler with default name lookup. |
528 disasm::NameConverter name_converter; | 528 disasm::NameConverter name_converter; |
529 disasm::Disassembler d(name_converter); | 529 disasm::Disassembler d(name_converter); |
530 | 530 |
531 if (f->code()->kind() == Code::FUNCTION) { | 531 if (f->code()->kind() == Code::FUNCTION) { |
532 Address pc = f->code()->instruction_start(); | 532 Address pc = f->code()->instruction_start(); |
533 int decode_size = | 533 int decode_size = |
534 Min(f->code()->instruction_size(), | 534 Min(f->code()->instruction_size(), |
535 static_cast<int>(f->code()->back_edge_table_offset())); | 535 static_cast<int>(f->code()->back_edge_table_offset())); |
| 536 if (FLAG_enable_embedded_constant_pool) { |
| 537 decode_size = Min(decode_size, f->code()->constant_pool_offset()); |
| 538 } |
536 Address end = pc + decode_size; | 539 Address end = pc + decode_size; |
537 | 540 |
538 v8::internal::EmbeddedVector<char, 128> decode_buffer; | 541 v8::internal::EmbeddedVector<char, 128> decode_buffer; |
539 v8::internal::EmbeddedVector<char, 128> smi_hex_buffer; | 542 v8::internal::EmbeddedVector<char, 128> smi_hex_buffer; |
540 Smi* smi = Smi::FromInt(12345678); | 543 Smi* smi = Smi::FromInt(12345678); |
541 SNPrintF(smi_hex_buffer, "0x%" V8PRIxPTR, reinterpret_cast<intptr_t>(smi)); | 544 SNPrintF(smi_hex_buffer, "0x%" V8PRIxPTR, reinterpret_cast<intptr_t>(smi)); |
542 while (pc < end) { | 545 while (pc < end) { |
543 int num_const = d.ConstantPoolSizeAt(pc); | 546 int num_const = d.ConstantPoolSizeAt(pc); |
544 if (num_const >= 0) { | 547 if (num_const >= 0) { |
545 pc += (num_const + 1) * kPointerSize; | 548 pc += (num_const + 1) * kPointerSize; |
(...skipping 13 matching lines...) Expand all Loading... |
559 CompileRun("function f() { a = 12345678 }; f();"); | 562 CompileRun("function f() { a = 12345678 }; f();"); |
560 CheckCodeForUnsafeLiteral(GetJSFunction(context->Global(), "f")); | 563 CheckCodeForUnsafeLiteral(GetJSFunction(context->Global(), "f")); |
561 CompileRun("function f(x) { a = 12345678 + x}; f(1);"); | 564 CompileRun("function f(x) { a = 12345678 + x}; f(1);"); |
562 CheckCodeForUnsafeLiteral(GetJSFunction(context->Global(), "f")); | 565 CheckCodeForUnsafeLiteral(GetJSFunction(context->Global(), "f")); |
563 CompileRun("function f(x) { var arguments = 1; x += 12345678}; f(1);"); | 566 CompileRun("function f(x) { var arguments = 1; x += 12345678}; f(1);"); |
564 CheckCodeForUnsafeLiteral(GetJSFunction(context->Global(), "f")); | 567 CheckCodeForUnsafeLiteral(GetJSFunction(context->Global(), "f")); |
565 CompileRun("function f(x) { var arguments = 1; x = 12345678}; f(1);"); | 568 CompileRun("function f(x) { var arguments = 1; x = 12345678}; f(1);"); |
566 CheckCodeForUnsafeLiteral(GetJSFunction(context->Global(), "f")); | 569 CheckCodeForUnsafeLiteral(GetJSFunction(context->Global(), "f")); |
567 } | 570 } |
568 #endif | 571 #endif |
OLD | NEW |