| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index 7dc6bce49782f99e4181ca3a2272dee781a70aaf..38d1d8d1b867a226b7a7265c262cb2e821338988 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -7952,21 +7952,18 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewStrictArgumentsFast) {
|
| // Allocate the elements if needed.
|
| if (length > 0) {
|
| // Allocate the fixed array.
|
| - Object* obj;
|
| - { MaybeObject* maybe_obj = isolate->heap()->AllocateRawFixedArray(length);
|
| - if (!maybe_obj->ToObject(&obj)) return maybe_obj;
|
| + FixedArray* array;
|
| + { MaybeObject* maybe_obj =
|
| + isolate->heap()->AllocateUninitializedFixedArray(length);
|
| + if (!maybe_obj->To(&array)) return maybe_obj;
|
| }
|
|
|
| DisallowHeapAllocation no_gc;
|
| - FixedArray* array = reinterpret_cast<FixedArray*>(obj);
|
| - array->set_map_no_write_barrier(isolate->heap()->fixed_array_map());
|
| - array->set_length(length);
|
| -
|
| WriteBarrierMode mode = array->GetWriteBarrierMode(no_gc);
|
| for (int i = 0; i < length; i++) {
|
| array->set(i, *--parameters, mode);
|
| }
|
| - JSObject::cast(result)->set_elements(FixedArray::cast(obj));
|
| + JSObject::cast(result)->set_elements(array);
|
| }
|
| return result;
|
| }
|
| @@ -8443,14 +8440,6 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NotifyDeoptimized) {
|
| }
|
|
|
|
|
| -RUNTIME_FUNCTION(MaybeObject*, Runtime_NotifyOSR) {
|
| - SealHandleScope shs(isolate);
|
| - Deoptimizer* deoptimizer = Deoptimizer::Grab(isolate);
|
| - delete deoptimizer;
|
| - return isolate->heap()->undefined_value();
|
| -}
|
| -
|
| -
|
| RUNTIME_FUNCTION(MaybeObject*, Runtime_DeoptimizeFunction) {
|
| HandleScope scope(isolate);
|
| ASSERT(args.length() == 1);
|
| @@ -8617,7 +8606,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CompileForOnStackReplacement) {
|
| Handle<Code> result = Handle<Code>::null();
|
| BailoutId ast_id = BailoutId::None();
|
|
|
| - if (FLAG_concurrent_recompilation && FLAG_concurrent_osr) {
|
| + if (FLAG_concurrent_osr) {
|
| if (isolate->optimizing_compiler_thread()->
|
| IsQueuedForOSR(function, pc_offset)) {
|
| // Still waiting for the optimizing compiler thread to finish. Carry on.
|
| @@ -8629,25 +8618,25 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CompileForOnStackReplacement) {
|
| return NULL;
|
| }
|
|
|
| - OptimizingCompiler* compiler = isolate->optimizing_compiler_thread()->
|
| + RecompileJob* job = isolate->optimizing_compiler_thread()->
|
| FindReadyOSRCandidate(function, pc_offset);
|
|
|
| - if (compiler == NULL) {
|
| + if (job == NULL) {
|
| if (IsSuitableForOnStackReplacement(isolate, function, unoptimized) &&
|
| Compiler::RecompileConcurrent(function, pc_offset)) {
|
| if (function->IsMarkedForLazyRecompilation() ||
|
| function->IsMarkedForConcurrentRecompilation()) {
|
| // Prevent regular recompilation if we queue this for OSR.
|
| // TODO(yangguo): remove this as soon as OSR becomes one-shot.
|
| - function->ReplaceCode(function->shared()->code());
|
| + function->ReplaceCode(*unoptimized);
|
| }
|
| return NULL;
|
| }
|
| // Fall through to the end in case of failure.
|
| } else {
|
| // TODO(titzer): don't install the OSR code into the function.
|
| - ast_id = compiler->info()->osr_ast_id();
|
| - result = Compiler::InstallOptimizedCode(compiler);
|
| + ast_id = job->info()->osr_ast_id();
|
| + result = Compiler::InstallOptimizedCode(job);
|
| }
|
| } else if (IsSuitableForOnStackReplacement(isolate, function, unoptimized)) {
|
| ast_id = unoptimized->TranslatePcOffsetToAstId(pc_offset);
|
|
|