| Index: src/full-codegen/full-codegen.cc
|
| diff --git a/src/full-codegen/full-codegen.cc b/src/full-codegen/full-codegen.cc
|
| index d83a23b3f8f72810896634712042b74ed55ce498..d301433af5c2102a0704008f8a19d1e2626a645f 100644
|
| --- a/src/full-codegen/full-codegen.cc
|
| +++ b/src/full-codegen/full-codegen.cc
|
| @@ -25,7 +25,28 @@ namespace internal {
|
|
|
| #define __ ACCESS_MASM(masm())
|
|
|
| -bool FullCodeGenerator::MakeCode(CompilationInfo* info) {
|
| +class FullCodegenCompilationJob final : public CompilationJob {
|
| + public:
|
| + explicit FullCodegenCompilationJob(CompilationInfo* info)
|
| + : CompilationJob(info, "Full-Codegen") {}
|
| +
|
| + CompilationJob::Status PrepareJobImpl() final { return SUCCEEDED; }
|
| +
|
| + CompilationJob::Status ExecuteJobImpl() final { return SUCCEEDED; }
|
| +
|
| + CompilationJob::Status FinalizeJobImpl() final {
|
| + return FullCodeGenerator::MakeCode(info(), stack_limit()) ? SUCCEEDED
|
| + : FAILED;
|
| + }
|
| +};
|
| +
|
| +// static
|
| +CompilationJob* FullCodeGenerator::NewCompilationJob(CompilationInfo* info) {
|
| + return new FullCodegenCompilationJob(info);
|
| +}
|
| +
|
| +// static
|
| +bool FullCodeGenerator::MakeCode(CompilationInfo* info, uintptr_t stack_limit) {
|
| Isolate* isolate = info->isolate();
|
|
|
| DCHECK(!FLAG_minimal);
|
| @@ -47,7 +68,7 @@ bool FullCodeGenerator::MakeCode(CompilationInfo* info) {
|
| CodeObjectRequired::kYes);
|
| if (info->will_serialize()) masm.enable_serializer();
|
|
|
| - FullCodeGenerator cgen(&masm, info);
|
| + FullCodeGenerator cgen(&masm, info, stack_limit);
|
| cgen.Generate();
|
| if (cgen.HasStackOverflow()) {
|
| DCHECK(!isolate->has_pending_exception());
|
| @@ -157,9 +178,8 @@ bool FullCodeGenerator::MustCreateArrayLiteralWithRuntime(
|
| expr->values()->length() > JSArray::kInitialMaxFastElementArray;
|
| }
|
|
|
| -
|
| -void FullCodeGenerator::Initialize() {
|
| - InitializeAstVisitor(info_->isolate());
|
| +void FullCodeGenerator::Initialize(uintptr_t stack_limit) {
|
| + InitializeAstVisitor(stack_limit);
|
| masm_->set_emit_debug_code(FLAG_debug_code);
|
| masm_->set_predictable_code_size(true);
|
| }
|
|
|