Merge V8 5.4.500.40
Test: Manual - built & ran d8
Change-Id: I4edfa2853d3e565b729723645395688ece3193f4
diff --git a/src/codegen.cc b/src/codegen.cc
index 4597ae2..e47db10 100644
--- a/src/codegen.cc
+++ b/src/codegen.cc
@@ -7,10 +7,14 @@
#if defined(V8_OS_AIX)
#include <fenv.h> // NOLINT(build/c++11)
#endif
+
+#include <memory>
+
#include "src/ast/prettyprinter.h"
#include "src/bootstrapper.h"
#include "src/compiler.h"
#include "src/debug/debug.h"
+#include "src/eh-frame.h"
#include "src/parsing/parser.h"
#include "src/runtime/runtime.h"
@@ -84,32 +88,24 @@
void CodeGenerator::MakeCodePrologue(CompilationInfo* info, const char* kind) {
- bool print_source = false;
bool print_ast = false;
const char* ftype;
if (info->isolate()->bootstrapper()->IsActive()) {
- print_source = FLAG_print_builtin_source;
print_ast = FLAG_print_builtin_ast;
ftype = "builtin";
} else {
- print_source = FLAG_print_source;
print_ast = FLAG_print_ast;
ftype = "user-defined";
}
- if (FLAG_trace_codegen || print_source || print_ast) {
- base::SmartArrayPointer<char> name = info->GetDebugName();
+ if (FLAG_trace_codegen || print_ast) {
+ std::unique_ptr<char[]> name = info->GetDebugName();
PrintF("[generating %s code for %s function: %s]\n", kind, ftype,
name.get());
}
#ifdef DEBUG
- if (info->parse_info() && print_source) {
- PrintF("--- Source from AST ---\n%s\n",
- PrettyPrinter(info->isolate()).PrintProgram(info->literal()));
- }
-
if (info->parse_info() && print_ast) {
PrintF("--- AST ---\n%s\n",
AstPrinter(info->isolate()).PrintProgram(info->literal()));
@@ -117,9 +113,10 @@
#endif // DEBUG
}
-
Handle<Code> CodeGenerator::MakeCodeEpilogue(MacroAssembler* masm,
- CompilationInfo* info) {
+ EhFrameWriter* eh_frame_writer,
+ CompilationInfo* info,
+ Handle<Object> self_reference) {
Isolate* isolate = info->isolate();
// Allocate and install the code.
@@ -129,11 +126,11 @@
Code::ExtractKindFromFlags(flags) == Code::OPTIMIZED_FUNCTION ||
info->IsStub();
masm->GetCode(&desc);
- Handle<Code> code =
- isolate->factory()->NewCode(desc, flags, masm->CodeObject(),
- false, is_crankshafted,
- info->prologue_offset(),
- info->is_debug() && !is_crankshafted);
+ if (eh_frame_writer) eh_frame_writer->GetEhFrame(&desc);
+
+ Handle<Code> code = isolate->factory()->NewCode(
+ desc, flags, self_reference, false, is_crankshafted,
+ info->prologue_offset(), info->is_debug() && !is_crankshafted);
isolate->counters()->total_compiled_code_size()->Increment(
code->instruction_size());
isolate->heap()->IncrementCodeGeneratedBytes(is_crankshafted,
@@ -152,7 +149,7 @@
: (FLAG_print_code || (info->IsStub() && FLAG_print_code_stubs) ||
(info->IsOptimizing() && FLAG_print_opt_code));
if (print_code) {
- base::SmartArrayPointer<char> debug_name = info->GetDebugName();
+ std::unique_ptr<char[]> debug_name = info->GetDebugName();
CodeTracer::Scope tracing_scope(info->isolate()->GetCodeTracer());
OFStream os(tracing_scope.file());