Hide some runtime functions.
R=dslomov@chromium.org Review URL: https://codereview.chromium.org/212163004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20285 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
0a0f12b841
commit
9be61ddb8a
@ -326,7 +326,7 @@ void Builtins::Generate_InOptimizationQueue(MacroAssembler* masm) {
|
|||||||
__ cmp(sp, Operand(ip));
|
__ cmp(sp, Operand(ip));
|
||||||
__ b(hs, &ok);
|
__ b(hs, &ok);
|
||||||
|
|
||||||
CallRuntimePassFunction(masm, Runtime::kTryInstallOptimizedCode);
|
CallRuntimePassFunction(masm, Runtime::kHiddenTryInstallOptimizedCode);
|
||||||
GenerateTailCallToReturnedCode(masm);
|
GenerateTailCallToReturnedCode(masm);
|
||||||
|
|
||||||
__ bind(&ok);
|
__ bind(&ok);
|
||||||
@ -415,7 +415,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|||||||
|
|
||||||
__ Push(r2, r1); // r1 = constructor
|
__ Push(r2, r1); // r1 = constructor
|
||||||
// The call will replace the stub, so the countdown is only done once.
|
// The call will replace the stub, so the countdown is only done once.
|
||||||
__ CallRuntime(Runtime::kFinalizeInstanceSize, 1);
|
__ CallRuntime(Runtime::kHiddenFinalizeInstanceSize, 1);
|
||||||
|
|
||||||
__ pop(r2);
|
__ pop(r2);
|
||||||
__ pop(r1);
|
__ pop(r1);
|
||||||
@ -598,9 +598,9 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|||||||
|
|
||||||
__ push(r1); // argument for Runtime_NewObject
|
__ push(r1); // argument for Runtime_NewObject
|
||||||
if (create_memento) {
|
if (create_memento) {
|
||||||
__ CallRuntime(Runtime::kNewObjectWithAllocationSite, 2);
|
__ CallRuntime(Runtime::kHiddenNewObjectWithAllocationSite, 2);
|
||||||
} else {
|
} else {
|
||||||
__ CallRuntime(Runtime::kNewObject, 1);
|
__ CallRuntime(Runtime::kHiddenNewObject, 1);
|
||||||
}
|
}
|
||||||
__ mov(r4, r0);
|
__ mov(r4, r0);
|
||||||
|
|
||||||
@ -834,7 +834,7 @@ void Builtins::Generate_JSConstructEntryTrampoline(MacroAssembler* masm) {
|
|||||||
|
|
||||||
|
|
||||||
void Builtins::Generate_CompileUnoptimized(MacroAssembler* masm) {
|
void Builtins::Generate_CompileUnoptimized(MacroAssembler* masm) {
|
||||||
CallRuntimePassFunction(masm, Runtime::kCompileUnoptimized);
|
CallRuntimePassFunction(masm, Runtime::kHiddenCompileUnoptimized);
|
||||||
GenerateTailCallToReturnedCode(masm);
|
GenerateTailCallToReturnedCode(masm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -848,7 +848,7 @@ static void CallCompileOptimized(MacroAssembler* masm, bool concurrent) {
|
|||||||
// Whether to compile in a background thread.
|
// Whether to compile in a background thread.
|
||||||
__ Push(masm->isolate()->factory()->ToBoolean(concurrent));
|
__ Push(masm->isolate()->factory()->ToBoolean(concurrent));
|
||||||
|
|
||||||
__ CallRuntime(Runtime::kCompileOptimized, 2);
|
__ CallRuntime(Runtime::kHiddenCompileOptimized, 2);
|
||||||
// Restore receiver.
|
// Restore receiver.
|
||||||
__ pop(r1);
|
__ pop(r1);
|
||||||
}
|
}
|
||||||
@ -943,7 +943,7 @@ static void Generate_NotifyStubFailureHelper(MacroAssembler* masm,
|
|||||||
// registers.
|
// registers.
|
||||||
__ stm(db_w, sp, kJSCallerSaved | kCalleeSaved);
|
__ stm(db_w, sp, kJSCallerSaved | kCalleeSaved);
|
||||||
// Pass the function and deoptimization type to the runtime system.
|
// Pass the function and deoptimization type to the runtime system.
|
||||||
__ CallRuntime(Runtime::kNotifyStubFailure, 0, save_doubles);
|
__ CallRuntime(Runtime::kHiddenNotifyStubFailure, 0, save_doubles);
|
||||||
__ ldm(ia_w, sp, kJSCallerSaved | kCalleeSaved);
|
__ ldm(ia_w, sp, kJSCallerSaved | kCalleeSaved);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -969,7 +969,7 @@ static void Generate_NotifyDeoptimizedHelper(MacroAssembler* masm,
|
|||||||
// Pass the function and deoptimization type to the runtime system.
|
// Pass the function and deoptimization type to the runtime system.
|
||||||
__ mov(r0, Operand(Smi::FromInt(static_cast<int>(type))));
|
__ mov(r0, Operand(Smi::FromInt(static_cast<int>(type))));
|
||||||
__ push(r0);
|
__ push(r0);
|
||||||
__ CallRuntime(Runtime::kNotifyDeoptimized, 1);
|
__ CallRuntime(Runtime::kHiddenNotifyDeoptimized, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the full codegen state from the stack and untag it -> r6.
|
// Get the full codegen state from the stack and untag it -> r6.
|
||||||
@ -1060,7 +1060,7 @@ void Builtins::Generate_OsrAfterStackCheck(MacroAssembler* masm) {
|
|||||||
__ b(hs, &ok);
|
__ b(hs, &ok);
|
||||||
{
|
{
|
||||||
FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL);
|
FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL);
|
||||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
__ CallRuntime(Runtime::kHiddenStackGuard, 0);
|
||||||
}
|
}
|
||||||
__ Jump(masm->isolate()->builtins()->OnStackReplacement(),
|
__ Jump(masm->isolate()->builtins()->OnStackReplacement(),
|
||||||
RelocInfo::CODE_TARGET);
|
RelocInfo::CODE_TARGET);
|
||||||
|
@ -45,7 +45,7 @@ void FastNewClosureStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 1;
|
descriptor->register_param_count_ = 1;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kNewClosureFromStubFailure)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenNewClosureFromStubFailure)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -87,7 +87,8 @@ void FastCloneShallowArrayStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 3;
|
descriptor->register_param_count_ = 3;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kCreateArrayLiteralStubBailout)->entry;
|
Runtime::FunctionForId(
|
||||||
|
Runtime::kHiddenCreateArrayLiteralStubBailout)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -98,7 +99,7 @@ void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 4;
|
descriptor->register_param_count_ = 4;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenCreateObjectLiteral)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -246,7 +247,7 @@ static void InitializeArrayConstructorDescriptor(
|
|||||||
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
||||||
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kArrayConstructor)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenArrayConstructor)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -274,7 +275,7 @@ static void InitializeInternalArrayConstructorDescriptor(
|
|||||||
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
||||||
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kInternalArrayConstructor)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenInternalArrayConstructor)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2148,7 +2149,7 @@ void ArgumentsAccessStub::GenerateNewSloppySlow(MacroAssembler* masm) {
|
|||||||
__ str(r3, MemOperand(sp, 1 * kPointerSize));
|
__ str(r3, MemOperand(sp, 1 * kPointerSize));
|
||||||
|
|
||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ TailCallRuntime(Runtime::kNewArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2352,7 +2353,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) {
|
|||||||
// r2 = argument count (tagged)
|
// r2 = argument count (tagged)
|
||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ str(r2, MemOperand(sp, 0 * kPointerSize)); // Patch argument count.
|
__ str(r2, MemOperand(sp, 0 * kPointerSize)); // Patch argument count.
|
||||||
__ TailCallRuntime(Runtime::kNewArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2446,7 +2447,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
|
|||||||
|
|
||||||
// Do the runtime call to allocate the arguments object.
|
// Do the runtime call to allocate the arguments object.
|
||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ TailCallRuntime(Runtime::kNewStrictArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewStrictArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3203,7 +3204,7 @@ void StringCharCodeAtGenerator::GenerateSlow(
|
|||||||
} else {
|
} else {
|
||||||
ASSERT(index_flags_ == STRING_INDEX_IS_ARRAY_INDEX);
|
ASSERT(index_flags_ == STRING_INDEX_IS_ARRAY_INDEX);
|
||||||
// NumberToSmi discards numbers that are not exact integers.
|
// NumberToSmi discards numbers that are not exact integers.
|
||||||
__ CallRuntime(Runtime::kNumberToSmi, 1);
|
__ CallRuntime(Runtime::kHiddenNumberToSmi, 1);
|
||||||
}
|
}
|
||||||
// Save the conversion result before the pop instructions below
|
// Save the conversion result before the pop instructions below
|
||||||
// have a chance to overwrite it.
|
// have a chance to overwrite it.
|
||||||
|
@ -234,13 +234,13 @@ void FullCodeGenerator::Generate() {
|
|||||||
if (FLAG_harmony_scoping && info->scope()->is_global_scope()) {
|
if (FLAG_harmony_scoping && info->scope()->is_global_scope()) {
|
||||||
__ push(r1);
|
__ push(r1);
|
||||||
__ Push(info->scope()->GetScopeInfo());
|
__ Push(info->scope()->GetScopeInfo());
|
||||||
__ CallRuntime(Runtime::kNewGlobalContext, 2);
|
__ CallRuntime(Runtime::kHiddenNewGlobalContext, 2);
|
||||||
} else if (heap_slots <= FastNewContextStub::kMaximumSlots) {
|
} else if (heap_slots <= FastNewContextStub::kMaximumSlots) {
|
||||||
FastNewContextStub stub(heap_slots);
|
FastNewContextStub stub(heap_slots);
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
} else {
|
} else {
|
||||||
__ push(r1);
|
__ push(r1);
|
||||||
__ CallRuntime(Runtime::kNewFunctionContext, 1);
|
__ CallRuntime(Runtime::kHiddenNewFunctionContext, 1);
|
||||||
}
|
}
|
||||||
function_in_register = false;
|
function_in_register = false;
|
||||||
// Context is returned in r0. It replaces the context passed to us.
|
// Context is returned in r0. It replaces the context passed to us.
|
||||||
@ -861,7 +861,7 @@ void FullCodeGenerator::VisitVariableDeclaration(
|
|||||||
__ mov(r0, Operand(Smi::FromInt(0))); // Indicates no initial value.
|
__ mov(r0, Operand(Smi::FromInt(0))); // Indicates no initial value.
|
||||||
__ Push(cp, r2, r1, r0);
|
__ Push(cp, r2, r1, r0);
|
||||||
}
|
}
|
||||||
__ CallRuntime(Runtime::kDeclareContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenDeclareContextSlot, 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -917,7 +917,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
|
|||||||
__ Push(cp, r2, r1);
|
__ Push(cp, r2, r1);
|
||||||
// Push initial value for function declaration.
|
// Push initial value for function declaration.
|
||||||
VisitForStackValue(declaration->fun());
|
VisitForStackValue(declaration->fun());
|
||||||
__ CallRuntime(Runtime::kDeclareContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenDeclareContextSlot, 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -989,7 +989,7 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
|||||||
__ mov(r1, Operand(pairs));
|
__ mov(r1, Operand(pairs));
|
||||||
__ mov(r0, Operand(Smi::FromInt(DeclareGlobalsFlags())));
|
__ mov(r0, Operand(Smi::FromInt(DeclareGlobalsFlags())));
|
||||||
__ Push(cp, r1, r0);
|
__ Push(cp, r1, r0);
|
||||||
__ CallRuntime(Runtime::kDeclareGlobals, 3);
|
__ CallRuntime(Runtime::kHiddenDeclareGlobals, 3);
|
||||||
// Return value is ignored.
|
// Return value is ignored.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -997,7 +997,7 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
|||||||
void FullCodeGenerator::DeclareModules(Handle<FixedArray> descriptions) {
|
void FullCodeGenerator::DeclareModules(Handle<FixedArray> descriptions) {
|
||||||
// Call the runtime to declare the modules.
|
// Call the runtime to declare the modules.
|
||||||
__ Push(descriptions);
|
__ Push(descriptions);
|
||||||
__ CallRuntime(Runtime::kDeclareModules, 1);
|
__ CallRuntime(Runtime::kHiddenDeclareModules, 1);
|
||||||
// Return value is ignored.
|
// Return value is ignored.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1359,7 +1359,7 @@ void FullCodeGenerator::EmitNewClosure(Handle<SharedFunctionInfo> info,
|
|||||||
__ LoadRoot(r1, pretenure ? Heap::kTrueValueRootIndex
|
__ LoadRoot(r1, pretenure ? Heap::kTrueValueRootIndex
|
||||||
: Heap::kFalseValueRootIndex);
|
: Heap::kFalseValueRootIndex);
|
||||||
__ Push(cp, r0, r1);
|
__ Push(cp, r0, r1);
|
||||||
__ CallRuntime(Runtime::kNewClosure, 3);
|
__ CallRuntime(Runtime::kHiddenNewClosure, 3);
|
||||||
}
|
}
|
||||||
context()->Plug(r0);
|
context()->Plug(r0);
|
||||||
}
|
}
|
||||||
@ -1484,7 +1484,7 @@ void FullCodeGenerator::EmitDynamicLookupFastCase(Variable* var,
|
|||||||
__ b(ne, done);
|
__ b(ne, done);
|
||||||
__ mov(r0, Operand(var->name()));
|
__ mov(r0, Operand(var->name()));
|
||||||
__ push(r0);
|
__ push(r0);
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__ jmp(done);
|
__ jmp(done);
|
||||||
@ -1562,7 +1562,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
|||||||
__ b(ne, &done);
|
__ b(ne, &done);
|
||||||
__ mov(r0, Operand(var->name()));
|
__ mov(r0, Operand(var->name()));
|
||||||
__ push(r0);
|
__ push(r0);
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
} else {
|
} else {
|
||||||
// Uninitalized const bindings outside of harmony mode are unholed.
|
// Uninitalized const bindings outside of harmony mode are unholed.
|
||||||
@ -1586,7 +1586,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
|||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
__ mov(r1, Operand(var->name()));
|
__ mov(r1, Operand(var->name()));
|
||||||
__ Push(cp, r1); // Context and name.
|
__ Push(cp, r1); // Context and name.
|
||||||
__ CallRuntime(Runtime::kLoadContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlot, 2);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(r0);
|
context()->Plug(r0);
|
||||||
}
|
}
|
||||||
@ -1619,7 +1619,7 @@ void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
|
|||||||
__ mov(r2, Operand(expr->pattern()));
|
__ mov(r2, Operand(expr->pattern()));
|
||||||
__ mov(r1, Operand(expr->flags()));
|
__ mov(r1, Operand(expr->flags()));
|
||||||
__ Push(r4, r3, r2, r1);
|
__ Push(r4, r3, r2, r1);
|
||||||
__ CallRuntime(Runtime::kMaterializeRegExpLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenMaterializeRegExpLiteral, 4);
|
||||||
__ mov(r5, r0);
|
__ mov(r5, r0);
|
||||||
|
|
||||||
__ bind(&materialized);
|
__ bind(&materialized);
|
||||||
@ -1631,7 +1631,7 @@ void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
|
|||||||
__ bind(&runtime_allocate);
|
__ bind(&runtime_allocate);
|
||||||
__ mov(r0, Operand(Smi::FromInt(size)));
|
__ mov(r0, Operand(Smi::FromInt(size)));
|
||||||
__ Push(r5, r0);
|
__ Push(r5, r0);
|
||||||
__ CallRuntime(Runtime::kAllocateInNewSpace, 1);
|
__ CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1);
|
||||||
__ pop(r5);
|
__ pop(r5);
|
||||||
|
|
||||||
__ bind(&allocated);
|
__ bind(&allocated);
|
||||||
@ -1675,7 +1675,7 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
|||||||
flags != ObjectLiteral::kFastElements ||
|
flags != ObjectLiteral::kFastElements ||
|
||||||
properties_count > FastCloneShallowObjectStub::kMaximumClonedProperties) {
|
properties_count > FastCloneShallowObjectStub::kMaximumClonedProperties) {
|
||||||
__ Push(r3, r2, r1, r0);
|
__ Push(r3, r2, r1, r0);
|
||||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenCreateObjectLiteral, 4);
|
||||||
} else {
|
} else {
|
||||||
FastCloneShallowObjectStub stub(properties_count);
|
FastCloneShallowObjectStub stub(properties_count);
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
@ -1826,7 +1826,7 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) {
|
|||||||
length > FastCloneShallowArrayStub::kMaximumClonedLength) {
|
length > FastCloneShallowArrayStub::kMaximumClonedLength) {
|
||||||
__ mov(r0, Operand(Smi::FromInt(flags)));
|
__ mov(r0, Operand(Smi::FromInt(flags)));
|
||||||
__ Push(r3, r2, r1, r0);
|
__ Push(r3, r2, r1, r0);
|
||||||
__ CallRuntime(Runtime::kCreateArrayLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenCreateArrayLiteral, 4);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) ||
|
ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) ||
|
||||||
FLAG_smi_only_arrays);
|
FLAG_smi_only_arrays);
|
||||||
@ -2027,7 +2027,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
|||||||
__ cmp(sp, r1);
|
__ cmp(sp, r1);
|
||||||
__ b(eq, &post_runtime);
|
__ b(eq, &post_runtime);
|
||||||
__ push(r0); // generator object
|
__ push(r0); // generator object
|
||||||
__ CallRuntime(Runtime::kSuspendJSGeneratorObject, 1);
|
__ CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject, 1);
|
||||||
__ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ bind(&post_runtime);
|
__ bind(&post_runtime);
|
||||||
__ pop(result_register());
|
__ pop(result_register());
|
||||||
@ -2093,7 +2093,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
|||||||
__ mov(r1, cp);
|
__ mov(r1, cp);
|
||||||
__ RecordWriteField(r0, JSGeneratorObject::kContextOffset, r1, r2,
|
__ RecordWriteField(r0, JSGeneratorObject::kContextOffset, r1, r2,
|
||||||
kLRHasBeenSaved, kDontSaveFPRegs);
|
kLRHasBeenSaved, kDontSaveFPRegs);
|
||||||
__ CallRuntime(Runtime::kSuspendJSGeneratorObject, 1);
|
__ CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject, 1);
|
||||||
__ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ pop(r0); // result
|
__ pop(r0); // result
|
||||||
EmitReturnSequence();
|
EmitReturnSequence();
|
||||||
@ -2145,7 +2145,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
Expression *value,
|
Expression *value,
|
||||||
JSGeneratorObject::ResumeMode resume_mode) {
|
JSGeneratorObject::ResumeMode resume_mode) {
|
||||||
// The value stays in r0, and is ultimately read by the resumed generator, as
|
// The value stays in r0, and is ultimately read by the resumed generator, as
|
||||||
// if the CallRuntime(Runtime::kSuspendJSGeneratorObject) returned it. Or it
|
// if CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject) returned it. Or it
|
||||||
// is read to throw the value when the resumed generator is already closed.
|
// is read to throw the value when the resumed generator is already closed.
|
||||||
// r1 will hold the generator object until the activation has been resumed.
|
// r1 will hold the generator object until the activation has been resumed.
|
||||||
VisitForStackValue(generator);
|
VisitForStackValue(generator);
|
||||||
@ -2239,7 +2239,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
ASSERT(!result_register().is(r1));
|
ASSERT(!result_register().is(r1));
|
||||||
__ Push(r1, result_register());
|
__ Push(r1, result_register());
|
||||||
__ Push(Smi::FromInt(resume_mode));
|
__ Push(Smi::FromInt(resume_mode));
|
||||||
__ CallRuntime(Runtime::kResumeJSGeneratorObject, 3);
|
__ CallRuntime(Runtime::kHiddenResumeJSGeneratorObject, 3);
|
||||||
// Not reached: the runtime call returns elsewhere.
|
// Not reached: the runtime call returns elsewhere.
|
||||||
__ stop("not-reached");
|
__ stop("not-reached");
|
||||||
|
|
||||||
@ -2254,14 +2254,14 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
} else {
|
} else {
|
||||||
// Throw the provided value.
|
// Throw the provided value.
|
||||||
__ push(r0);
|
__ push(r0);
|
||||||
__ CallRuntime(Runtime::kThrow, 1);
|
__ CallRuntime(Runtime::kHiddenThrow, 1);
|
||||||
}
|
}
|
||||||
__ jmp(&done);
|
__ jmp(&done);
|
||||||
|
|
||||||
// Throw error if we attempt to operate on a running generator.
|
// Throw error if we attempt to operate on a running generator.
|
||||||
__ bind(&wrong_state);
|
__ bind(&wrong_state);
|
||||||
__ push(r1);
|
__ push(r1);
|
||||||
__ CallRuntime(Runtime::kThrowGeneratorStateError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowGeneratorStateError, 1);
|
||||||
|
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(result_register());
|
context()->Plug(result_register());
|
||||||
@ -2279,7 +2279,7 @@ void FullCodeGenerator::EmitCreateIteratorResult(bool done) {
|
|||||||
|
|
||||||
__ bind(&gc_required);
|
__ bind(&gc_required);
|
||||||
__ Push(Smi::FromInt(map->instance_size()));
|
__ Push(Smi::FromInt(map->instance_size()));
|
||||||
__ CallRuntime(Runtime::kAllocateInNewSpace, 1);
|
__ CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1);
|
||||||
__ ldr(context_register(),
|
__ ldr(context_register(),
|
||||||
MemOperand(fp, StandardFrameConstants::kContextOffset));
|
MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
|
|
||||||
@ -2493,7 +2493,7 @@ void FullCodeGenerator::EmitCallStoreContextSlot(
|
|||||||
__ mov(r1, Operand(name));
|
__ mov(r1, Operand(name));
|
||||||
__ mov(r0, Operand(Smi::FromInt(strict_mode)));
|
__ mov(r0, Operand(Smi::FromInt(strict_mode)));
|
||||||
__ Push(cp, r1, r0); // Context, name, strict mode.
|
__ Push(cp, r1, r0); // Context, name, strict mode.
|
||||||
__ CallRuntime(Runtime::kStoreContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenStoreContextSlot, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2511,7 +2511,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, Token::Value op) {
|
|||||||
__ push(r0);
|
__ push(r0);
|
||||||
__ mov(r0, Operand(var->name()));
|
__ mov(r0, Operand(var->name()));
|
||||||
__ Push(cp, r0); // Context and name.
|
__ Push(cp, r0); // Context and name.
|
||||||
__ CallRuntime(Runtime::kInitializeConstContextSlot, 3);
|
__ CallRuntime(Runtime::kHiddenInitializeConstContextSlot, 3);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(var->IsStackAllocated() || var->IsContextSlot());
|
ASSERT(var->IsStackAllocated() || var->IsContextSlot());
|
||||||
Label skip;
|
Label skip;
|
||||||
@ -2536,7 +2536,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, Token::Value op) {
|
|||||||
__ b(ne, &assign);
|
__ b(ne, &assign);
|
||||||
__ mov(r3, Operand(var->name()));
|
__ mov(r3, Operand(var->name()));
|
||||||
__ push(r3);
|
__ push(r3);
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
// Perform the assignment.
|
// Perform the assignment.
|
||||||
__ bind(&assign);
|
__ bind(&assign);
|
||||||
EmitStoreToStackLocalOrContextSlot(var, location);
|
EmitStoreToStackLocalOrContextSlot(var, location);
|
||||||
@ -2769,7 +2769,7 @@ void FullCodeGenerator::EmitResolvePossiblyDirectEval(int arg_count) {
|
|||||||
|
|
||||||
// Do the runtime call.
|
// Do the runtime call.
|
||||||
__ Push(r4, r3, r2, r1);
|
__ Push(r4, r3, r2, r1);
|
||||||
__ CallRuntime(Runtime::kResolvePossiblyDirectEval, 5);
|
__ CallRuntime(Runtime::kHiddenResolvePossiblyDirectEval, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2785,8 +2785,8 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|||||||
Call::CallType call_type = expr->GetCallType(isolate());
|
Call::CallType call_type = expr->GetCallType(isolate());
|
||||||
|
|
||||||
if (call_type == Call::POSSIBLY_EVAL_CALL) {
|
if (call_type == Call::POSSIBLY_EVAL_CALL) {
|
||||||
// In a call to eval, we first call %ResolvePossiblyDirectEval to
|
// In a call to eval, we first call RuntimeHidden_ResolvePossiblyDirectEval
|
||||||
// resolve the function we need to call and the receiver of the
|
// to resolve the function we need to call and the receiver of the
|
||||||
// call. Then we call the resolved function using the given
|
// call. Then we call the resolved function using the given
|
||||||
// arguments.
|
// arguments.
|
||||||
ZoneList<Expression*>* args = expr->arguments();
|
ZoneList<Expression*>* args = expr->arguments();
|
||||||
@ -2843,7 +2843,7 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|||||||
ASSERT(!context_register().is(r2));
|
ASSERT(!context_register().is(r2));
|
||||||
__ mov(r2, Operand(proxy->name()));
|
__ mov(r2, Operand(proxy->name()));
|
||||||
__ Push(context_register(), r2);
|
__ Push(context_register(), r2);
|
||||||
__ CallRuntime(Runtime::kLoadContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlot, 2);
|
||||||
__ Push(r0, r1); // Function, receiver.
|
__ Push(r0, r1); // Function, receiver.
|
||||||
|
|
||||||
// If fast case code has been generated, emit code to push the
|
// If fast case code has been generated, emit code to push the
|
||||||
@ -3498,7 +3498,7 @@ void FullCodeGenerator::EmitDateField(CallRuntime* expr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
__ bind(¬_date_object);
|
__ bind(¬_date_object);
|
||||||
__ CallRuntime(Runtime::kThrowNotDateError, 0);
|
__ CallRuntime(Runtime::kHiddenThrowNotDateError, 0);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(r0);
|
context()->Plug(r0);
|
||||||
}
|
}
|
||||||
@ -4235,7 +4235,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
|||||||
ASSERT(!context_register().is(r2));
|
ASSERT(!context_register().is(r2));
|
||||||
__ mov(r2, Operand(var->name()));
|
__ mov(r2, Operand(var->name()));
|
||||||
__ Push(context_register(), r2);
|
__ Push(context_register(), r2);
|
||||||
__ CallRuntime(Runtime::kDeleteContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenDeleteContextSlot, 2);
|
||||||
context()->Plug(r0);
|
context()->Plug(r0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -4512,7 +4512,7 @@ void FullCodeGenerator::VisitForTypeofValue(Expression* expr) {
|
|||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
__ mov(r0, Operand(proxy->name()));
|
__ mov(r0, Operand(proxy->name()));
|
||||||
__ Push(cp, r0);
|
__ Push(cp, r0);
|
||||||
__ CallRuntime(Runtime::kLoadContextSlotNoReferenceError, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlotNoReferenceError, 2);
|
||||||
PrepareForBailout(expr, TOS_REG);
|
PrepareForBailout(expr, TOS_REG);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
|
|
||||||
|
@ -211,7 +211,7 @@ bool LCodeGen::GeneratePrologue() {
|
|||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
} else {
|
} else {
|
||||||
__ push(r1);
|
__ push(r1);
|
||||||
__ CallRuntime(Runtime::kNewFunctionContext, 1);
|
__ CallRuntime(Runtime::kHiddenNewFunctionContext, 1);
|
||||||
}
|
}
|
||||||
RecordSafepoint(Safepoint::kNoLazyDeopt);
|
RecordSafepoint(Safepoint::kNoLazyDeopt);
|
||||||
// Context is returned in both r0 and cp. It replaces the context
|
// Context is returned in both r0 and cp. It replaces the context
|
||||||
@ -3539,7 +3539,7 @@ void LCodeGen::DoDeclareGlobals(LDeclareGlobals* instr) {
|
|||||||
__ push(scratch0());
|
__ push(scratch0());
|
||||||
__ mov(scratch0(), Operand(Smi::FromInt(instr->hydrogen()->flags())));
|
__ mov(scratch0(), Operand(Smi::FromInt(instr->hydrogen()->flags())));
|
||||||
__ push(scratch0());
|
__ push(scratch0());
|
||||||
CallRuntime(Runtime::kDeclareGlobals, 3, instr);
|
CallRuntime(Runtime::kHiddenDeclareGlobals, 3, instr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3630,7 +3630,7 @@ void LCodeGen::DoDeferredMathAbsTaggedHeapNumber(LMathAbs* instr) {
|
|||||||
// Slow case: Call the runtime system to do the number allocation.
|
// Slow case: Call the runtime system to do the number allocation.
|
||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
|
|
||||||
CallRuntimeFromDeferred(Runtime::kAllocateHeapNumber, 0, instr,
|
CallRuntimeFromDeferred(Runtime::kHiddenAllocateHeapNumber, 0, instr,
|
||||||
instr->context());
|
instr->context());
|
||||||
// Set the pointer to the new heap number in tmp.
|
// Set the pointer to the new heap number in tmp.
|
||||||
if (!tmp1.is(r0)) __ mov(tmp1, Operand(r0));
|
if (!tmp1.is(r0)) __ mov(tmp1, Operand(r0));
|
||||||
@ -4650,11 +4650,11 @@ void LCodeGen::DoDeferredNumberTagIU(LInstruction* instr,
|
|||||||
|
|
||||||
// NumberTagI and NumberTagD use the context from the frame, rather than
|
// NumberTagI and NumberTagD use the context from the frame, rather than
|
||||||
// the environment's HContext or HInlinedContext value.
|
// the environment's HContext or HInlinedContext value.
|
||||||
// They only call Runtime::kAllocateHeapNumber.
|
// They only call Runtime::kHiddenAllocateHeapNumber.
|
||||||
// The corresponding HChange instructions are added in a phase that does
|
// The corresponding HChange instructions are added in a phase that does
|
||||||
// not have easy access to the local context.
|
// not have easy access to the local context.
|
||||||
__ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenAllocateHeapNumber);
|
||||||
RecordSafepointWithRegisters(
|
RecordSafepointWithRegisters(
|
||||||
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
||||||
__ sub(r0, r0, Operand(kHeapObjectTag));
|
__ sub(r0, r0, Operand(kHeapObjectTag));
|
||||||
@ -4714,11 +4714,11 @@ void LCodeGen::DoDeferredNumberTagD(LNumberTagD* instr) {
|
|||||||
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
||||||
// NumberTagI and NumberTagD use the context from the frame, rather than
|
// NumberTagI and NumberTagD use the context from the frame, rather than
|
||||||
// the environment's HContext or HInlinedContext value.
|
// the environment's HContext or HInlinedContext value.
|
||||||
// They only call Runtime::kAllocateHeapNumber.
|
// They only call Runtime::kHiddenAllocateHeapNumber.
|
||||||
// The corresponding HChange instructions are added in a phase that does
|
// The corresponding HChange instructions are added in a phase that does
|
||||||
// not have easy access to the local context.
|
// not have easy access to the local context.
|
||||||
__ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenAllocateHeapNumber);
|
||||||
RecordSafepointWithRegisters(
|
RecordSafepointWithRegisters(
|
||||||
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
||||||
__ sub(r0, r0, Operand(kHeapObjectTag));
|
__ sub(r0, r0, Operand(kHeapObjectTag));
|
||||||
@ -5319,7 +5319,7 @@ void LCodeGen::DoDeferredAllocate(LAllocate* instr) {
|
|||||||
__ Push(Smi::FromInt(flags));
|
__ Push(Smi::FromInt(flags));
|
||||||
|
|
||||||
CallRuntimeFromDeferred(
|
CallRuntimeFromDeferred(
|
||||||
Runtime::kAllocateInTargetSpace, 2, instr, instr->context());
|
Runtime::kHiddenAllocateInTargetSpace, 2, instr, instr->context());
|
||||||
__ StoreToSafepointRegisterSlot(r0, result);
|
__ StoreToSafepointRegisterSlot(r0, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5353,7 +5353,7 @@ void LCodeGen::DoRegExpLiteral(LRegExpLiteral* instr) {
|
|||||||
__ mov(r4, Operand(instr->hydrogen()->pattern()));
|
__ mov(r4, Operand(instr->hydrogen()->pattern()));
|
||||||
__ mov(r3, Operand(instr->hydrogen()->flags()));
|
__ mov(r3, Operand(instr->hydrogen()->flags()));
|
||||||
__ Push(r6, r5, r4, r3);
|
__ Push(r6, r5, r4, r3);
|
||||||
CallRuntime(Runtime::kMaterializeRegExpLiteral, 4, instr);
|
CallRuntime(Runtime::kHiddenMaterializeRegExpLiteral, 4, instr);
|
||||||
__ mov(r1, r0);
|
__ mov(r1, r0);
|
||||||
|
|
||||||
__ bind(&materialized);
|
__ bind(&materialized);
|
||||||
@ -5366,7 +5366,7 @@ void LCodeGen::DoRegExpLiteral(LRegExpLiteral* instr) {
|
|||||||
__ bind(&runtime_allocate);
|
__ bind(&runtime_allocate);
|
||||||
__ mov(r0, Operand(Smi::FromInt(size)));
|
__ mov(r0, Operand(Smi::FromInt(size)));
|
||||||
__ Push(r1, r0);
|
__ Push(r1, r0);
|
||||||
CallRuntime(Runtime::kAllocateInNewSpace, 1, instr);
|
CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1, instr);
|
||||||
__ pop(r1);
|
__ pop(r1);
|
||||||
|
|
||||||
__ bind(&allocated);
|
__ bind(&allocated);
|
||||||
@ -5390,7 +5390,7 @@ void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) {
|
|||||||
__ mov(r1, Operand(pretenure ? factory()->true_value()
|
__ mov(r1, Operand(pretenure ? factory()->true_value()
|
||||||
: factory()->false_value()));
|
: factory()->false_value()));
|
||||||
__ Push(cp, r2, r1);
|
__ Push(cp, r2, r1);
|
||||||
CallRuntime(Runtime::kNewClosure, 3, instr);
|
CallRuntime(Runtime::kHiddenNewClosure, 3, instr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5575,7 +5575,7 @@ void LCodeGen::DoDummyUse(LDummyUse* instr) {
|
|||||||
void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) {
|
void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) {
|
||||||
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
||||||
LoadContextFromDeferred(instr->context());
|
LoadContextFromDeferred(instr->context());
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kStackGuard);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenStackGuard);
|
||||||
RecordSafepointWithLazyDeopt(
|
RecordSafepointWithLazyDeopt(
|
||||||
instr, RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS);
|
instr, RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS);
|
||||||
ASSERT(instr->HasEnvironment());
|
ASSERT(instr->HasEnvironment());
|
||||||
|
@ -2432,7 +2432,7 @@ void MacroAssembler::CallApiFunctionAndReturn(
|
|||||||
{
|
{
|
||||||
FrameScope frame(this, StackFrame::INTERNAL);
|
FrameScope frame(this, StackFrame::INTERNAL);
|
||||||
CallExternalReference(
|
CallExternalReference(
|
||||||
ExternalReference(Runtime::kPromoteScheduledException, isolate()),
|
ExternalReference(Runtime::kHiddenPromoteScheduledException, isolate()),
|
||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
jmp(&exception_handled);
|
jmp(&exception_handled);
|
||||||
@ -3846,9 +3846,9 @@ void MacroAssembler::Throw(BailoutReason reason) {
|
|||||||
// We don't actually want to generate a pile of code for this, so just
|
// We don't actually want to generate a pile of code for this, so just
|
||||||
// claim there is a stack frame, without generating one.
|
// claim there is a stack frame, without generating one.
|
||||||
FrameScope scope(this, StackFrame::NONE);
|
FrameScope scope(this, StackFrame::NONE);
|
||||||
CallRuntime(Runtime::kThrowMessage, 1);
|
CallRuntime(Runtime::kHiddenThrowMessage, 1);
|
||||||
} else {
|
} else {
|
||||||
CallRuntime(Runtime::kThrowMessage, 1);
|
CallRuntime(Runtime::kHiddenThrowMessage, 1);
|
||||||
}
|
}
|
||||||
// will not return here
|
// will not return here
|
||||||
if (is_const_pool_blocked()) {
|
if (is_const_pool_blocked()) {
|
||||||
|
@ -317,7 +317,7 @@ void Builtins::Generate_InOptimizationQueue(MacroAssembler* masm) {
|
|||||||
__ CompareRoot(masm->StackPointer(), Heap::kStackLimitRootIndex);
|
__ CompareRoot(masm->StackPointer(), Heap::kStackLimitRootIndex);
|
||||||
__ B(hs, &ok);
|
__ B(hs, &ok);
|
||||||
|
|
||||||
CallRuntimePassFunction(masm, Runtime::kTryInstallOptimizedCode);
|
CallRuntimePassFunction(masm, Runtime::kHiddenTryInstallOptimizedCode);
|
||||||
GenerateTailCallToReturnedCode(masm);
|
GenerateTailCallToReturnedCode(masm);
|
||||||
|
|
||||||
__ Bind(&ok);
|
__ Bind(&ok);
|
||||||
@ -407,7 +407,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|||||||
// as argument to the runtime call.
|
// as argument to the runtime call.
|
||||||
__ Push(constructor, init_map, constructor);
|
__ Push(constructor, init_map, constructor);
|
||||||
// The call will replace the stub, so the countdown is only done once.
|
// The call will replace the stub, so the countdown is only done once.
|
||||||
__ CallRuntime(Runtime::kFinalizeInstanceSize, 1);
|
__ CallRuntime(Runtime::kHiddenFinalizeInstanceSize, 1);
|
||||||
__ Pop(init_map, constructor);
|
__ Pop(init_map, constructor);
|
||||||
__ Bind(&allocate);
|
__ Bind(&allocate);
|
||||||
}
|
}
|
||||||
@ -566,7 +566,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|||||||
__ Peek(x4, 2 * kXRegSize);
|
__ Peek(x4, 2 * kXRegSize);
|
||||||
__ Push(x4);
|
__ Push(x4);
|
||||||
__ Push(constructor); // Argument for Runtime_NewObject.
|
__ Push(constructor); // Argument for Runtime_NewObject.
|
||||||
__ CallRuntime(Runtime::kNewObjectWithAllocationSite, 2);
|
__ CallRuntime(Runtime::kHiddenNewObjectWithAllocationSite, 2);
|
||||||
__ Mov(x4, x0);
|
__ Mov(x4, x0);
|
||||||
// If we ended up using the runtime, and we want a memento, then the
|
// If we ended up using the runtime, and we want a memento, then the
|
||||||
// runtime call made it for us, and we shouldn't do create count
|
// runtime call made it for us, and we shouldn't do create count
|
||||||
@ -574,7 +574,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|||||||
__ jmp(&count_incremented);
|
__ jmp(&count_incremented);
|
||||||
} else {
|
} else {
|
||||||
__ Push(constructor); // Argument for Runtime_NewObject.
|
__ Push(constructor); // Argument for Runtime_NewObject.
|
||||||
__ CallRuntime(Runtime::kNewObject, 1);
|
__ CallRuntime(Runtime::kHiddenNewObject, 1);
|
||||||
__ Mov(x4, x0);
|
__ Mov(x4, x0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -811,7 +811,7 @@ void Builtins::Generate_JSConstructEntryTrampoline(MacroAssembler* masm) {
|
|||||||
|
|
||||||
|
|
||||||
void Builtins::Generate_CompileUnoptimized(MacroAssembler* masm) {
|
void Builtins::Generate_CompileUnoptimized(MacroAssembler* masm) {
|
||||||
CallRuntimePassFunction(masm, Runtime::kCompileUnoptimized);
|
CallRuntimePassFunction(masm, Runtime::kHiddenCompileUnoptimized);
|
||||||
GenerateTailCallToReturnedCode(masm);
|
GenerateTailCallToReturnedCode(masm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -821,11 +821,11 @@ static void CallCompileOptimized(MacroAssembler* masm, bool concurrent) {
|
|||||||
Register function = x1;
|
Register function = x1;
|
||||||
|
|
||||||
// Preserve function. At the same time, push arguments for
|
// Preserve function. At the same time, push arguments for
|
||||||
// kCompileOptimized.
|
// kHiddenCompileOptimized.
|
||||||
__ LoadObject(x10, masm->isolate()->factory()->ToBoolean(concurrent));
|
__ LoadObject(x10, masm->isolate()->factory()->ToBoolean(concurrent));
|
||||||
__ Push(function, function, x10);
|
__ Push(function, function, x10);
|
||||||
|
|
||||||
__ CallRuntime(Runtime::kCompileOptimized, 2);
|
__ CallRuntime(Runtime::kHiddenCompileOptimized, 2);
|
||||||
|
|
||||||
// Restore receiver.
|
// Restore receiver.
|
||||||
__ Pop(function);
|
__ Pop(function);
|
||||||
@ -935,7 +935,7 @@ static void Generate_NotifyStubFailureHelper(MacroAssembler* masm,
|
|||||||
// preserve the registers with parameters.
|
// preserve the registers with parameters.
|
||||||
__ PushXRegList(kSafepointSavedRegisters);
|
__ PushXRegList(kSafepointSavedRegisters);
|
||||||
// Pass the function and deoptimization type to the runtime system.
|
// Pass the function and deoptimization type to the runtime system.
|
||||||
__ CallRuntime(Runtime::kNotifyStubFailure, 0, save_doubles);
|
__ CallRuntime(Runtime::kHiddenNotifyStubFailure, 0, save_doubles);
|
||||||
__ PopXRegList(kSafepointSavedRegisters);
|
__ PopXRegList(kSafepointSavedRegisters);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -965,7 +965,7 @@ static void Generate_NotifyDeoptimizedHelper(MacroAssembler* masm,
|
|||||||
// Pass the deoptimization type to the runtime system.
|
// Pass the deoptimization type to the runtime system.
|
||||||
__ Mov(x0, Smi::FromInt(static_cast<int>(type)));
|
__ Mov(x0, Smi::FromInt(static_cast<int>(type)));
|
||||||
__ Push(x0);
|
__ Push(x0);
|
||||||
__ CallRuntime(Runtime::kNotifyDeoptimized, 1);
|
__ CallRuntime(Runtime::kHiddenNotifyDeoptimized, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the full codegen state from the stack and untag it.
|
// Get the full codegen state from the stack and untag it.
|
||||||
@ -1050,7 +1050,7 @@ void Builtins::Generate_OsrAfterStackCheck(MacroAssembler* masm) {
|
|||||||
__ B(hs, &ok);
|
__ B(hs, &ok);
|
||||||
{
|
{
|
||||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
__ CallRuntime(Runtime::kHiddenStackGuard, 0);
|
||||||
}
|
}
|
||||||
__ Jump(masm->isolate()->builtins()->OnStackReplacement(),
|
__ Jump(masm->isolate()->builtins()->OnStackReplacement(),
|
||||||
RelocInfo::CODE_TARGET);
|
RelocInfo::CODE_TARGET);
|
||||||
|
@ -46,7 +46,7 @@ void FastNewClosureStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = sizeof(registers) / sizeof(registers[0]);
|
descriptor->register_param_count_ = sizeof(registers) / sizeof(registers[0]);
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kNewClosureFromStubFailure)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenNewClosureFromStubFailure)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -94,7 +94,8 @@ void FastCloneShallowArrayStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = sizeof(registers) / sizeof(registers[0]);
|
descriptor->register_param_count_ = sizeof(registers) / sizeof(registers[0]);
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kCreateArrayLiteralStubBailout)->entry;
|
Runtime::FunctionForId(
|
||||||
|
Runtime::kHiddenCreateArrayLiteralStubBailout)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -109,7 +110,7 @@ void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = sizeof(registers) / sizeof(registers[0]);
|
descriptor->register_param_count_ = sizeof(registers) / sizeof(registers[0]);
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenCreateObjectLiteral)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -275,7 +276,7 @@ static void InitializeArrayConstructorDescriptor(
|
|||||||
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
||||||
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kArrayConstructor)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenArrayConstructor)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -325,7 +326,7 @@ static void InitializeInternalArrayConstructorDescriptor(
|
|||||||
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
||||||
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kInternalArrayConstructor)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenInternalArrayConstructor)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2248,7 +2249,7 @@ void ArgumentsAccessStub::GenerateNewSloppySlow(MacroAssembler* masm) {
|
|||||||
__ Poke(x10, 1 * kXRegSize);
|
__ Poke(x10, 1 * kXRegSize);
|
||||||
|
|
||||||
__ Bind(&runtime);
|
__ Bind(&runtime);
|
||||||
__ TailCallRuntime(Runtime::kNewArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2520,7 +2521,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) {
|
|||||||
// Do the runtime call to allocate the arguments object.
|
// Do the runtime call to allocate the arguments object.
|
||||||
__ Bind(&runtime);
|
__ Bind(&runtime);
|
||||||
__ Push(function, recv_arg, arg_count_smi);
|
__ Push(function, recv_arg, arg_count_smi);
|
||||||
__ TailCallRuntime(Runtime::kNewArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2653,7 +2654,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
|
|||||||
// Do the runtime call to allocate the arguments object.
|
// Do the runtime call to allocate the arguments object.
|
||||||
__ Bind(&runtime);
|
__ Bind(&runtime);
|
||||||
__ Push(function, params, param_count_smi);
|
__ Push(function, params, param_count_smi);
|
||||||
__ TailCallRuntime(Runtime::kNewStrictArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewStrictArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3527,7 +3528,7 @@ void StringCharCodeAtGenerator::GenerateSlow(
|
|||||||
} else {
|
} else {
|
||||||
ASSERT(index_flags_ == STRING_INDEX_IS_ARRAY_INDEX);
|
ASSERT(index_flags_ == STRING_INDEX_IS_ARRAY_INDEX);
|
||||||
// NumberToSmi discards numbers that are not exact integers.
|
// NumberToSmi discards numbers that are not exact integers.
|
||||||
__ CallRuntime(Runtime::kNumberToSmi, 1);
|
__ CallRuntime(Runtime::kHiddenNumberToSmi, 1);
|
||||||
}
|
}
|
||||||
// Save the conversion result before the pop instructions below
|
// Save the conversion result before the pop instructions below
|
||||||
// have a chance to overwrite it.
|
// have a chance to overwrite it.
|
||||||
|
@ -235,13 +235,13 @@ void FullCodeGenerator::Generate() {
|
|||||||
if (FLAG_harmony_scoping && info->scope()->is_global_scope()) {
|
if (FLAG_harmony_scoping && info->scope()->is_global_scope()) {
|
||||||
__ Mov(x10, Operand(info->scope()->GetScopeInfo()));
|
__ Mov(x10, Operand(info->scope()->GetScopeInfo()));
|
||||||
__ Push(x1, x10);
|
__ Push(x1, x10);
|
||||||
__ CallRuntime(Runtime::kNewGlobalContext, 2);
|
__ CallRuntime(Runtime::kHiddenNewGlobalContext, 2);
|
||||||
} else if (heap_slots <= FastNewContextStub::kMaximumSlots) {
|
} else if (heap_slots <= FastNewContextStub::kMaximumSlots) {
|
||||||
FastNewContextStub stub(heap_slots);
|
FastNewContextStub stub(heap_slots);
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
} else {
|
} else {
|
||||||
__ Push(x1);
|
__ Push(x1);
|
||||||
__ CallRuntime(Runtime::kNewFunctionContext, 1);
|
__ CallRuntime(Runtime::kHiddenNewFunctionContext, 1);
|
||||||
}
|
}
|
||||||
function_in_register_x1 = false;
|
function_in_register_x1 = false;
|
||||||
// Context is returned in x0. It replaces the context passed to us.
|
// Context is returned in x0. It replaces the context passed to us.
|
||||||
@ -875,7 +875,7 @@ void FullCodeGenerator::VisitVariableDeclaration(
|
|||||||
// Pushing 0 (xzr) indicates no initial value.
|
// Pushing 0 (xzr) indicates no initial value.
|
||||||
__ Push(cp, x2, x1, xzr);
|
__ Push(cp, x2, x1, xzr);
|
||||||
}
|
}
|
||||||
__ CallRuntime(Runtime::kDeclareContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenDeclareContextSlot, 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -931,7 +931,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
|
|||||||
__ Push(cp, x2, x1);
|
__ Push(cp, x2, x1);
|
||||||
// Push initial value for function declaration.
|
// Push initial value for function declaration.
|
||||||
VisitForStackValue(declaration->fun());
|
VisitForStackValue(declaration->fun());
|
||||||
__ CallRuntime(Runtime::kDeclareContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenDeclareContextSlot, 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1006,7 +1006,7 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
|||||||
__ Mov(flags, Smi::FromInt(DeclareGlobalsFlags()));
|
__ Mov(flags, Smi::FromInt(DeclareGlobalsFlags()));
|
||||||
}
|
}
|
||||||
__ Push(cp, x11, flags);
|
__ Push(cp, x11, flags);
|
||||||
__ CallRuntime(Runtime::kDeclareGlobals, 3);
|
__ CallRuntime(Runtime::kHiddenDeclareGlobals, 3);
|
||||||
// Return value is ignored.
|
// Return value is ignored.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1014,7 +1014,7 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
|||||||
void FullCodeGenerator::DeclareModules(Handle<FixedArray> descriptions) {
|
void FullCodeGenerator::DeclareModules(Handle<FixedArray> descriptions) {
|
||||||
// Call the runtime to declare the modules.
|
// Call the runtime to declare the modules.
|
||||||
__ Push(descriptions);
|
__ Push(descriptions);
|
||||||
__ CallRuntime(Runtime::kDeclareModules, 1);
|
__ CallRuntime(Runtime::kHiddenDeclareModules, 1);
|
||||||
// Return value is ignored.
|
// Return value is ignored.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1367,7 +1367,7 @@ void FullCodeGenerator::EmitNewClosure(Handle<SharedFunctionInfo> info,
|
|||||||
__ LoadRoot(x10, pretenure ? Heap::kTrueValueRootIndex
|
__ LoadRoot(x10, pretenure ? Heap::kTrueValueRootIndex
|
||||||
: Heap::kFalseValueRootIndex);
|
: Heap::kFalseValueRootIndex);
|
||||||
__ Push(cp, x11, x10);
|
__ Push(cp, x11, x10);
|
||||||
__ CallRuntime(Runtime::kNewClosure, 3);
|
__ CallRuntime(Runtime::kHiddenNewClosure, 3);
|
||||||
}
|
}
|
||||||
context()->Plug(x0);
|
context()->Plug(x0);
|
||||||
}
|
}
|
||||||
@ -1483,7 +1483,7 @@ void FullCodeGenerator::EmitDynamicLookupFastCase(Variable* var,
|
|||||||
} else { // LET || CONST
|
} else { // LET || CONST
|
||||||
__ Mov(x0, Operand(var->name()));
|
__ Mov(x0, Operand(var->name()));
|
||||||
__ Push(x0);
|
__ Push(x0);
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__ B(done);
|
__ B(done);
|
||||||
@ -1561,7 +1561,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
|||||||
// binding in harmony mode.
|
// binding in harmony mode.
|
||||||
__ Mov(x0, Operand(var->name()));
|
__ Mov(x0, Operand(var->name()));
|
||||||
__ Push(x0);
|
__ Push(x0);
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
__ Bind(&done);
|
__ Bind(&done);
|
||||||
} else {
|
} else {
|
||||||
// Uninitalized const bindings outside of harmony mode are unholed.
|
// Uninitalized const bindings outside of harmony mode are unholed.
|
||||||
@ -1586,7 +1586,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
|||||||
Comment cmnt(masm_, "Lookup variable");
|
Comment cmnt(masm_, "Lookup variable");
|
||||||
__ Mov(x1, Operand(var->name()));
|
__ Mov(x1, Operand(var->name()));
|
||||||
__ Push(cp, x1); // Context and name.
|
__ Push(cp, x1); // Context and name.
|
||||||
__ CallRuntime(Runtime::kLoadContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlot, 2);
|
||||||
__ Bind(&done);
|
__ Bind(&done);
|
||||||
context()->Plug(x0);
|
context()->Plug(x0);
|
||||||
break;
|
break;
|
||||||
@ -1618,7 +1618,7 @@ void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
|
|||||||
__ Mov(x2, Operand(expr->pattern()));
|
__ Mov(x2, Operand(expr->pattern()));
|
||||||
__ Mov(x1, Operand(expr->flags()));
|
__ Mov(x1, Operand(expr->flags()));
|
||||||
__ Push(x4, x3, x2, x1);
|
__ Push(x4, x3, x2, x1);
|
||||||
__ CallRuntime(Runtime::kMaterializeRegExpLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenMaterializeRegExpLiteral, 4);
|
||||||
__ Mov(x5, x0);
|
__ Mov(x5, x0);
|
||||||
|
|
||||||
__ Bind(&materialized);
|
__ Bind(&materialized);
|
||||||
@ -1630,7 +1630,7 @@ void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
|
|||||||
__ Bind(&runtime_allocate);
|
__ Bind(&runtime_allocate);
|
||||||
__ Mov(x10, Smi::FromInt(size));
|
__ Mov(x10, Smi::FromInt(size));
|
||||||
__ Push(x5, x10);
|
__ Push(x5, x10);
|
||||||
__ CallRuntime(Runtime::kAllocateInNewSpace, 1);
|
__ CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1);
|
||||||
__ Pop(x5);
|
__ Pop(x5);
|
||||||
|
|
||||||
__ Bind(&allocated);
|
__ Bind(&allocated);
|
||||||
@ -1676,7 +1676,7 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
|||||||
flags != ObjectLiteral::kFastElements ||
|
flags != ObjectLiteral::kFastElements ||
|
||||||
properties_count > max_cloned_properties) {
|
properties_count > max_cloned_properties) {
|
||||||
__ Push(x3, x2, x1, x0);
|
__ Push(x3, x2, x1, x0);
|
||||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenCreateObjectLiteral, 4);
|
||||||
} else {
|
} else {
|
||||||
FastCloneShallowObjectStub stub(properties_count);
|
FastCloneShallowObjectStub stub(properties_count);
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
@ -1826,7 +1826,7 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) {
|
|||||||
length > FastCloneShallowArrayStub::kMaximumClonedLength) {
|
length > FastCloneShallowArrayStub::kMaximumClonedLength) {
|
||||||
__ Mov(x0, Smi::FromInt(flags));
|
__ Mov(x0, Smi::FromInt(flags));
|
||||||
__ Push(x3, x2, x1, x0);
|
__ Push(x3, x2, x1, x0);
|
||||||
__ CallRuntime(Runtime::kCreateArrayLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenCreateArrayLiteral, 4);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) ||
|
ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) ||
|
||||||
FLAG_smi_only_arrays);
|
FLAG_smi_only_arrays);
|
||||||
@ -2197,7 +2197,7 @@ void FullCodeGenerator::EmitCallStoreContextSlot(
|
|||||||
// jssp[16] : context.
|
// jssp[16] : context.
|
||||||
// jssp[24] : value.
|
// jssp[24] : value.
|
||||||
__ Push(x0, cp, x11, x10);
|
__ Push(x0, cp, x11, x10);
|
||||||
__ CallRuntime(Runtime::kStoreContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenStoreContextSlot, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2217,7 +2217,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
|
|||||||
__ Push(x0);
|
__ Push(x0);
|
||||||
__ Mov(x0, Operand(var->name()));
|
__ Mov(x0, Operand(var->name()));
|
||||||
__ Push(cp, x0); // Context and name.
|
__ Push(cp, x0); // Context and name.
|
||||||
__ CallRuntime(Runtime::kInitializeConstContextSlot, 3);
|
__ CallRuntime(Runtime::kHiddenInitializeConstContextSlot, 3);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(var->IsStackLocal() || var->IsContextSlot());
|
ASSERT(var->IsStackLocal() || var->IsContextSlot());
|
||||||
Label skip;
|
Label skip;
|
||||||
@ -2240,7 +2240,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
|
|||||||
__ JumpIfNotRoot(x10, Heap::kTheHoleValueRootIndex, &assign);
|
__ JumpIfNotRoot(x10, Heap::kTheHoleValueRootIndex, &assign);
|
||||||
__ Mov(x10, Operand(var->name()));
|
__ Mov(x10, Operand(var->name()));
|
||||||
__ Push(x10);
|
__ Push(x10);
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
// Perform the assignment.
|
// Perform the assignment.
|
||||||
__ Bind(&assign);
|
__ Bind(&assign);
|
||||||
EmitStoreToStackLocalOrContextSlot(var, location);
|
EmitStoreToStackLocalOrContextSlot(var, location);
|
||||||
@ -2480,7 +2480,7 @@ void FullCodeGenerator::EmitResolvePossiblyDirectEval(int arg_count) {
|
|||||||
__ Push(x10, x11);
|
__ Push(x10, x11);
|
||||||
|
|
||||||
// Do the runtime call.
|
// Do the runtime call.
|
||||||
__ CallRuntime(Runtime::kResolvePossiblyDirectEval, 5);
|
__ CallRuntime(Runtime::kHiddenResolvePossiblyDirectEval, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2496,8 +2496,8 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|||||||
Call::CallType call_type = expr->GetCallType(isolate());
|
Call::CallType call_type = expr->GetCallType(isolate());
|
||||||
|
|
||||||
if (call_type == Call::POSSIBLY_EVAL_CALL) {
|
if (call_type == Call::POSSIBLY_EVAL_CALL) {
|
||||||
// In a call to eval, we first call %ResolvePossiblyDirectEval to
|
// In a call to eval, we first call RuntimeHidden_ResolvePossiblyDirectEval
|
||||||
// resolve the function we need to call and the receiver of the
|
// to resolve the function we need to call and the receiver of the
|
||||||
// call. Then we call the resolved function using the given
|
// call. Then we call the resolved function using the given
|
||||||
// arguments.
|
// arguments.
|
||||||
ZoneList<Expression*>* args = expr->arguments();
|
ZoneList<Expression*>* args = expr->arguments();
|
||||||
@ -2557,7 +2557,7 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|||||||
__ Push(context_register());
|
__ Push(context_register());
|
||||||
__ Mov(x10, Operand(proxy->name()));
|
__ Mov(x10, Operand(proxy->name()));
|
||||||
__ Push(x10);
|
__ Push(x10);
|
||||||
__ CallRuntime(Runtime::kLoadContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlot, 2);
|
||||||
__ Push(x0, x1); // Receiver, function.
|
__ Push(x0, x1); // Receiver, function.
|
||||||
|
|
||||||
// If fast case code has been generated, emit code to push the
|
// If fast case code has been generated, emit code to push the
|
||||||
@ -3231,7 +3231,7 @@ void FullCodeGenerator::EmitDateField(CallRuntime* expr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
__ Bind(¬_date_object);
|
__ Bind(¬_date_object);
|
||||||
__ CallRuntime(Runtime::kThrowNotDateError, 0);
|
__ CallRuntime(Runtime::kHiddenThrowNotDateError, 0);
|
||||||
__ Bind(&done);
|
__ Bind(&done);
|
||||||
context()->Plug(x0);
|
context()->Plug(x0);
|
||||||
}
|
}
|
||||||
@ -3945,7 +3945,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
|||||||
// context where the variable was introduced.
|
// context where the variable was introduced.
|
||||||
__ Mov(x2, Operand(var->name()));
|
__ Mov(x2, Operand(var->name()));
|
||||||
__ Push(context_register(), x2);
|
__ Push(context_register(), x2);
|
||||||
__ CallRuntime(Runtime::kDeleteContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenDeleteContextSlot, 2);
|
||||||
context()->Plug(x0);
|
context()->Plug(x0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -4225,7 +4225,7 @@ void FullCodeGenerator::VisitForTypeofValue(Expression* expr) {
|
|||||||
__ Bind(&slow);
|
__ Bind(&slow);
|
||||||
__ Mov(x0, Operand(proxy->name()));
|
__ Mov(x0, Operand(proxy->name()));
|
||||||
__ Push(cp, x0);
|
__ Push(cp, x0);
|
||||||
__ CallRuntime(Runtime::kLoadContextSlotNoReferenceError, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlotNoReferenceError, 2);
|
||||||
PrepareForBailout(expr, TOS_REG);
|
PrepareForBailout(expr, TOS_REG);
|
||||||
__ Bind(&done);
|
__ Bind(&done);
|
||||||
|
|
||||||
@ -4476,7 +4476,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
|||||||
__ Cmp(__ StackPointer(), x1);
|
__ Cmp(__ StackPointer(), x1);
|
||||||
__ B(eq, &post_runtime);
|
__ B(eq, &post_runtime);
|
||||||
__ Push(x0); // generator object
|
__ Push(x0); // generator object
|
||||||
__ CallRuntime(Runtime::kSuspendJSGeneratorObject, 1);
|
__ CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject, 1);
|
||||||
__ Ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ Ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ Bind(&post_runtime);
|
__ Bind(&post_runtime);
|
||||||
__ Pop(result_register());
|
__ Pop(result_register());
|
||||||
@ -4547,7 +4547,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
|||||||
__ Mov(x1, cp);
|
__ Mov(x1, cp);
|
||||||
__ RecordWriteField(x0, JSGeneratorObject::kContextOffset, x1, x2,
|
__ RecordWriteField(x0, JSGeneratorObject::kContextOffset, x1, x2,
|
||||||
kLRHasBeenSaved, kDontSaveFPRegs);
|
kLRHasBeenSaved, kDontSaveFPRegs);
|
||||||
__ CallRuntime(Runtime::kSuspendJSGeneratorObject, 1);
|
__ CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject, 1);
|
||||||
__ Ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ Ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ Pop(x0); // result
|
__ Pop(x0); // result
|
||||||
EmitReturnSequence();
|
EmitReturnSequence();
|
||||||
@ -4606,7 +4606,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
Register function = x4;
|
Register function = x4;
|
||||||
|
|
||||||
// The value stays in x0, and is ultimately read by the resumed generator, as
|
// The value stays in x0, and is ultimately read by the resumed generator, as
|
||||||
// if the CallRuntime(Runtime::kSuspendJSGeneratorObject) returned it. Or it
|
// if CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject) returned it. Or it
|
||||||
// is read to throw the value when the resumed generator is already closed. r1
|
// is read to throw the value when the resumed generator is already closed. r1
|
||||||
// will hold the generator object until the activation has been resumed.
|
// will hold the generator object until the activation has been resumed.
|
||||||
VisitForStackValue(generator);
|
VisitForStackValue(generator);
|
||||||
@ -4688,7 +4688,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
|
|
||||||
__ Mov(x10, Smi::FromInt(resume_mode));
|
__ Mov(x10, Smi::FromInt(resume_mode));
|
||||||
__ Push(generator_object, result_register(), x10);
|
__ Push(generator_object, result_register(), x10);
|
||||||
__ CallRuntime(Runtime::kResumeJSGeneratorObject, 3);
|
__ CallRuntime(Runtime::kHiddenResumeJSGeneratorObject, 3);
|
||||||
// Not reached: the runtime call returns elsewhere.
|
// Not reached: the runtime call returns elsewhere.
|
||||||
__ Unreachable();
|
__ Unreachable();
|
||||||
|
|
||||||
@ -4703,14 +4703,14 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
} else {
|
} else {
|
||||||
// Throw the provided value.
|
// Throw the provided value.
|
||||||
__ Push(value_reg);
|
__ Push(value_reg);
|
||||||
__ CallRuntime(Runtime::kThrow, 1);
|
__ CallRuntime(Runtime::kHiddenThrow, 1);
|
||||||
}
|
}
|
||||||
__ B(&done);
|
__ B(&done);
|
||||||
|
|
||||||
// Throw error if we attempt to operate on a running generator.
|
// Throw error if we attempt to operate on a running generator.
|
||||||
__ Bind(&wrong_state);
|
__ Bind(&wrong_state);
|
||||||
__ Push(generator_object);
|
__ Push(generator_object);
|
||||||
__ CallRuntime(Runtime::kThrowGeneratorStateError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowGeneratorStateError, 1);
|
||||||
|
|
||||||
__ Bind(&done);
|
__ Bind(&done);
|
||||||
context()->Plug(result_register());
|
context()->Plug(result_register());
|
||||||
@ -4731,7 +4731,7 @@ void FullCodeGenerator::EmitCreateIteratorResult(bool done) {
|
|||||||
|
|
||||||
__ Bind(&gc_required);
|
__ Bind(&gc_required);
|
||||||
__ Push(Smi::FromInt(map->instance_size()));
|
__ Push(Smi::FromInt(map->instance_size()));
|
||||||
__ CallRuntime(Runtime::kAllocateInNewSpace, 1);
|
__ CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1);
|
||||||
__ Ldr(context_register(),
|
__ Ldr(context_register(),
|
||||||
MemOperand(fp, StandardFrameConstants::kContextOffset));
|
MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
|
|
||||||
|
@ -713,7 +713,7 @@ bool LCodeGen::GeneratePrologue() {
|
|||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
} else {
|
} else {
|
||||||
__ Push(x1);
|
__ Push(x1);
|
||||||
__ CallRuntime(Runtime::kNewFunctionContext, 1);
|
__ CallRuntime(Runtime::kHiddenNewFunctionContext, 1);
|
||||||
}
|
}
|
||||||
RecordSafepoint(Safepoint::kNoLazyDeopt);
|
RecordSafepoint(Safepoint::kNoLazyDeopt);
|
||||||
// Context is returned in x0. It replaces the context passed to us. It's
|
// Context is returned in x0. It replaces the context passed to us. It's
|
||||||
@ -1593,7 +1593,7 @@ void LCodeGen::DoDeferredAllocate(LAllocate* instr) {
|
|||||||
__ Push(size, x10);
|
__ Push(size, x10);
|
||||||
|
|
||||||
CallRuntimeFromDeferred(
|
CallRuntimeFromDeferred(
|
||||||
Runtime::kAllocateInTargetSpace, 2, instr, instr->context());
|
Runtime::kHiddenAllocateInTargetSpace, 2, instr, instr->context());
|
||||||
__ StoreToSafepointRegisterSlot(x0, ToRegister(instr->result()));
|
__ StoreToSafepointRegisterSlot(x0, ToRegister(instr->result()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2815,7 +2815,7 @@ void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) {
|
|||||||
__ Mov(x1, Operand(pretenure ? factory()->true_value()
|
__ Mov(x1, Operand(pretenure ? factory()->true_value()
|
||||||
: factory()->false_value()));
|
: factory()->false_value()));
|
||||||
__ Push(cp, x2, x1);
|
__ Push(cp, x2, x1);
|
||||||
CallRuntime(Runtime::kNewClosure, 3, instr);
|
CallRuntime(Runtime::kHiddenNewClosure, 3, instr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3756,7 +3756,7 @@ void LCodeGen::DoDeferredMathAbsTagged(LMathAbsTagged* instr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
{ PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
{ PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
||||||
CallRuntimeFromDeferred(Runtime::kAllocateHeapNumber, 0, instr,
|
CallRuntimeFromDeferred(Runtime::kHiddenAllocateHeapNumber, 0, instr,
|
||||||
instr->context());
|
instr->context());
|
||||||
__ StoreToSafepointRegisterSlot(x0, result);
|
__ StoreToSafepointRegisterSlot(x0, result);
|
||||||
}
|
}
|
||||||
@ -4451,11 +4451,11 @@ void LCodeGen::DoDeferredNumberTagD(LNumberTagD* instr) {
|
|||||||
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
||||||
// NumberTagU and NumberTagD use the context from the frame, rather than
|
// NumberTagU and NumberTagD use the context from the frame, rather than
|
||||||
// the environment's HContext or HInlinedContext value.
|
// the environment's HContext or HInlinedContext value.
|
||||||
// They only call Runtime::kAllocateHeapNumber.
|
// They only call Runtime::kHiddenAllocateHeapNumber.
|
||||||
// The corresponding HChange instructions are added in a phase that does
|
// The corresponding HChange instructions are added in a phase that does
|
||||||
// not have easy access to the local context.
|
// not have easy access to the local context.
|
||||||
__ Ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ Ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenAllocateHeapNumber);
|
||||||
RecordSafepointWithRegisters(
|
RecordSafepointWithRegisters(
|
||||||
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
||||||
__ StoreToSafepointRegisterSlot(x0, result);
|
__ StoreToSafepointRegisterSlot(x0, result);
|
||||||
@ -4517,11 +4517,11 @@ void LCodeGen::DoDeferredNumberTagU(LInstruction* instr,
|
|||||||
|
|
||||||
// NumberTagU and NumberTagD use the context from the frame, rather than
|
// NumberTagU and NumberTagD use the context from the frame, rather than
|
||||||
// the environment's HContext or HInlinedContext value.
|
// the environment's HContext or HInlinedContext value.
|
||||||
// They only call Runtime::kAllocateHeapNumber.
|
// They only call Runtime::kHiddenAllocateHeapNumber.
|
||||||
// The corresponding HChange instructions are added in a phase that does
|
// The corresponding HChange instructions are added in a phase that does
|
||||||
// not have easy access to the local context.
|
// not have easy access to the local context.
|
||||||
__ Ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ Ldr(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenAllocateHeapNumber);
|
||||||
RecordSafepointWithRegisters(
|
RecordSafepointWithRegisters(
|
||||||
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
||||||
__ StoreToSafepointRegisterSlot(x0, dst);
|
__ StoreToSafepointRegisterSlot(x0, dst);
|
||||||
@ -4937,14 +4937,14 @@ void LCodeGen::DoDeclareGlobals(LDeclareGlobals* instr) {
|
|||||||
__ LoadHeapObject(scratch1, instr->hydrogen()->pairs());
|
__ LoadHeapObject(scratch1, instr->hydrogen()->pairs());
|
||||||
__ Mov(scratch2, Smi::FromInt(instr->hydrogen()->flags()));
|
__ Mov(scratch2, Smi::FromInt(instr->hydrogen()->flags()));
|
||||||
__ Push(cp, scratch1, scratch2); // The context is the first argument.
|
__ Push(cp, scratch1, scratch2); // The context is the first argument.
|
||||||
CallRuntime(Runtime::kDeclareGlobals, 3, instr);
|
CallRuntime(Runtime::kHiddenDeclareGlobals, 3, instr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) {
|
void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) {
|
||||||
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
||||||
LoadContextFromDeferred(instr->context());
|
LoadContextFromDeferred(instr->context());
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kStackGuard);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenStackGuard);
|
||||||
RecordSafepointWithLazyDeopt(
|
RecordSafepointWithLazyDeopt(
|
||||||
instr, RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS);
|
instr, RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS);
|
||||||
ASSERT(instr->HasEnvironment());
|
ASSERT(instr->HasEnvironment());
|
||||||
@ -5635,7 +5635,7 @@ void LCodeGen::DoRegExpLiteral(LRegExpLiteral* instr) {
|
|||||||
__ Mov(x11, Operand(instr->hydrogen()->pattern()));
|
__ Mov(x11, Operand(instr->hydrogen()->pattern()));
|
||||||
__ Mov(x10, Operand(instr->hydrogen()->flags()));
|
__ Mov(x10, Operand(instr->hydrogen()->flags()));
|
||||||
__ Push(x7, x12, x11, x10);
|
__ Push(x7, x12, x11, x10);
|
||||||
CallRuntime(Runtime::kMaterializeRegExpLiteral, 4, instr);
|
CallRuntime(Runtime::kHiddenMaterializeRegExpLiteral, 4, instr);
|
||||||
__ Mov(x1, x0);
|
__ Mov(x1, x0);
|
||||||
|
|
||||||
__ Bind(&materialized);
|
__ Bind(&materialized);
|
||||||
@ -5648,7 +5648,7 @@ void LCodeGen::DoRegExpLiteral(LRegExpLiteral* instr) {
|
|||||||
__ Bind(&runtime_allocate);
|
__ Bind(&runtime_allocate);
|
||||||
__ Mov(x0, Smi::FromInt(size));
|
__ Mov(x0, Smi::FromInt(size));
|
||||||
__ Push(x1, x0);
|
__ Push(x1, x0);
|
||||||
CallRuntime(Runtime::kAllocateInNewSpace, 1, instr);
|
CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1, instr);
|
||||||
__ Pop(x1);
|
__ Pop(x1);
|
||||||
|
|
||||||
__ Bind(&allocated);
|
__ Bind(&allocated);
|
||||||
|
@ -1479,9 +1479,9 @@ void MacroAssembler::Throw(BailoutReason reason) {
|
|||||||
// We don't actually want to generate a pile of code for this, so just
|
// We don't actually want to generate a pile of code for this, so just
|
||||||
// claim there is a stack frame, without generating one.
|
// claim there is a stack frame, without generating one.
|
||||||
FrameScope scope(this, StackFrame::NONE);
|
FrameScope scope(this, StackFrame::NONE);
|
||||||
CallRuntime(Runtime::kThrowMessage, 1);
|
CallRuntime(Runtime::kHiddenThrowMessage, 1);
|
||||||
} else {
|
} else {
|
||||||
CallRuntime(Runtime::kThrowMessage, 1);
|
CallRuntime(Runtime::kHiddenThrowMessage, 1);
|
||||||
}
|
}
|
||||||
// ThrowMessage should not return here.
|
// ThrowMessage should not return here.
|
||||||
Unreachable();
|
Unreachable();
|
||||||
@ -1740,7 +1740,8 @@ void MacroAssembler::CallApiFunctionAndReturn(
|
|||||||
{
|
{
|
||||||
FrameScope frame(this, StackFrame::INTERNAL);
|
FrameScope frame(this, StackFrame::INTERNAL);
|
||||||
CallExternalReference(
|
CallExternalReference(
|
||||||
ExternalReference(Runtime::kPromoteScheduledException, isolate()), 0);
|
ExternalReference(
|
||||||
|
Runtime::kHiddenPromoteScheduledException, isolate()), 0);
|
||||||
}
|
}
|
||||||
B(&exception_handled);
|
B(&exception_handled);
|
||||||
|
|
||||||
|
@ -1706,12 +1706,12 @@ const char* Builtins::Lookup(byte* pc) {
|
|||||||
|
|
||||||
|
|
||||||
void Builtins::Generate_InterruptCheck(MacroAssembler* masm) {
|
void Builtins::Generate_InterruptCheck(MacroAssembler* masm) {
|
||||||
masm->TailCallRuntime(Runtime::kInterrupt, 0, 1);
|
masm->TailCallRuntime(Runtime::kHiddenInterrupt, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Builtins::Generate_StackCheck(MacroAssembler* masm) {
|
void Builtins::Generate_StackCheck(MacroAssembler* masm) {
|
||||||
masm->TailCallRuntime(Runtime::kStackGuard, 0, 1);
|
masm->TailCallRuntime(Runtime::kHiddenStackGuard, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -624,7 +624,7 @@ void FullCodeGenerator::AllocateModules(ZoneList<Declaration*>* declarations) {
|
|||||||
ASSERT(scope->interface()->Index() >= 0);
|
ASSERT(scope->interface()->Index() >= 0);
|
||||||
__ Push(Smi::FromInt(scope->interface()->Index()));
|
__ Push(Smi::FromInt(scope->interface()->Index()));
|
||||||
__ Push(scope->GetScopeInfo());
|
__ Push(scope->GetScopeInfo());
|
||||||
__ CallRuntime(Runtime::kPushModuleContext, 2);
|
__ CallRuntime(Runtime::kHiddenPushModuleContext, 2);
|
||||||
StoreToFrameField(StandardFrameConstants::kContextOffset,
|
StoreToFrameField(StandardFrameConstants::kContextOffset,
|
||||||
context_register());
|
context_register());
|
||||||
|
|
||||||
@ -764,7 +764,7 @@ void FullCodeGenerator::VisitModuleLiteral(ModuleLiteral* module) {
|
|||||||
ASSERT(interface->Index() >= 0);
|
ASSERT(interface->Index() >= 0);
|
||||||
__ Push(Smi::FromInt(interface->Index()));
|
__ Push(Smi::FromInt(interface->Index()));
|
||||||
__ Push(Smi::FromInt(0));
|
__ Push(Smi::FromInt(0));
|
||||||
__ CallRuntime(Runtime::kPushModuleContext, 2);
|
__ CallRuntime(Runtime::kHiddenPushModuleContext, 2);
|
||||||
StoreToFrameField(StandardFrameConstants::kContextOffset, context_register());
|
StoreToFrameField(StandardFrameConstants::kContextOffset, context_register());
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -1091,7 +1091,7 @@ void FullCodeGenerator::VisitBlock(Block* stmt) {
|
|||||||
{ Comment cmnt(masm_, "[ Extend block context");
|
{ Comment cmnt(masm_, "[ Extend block context");
|
||||||
__ Push(scope_->GetScopeInfo());
|
__ Push(scope_->GetScopeInfo());
|
||||||
PushFunctionArgumentForContextAllocation();
|
PushFunctionArgumentForContextAllocation();
|
||||||
__ CallRuntime(Runtime::kPushBlockContext, 2);
|
__ CallRuntime(Runtime::kHiddenPushBlockContext, 2);
|
||||||
|
|
||||||
// Replace the context stored in the frame.
|
// Replace the context stored in the frame.
|
||||||
StoreToFrameField(StandardFrameConstants::kContextOffset,
|
StoreToFrameField(StandardFrameConstants::kContextOffset,
|
||||||
@ -1123,7 +1123,7 @@ void FullCodeGenerator::VisitModuleStatement(ModuleStatement* stmt) {
|
|||||||
|
|
||||||
__ Push(Smi::FromInt(stmt->proxy()->interface()->Index()));
|
__ Push(Smi::FromInt(stmt->proxy()->interface()->Index()));
|
||||||
__ Push(Smi::FromInt(0));
|
__ Push(Smi::FromInt(0));
|
||||||
__ CallRuntime(Runtime::kPushModuleContext, 2);
|
__ CallRuntime(Runtime::kHiddenPushModuleContext, 2);
|
||||||
StoreToFrameField(
|
StoreToFrameField(
|
||||||
StandardFrameConstants::kContextOffset, context_register());
|
StandardFrameConstants::kContextOffset, context_register());
|
||||||
|
|
||||||
@ -1262,7 +1262,7 @@ void FullCodeGenerator::VisitWithStatement(WithStatement* stmt) {
|
|||||||
|
|
||||||
VisitForStackValue(stmt->expression());
|
VisitForStackValue(stmt->expression());
|
||||||
PushFunctionArgumentForContextAllocation();
|
PushFunctionArgumentForContextAllocation();
|
||||||
__ CallRuntime(Runtime::kPushWithContext, 2);
|
__ CallRuntime(Runtime::kHiddenPushWithContext, 2);
|
||||||
StoreToFrameField(StandardFrameConstants::kContextOffset, context_register());
|
StoreToFrameField(StandardFrameConstants::kContextOffset, context_register());
|
||||||
|
|
||||||
Scope* saved_scope = scope();
|
Scope* saved_scope = scope();
|
||||||
@ -1415,7 +1415,7 @@ void FullCodeGenerator::VisitTryCatchStatement(TryCatchStatement* stmt) {
|
|||||||
__ Push(stmt->variable()->name());
|
__ Push(stmt->variable()->name());
|
||||||
__ Push(result_register());
|
__ Push(result_register());
|
||||||
PushFunctionArgumentForContextAllocation();
|
PushFunctionArgumentForContextAllocation();
|
||||||
__ CallRuntime(Runtime::kPushCatchContext, 3);
|
__ CallRuntime(Runtime::kHiddenPushCatchContext, 3);
|
||||||
StoreToFrameField(StandardFrameConstants::kContextOffset,
|
StoreToFrameField(StandardFrameConstants::kContextOffset,
|
||||||
context_register());
|
context_register());
|
||||||
}
|
}
|
||||||
@ -1479,7 +1479,7 @@ void FullCodeGenerator::VisitTryFinallyStatement(TryFinallyStatement* stmt) {
|
|||||||
// rethrow the exception if it returns.
|
// rethrow the exception if it returns.
|
||||||
__ Call(&finally_entry);
|
__ Call(&finally_entry);
|
||||||
__ Push(result_register());
|
__ Push(result_register());
|
||||||
__ CallRuntime(Runtime::kReThrow, 1);
|
__ CallRuntime(Runtime::kHiddenReThrow, 1);
|
||||||
|
|
||||||
// Finally block implementation.
|
// Finally block implementation.
|
||||||
__ bind(&finally_entry);
|
__ bind(&finally_entry);
|
||||||
@ -1605,7 +1605,7 @@ void FullCodeGenerator::VisitNativeFunctionLiteral(
|
|||||||
void FullCodeGenerator::VisitThrow(Throw* expr) {
|
void FullCodeGenerator::VisitThrow(Throw* expr) {
|
||||||
Comment cmnt(masm_, "[ Throw");
|
Comment cmnt(masm_, "[ Throw");
|
||||||
VisitForStackValue(expr->exception());
|
VisitForStackValue(expr->exception());
|
||||||
__ CallRuntime(Runtime::kThrow, 1);
|
__ CallRuntime(Runtime::kHiddenThrow, 1);
|
||||||
// Never returns here.
|
// Never returns here.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7265,7 +7265,7 @@ class HToFastProperties V8_FINAL : public HUnaryOperation {
|
|||||||
ASSERT(value->IsCallRuntime());
|
ASSERT(value->IsCallRuntime());
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
const Runtime::Function* function = HCallRuntime::cast(value)->function();
|
const Runtime::Function* function = HCallRuntime::cast(value)->function();
|
||||||
ASSERT(function->function_id == Runtime::kCreateObjectLiteral);
|
ASSERT(function->function_id == Runtime::kHiddenCreateObjectLiteral);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1754,7 +1754,7 @@ HValue* HGraphBuilder::BuildNumberToString(HValue* object, Type* type) {
|
|||||||
Add<HPushArgument>(object);
|
Add<HPushArgument>(object);
|
||||||
Push(Add<HCallRuntime>(
|
Push(Add<HCallRuntime>(
|
||||||
isolate()->factory()->empty_string(),
|
isolate()->factory()->empty_string(),
|
||||||
Runtime::FunctionForId(Runtime::kNumberToStringSkipCache),
|
Runtime::FunctionForId(Runtime::kHiddenNumberToStringSkipCache),
|
||||||
1));
|
1));
|
||||||
}
|
}
|
||||||
if_found.End();
|
if_found.End();
|
||||||
@ -5115,7 +5115,7 @@ void HOptimizedGraphBuilder::VisitObjectLiteral(ObjectLiteral* expr) {
|
|||||||
// TODO(mvstanton): Add a flag to turn off creation of any
|
// TODO(mvstanton): Add a flag to turn off creation of any
|
||||||
// AllocationMementos for this call: we are in crankshaft and should have
|
// AllocationMementos for this call: we are in crankshaft and should have
|
||||||
// learned enough about transition behavior to stop emitting mementos.
|
// learned enough about transition behavior to stop emitting mementos.
|
||||||
Runtime::FunctionId function_id = Runtime::kCreateObjectLiteral;
|
Runtime::FunctionId function_id = Runtime::kHiddenCreateObjectLiteral;
|
||||||
literal = Add<HCallRuntime>(isolate()->factory()->empty_string(),
|
literal = Add<HCallRuntime>(isolate()->factory()->empty_string(),
|
||||||
Runtime::FunctionForId(function_id),
|
Runtime::FunctionForId(function_id),
|
||||||
4);
|
4);
|
||||||
@ -5272,7 +5272,7 @@ void HOptimizedGraphBuilder::VisitArrayLiteral(ArrayLiteral* expr) {
|
|||||||
// TODO(mvstanton): Consider a flag to turn off creation of any
|
// TODO(mvstanton): Consider a flag to turn off creation of any
|
||||||
// AllocationMementos for this call: we are in crankshaft and should have
|
// AllocationMementos for this call: we are in crankshaft and should have
|
||||||
// learned enough about transition behavior to stop emitting mementos.
|
// learned enough about transition behavior to stop emitting mementos.
|
||||||
Runtime::FunctionId function_id = Runtime::kCreateArrayLiteral;
|
Runtime::FunctionId function_id = Runtime::kHiddenCreateArrayLiteral;
|
||||||
literal = Add<HCallRuntime>(isolate()->factory()->empty_string(),
|
literal = Add<HCallRuntime>(isolate()->factory()->empty_string(),
|
||||||
Runtime::FunctionForId(function_id),
|
Runtime::FunctionForId(function_id),
|
||||||
4);
|
4);
|
||||||
@ -6190,7 +6190,7 @@ void HOptimizedGraphBuilder::VisitThrow(Throw* expr) {
|
|||||||
if (!FLAG_hydrogen_track_positions) SetSourcePosition(expr->position());
|
if (!FLAG_hydrogen_track_positions) SetSourcePosition(expr->position());
|
||||||
Add<HPushArgument>(value);
|
Add<HPushArgument>(value);
|
||||||
Add<HCallRuntime>(isolate()->factory()->empty_string(),
|
Add<HCallRuntime>(isolate()->factory()->empty_string(),
|
||||||
Runtime::FunctionForId(Runtime::kThrow), 1);
|
Runtime::FunctionForId(Runtime::kHiddenThrow), 1);
|
||||||
Add<HSimulate>(expr->id());
|
Add<HSimulate>(expr->id());
|
||||||
|
|
||||||
// If the throw definitely exits the function, we can finish with a dummy
|
// If the throw definitely exits the function, we can finish with a dummy
|
||||||
|
@ -115,7 +115,7 @@ void Builtins::Generate_InOptimizationQueue(MacroAssembler* masm) {
|
|||||||
__ cmp(esp, Operand::StaticVariable(stack_limit));
|
__ cmp(esp, Operand::StaticVariable(stack_limit));
|
||||||
__ j(above_equal, &ok, Label::kNear);
|
__ j(above_equal, &ok, Label::kNear);
|
||||||
|
|
||||||
CallRuntimePassFunction(masm, Runtime::kTryInstallOptimizedCode);
|
CallRuntimePassFunction(masm, Runtime::kHiddenTryInstallOptimizedCode);
|
||||||
GenerateTailCallToReturnedCode(masm);
|
GenerateTailCallToReturnedCode(masm);
|
||||||
|
|
||||||
__ bind(&ok);
|
__ bind(&ok);
|
||||||
@ -202,7 +202,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|||||||
|
|
||||||
__ push(edi); // constructor
|
__ push(edi); // constructor
|
||||||
// The call will replace the stub, so the countdown is only done once.
|
// The call will replace the stub, so the countdown is only done once.
|
||||||
__ CallRuntime(Runtime::kFinalizeInstanceSize, 1);
|
__ CallRuntime(Runtime::kHiddenFinalizeInstanceSize, 1);
|
||||||
|
|
||||||
__ pop(edi);
|
__ pop(edi);
|
||||||
__ pop(eax);
|
__ pop(eax);
|
||||||
@ -370,9 +370,9 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|||||||
// edi: function (constructor)
|
// edi: function (constructor)
|
||||||
__ push(edi);
|
__ push(edi);
|
||||||
if (create_memento) {
|
if (create_memento) {
|
||||||
__ CallRuntime(Runtime::kNewObjectWithAllocationSite, 2);
|
__ CallRuntime(Runtime::kHiddenNewObjectWithAllocationSite, 2);
|
||||||
} else {
|
} else {
|
||||||
__ CallRuntime(Runtime::kNewObject, 1);
|
__ CallRuntime(Runtime::kHiddenNewObject, 1);
|
||||||
}
|
}
|
||||||
__ mov(ebx, eax); // store result in ebx
|
__ mov(ebx, eax); // store result in ebx
|
||||||
|
|
||||||
@ -567,7 +567,7 @@ void Builtins::Generate_JSConstructEntryTrampoline(MacroAssembler* masm) {
|
|||||||
|
|
||||||
|
|
||||||
void Builtins::Generate_CompileUnoptimized(MacroAssembler* masm) {
|
void Builtins::Generate_CompileUnoptimized(MacroAssembler* masm) {
|
||||||
CallRuntimePassFunction(masm, Runtime::kCompileUnoptimized);
|
CallRuntimePassFunction(masm, Runtime::kHiddenCompileUnoptimized);
|
||||||
GenerateTailCallToReturnedCode(masm);
|
GenerateTailCallToReturnedCode(masm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -582,7 +582,7 @@ static void CallCompileOptimized(MacroAssembler* masm, bool concurrent) {
|
|||||||
// Whether to compile in a background thread.
|
// Whether to compile in a background thread.
|
||||||
__ Push(masm->isolate()->factory()->ToBoolean(concurrent));
|
__ Push(masm->isolate()->factory()->ToBoolean(concurrent));
|
||||||
|
|
||||||
__ CallRuntime(Runtime::kCompileOptimized, 2);
|
__ CallRuntime(Runtime::kHiddenCompileOptimized, 2);
|
||||||
// Restore receiver.
|
// Restore receiver.
|
||||||
__ pop(edi);
|
__ pop(edi);
|
||||||
}
|
}
|
||||||
@ -686,7 +686,7 @@ static void Generate_NotifyStubFailureHelper(MacroAssembler* masm,
|
|||||||
// stubs that tail call the runtime on deopts passing their parameters in
|
// stubs that tail call the runtime on deopts passing their parameters in
|
||||||
// registers.
|
// registers.
|
||||||
__ pushad();
|
__ pushad();
|
||||||
__ CallRuntime(Runtime::kNotifyStubFailure, 0, save_doubles);
|
__ CallRuntime(Runtime::kHiddenNotifyStubFailure, 0, save_doubles);
|
||||||
__ popad();
|
__ popad();
|
||||||
// Tear down internal frame.
|
// Tear down internal frame.
|
||||||
}
|
}
|
||||||
@ -718,7 +718,7 @@ static void Generate_NotifyDeoptimizedHelper(MacroAssembler* masm,
|
|||||||
|
|
||||||
// Pass deoptimization type to the runtime system.
|
// Pass deoptimization type to the runtime system.
|
||||||
__ push(Immediate(Smi::FromInt(static_cast<int>(type))));
|
__ push(Immediate(Smi::FromInt(static_cast<int>(type))));
|
||||||
__ CallRuntime(Runtime::kNotifyDeoptimized, 1);
|
__ CallRuntime(Runtime::kHiddenNotifyDeoptimized, 1);
|
||||||
|
|
||||||
// Tear down internal frame.
|
// Tear down internal frame.
|
||||||
}
|
}
|
||||||
@ -1419,7 +1419,7 @@ void Builtins::Generate_OsrAfterStackCheck(MacroAssembler* masm) {
|
|||||||
__ j(above_equal, &ok, Label::kNear);
|
__ j(above_equal, &ok, Label::kNear);
|
||||||
{
|
{
|
||||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
__ CallRuntime(Runtime::kHiddenStackGuard, 0);
|
||||||
}
|
}
|
||||||
__ jmp(masm->isolate()->builtins()->OnStackReplacement(),
|
__ jmp(masm->isolate()->builtins()->OnStackReplacement(),
|
||||||
RelocInfo::CODE_TARGET);
|
RelocInfo::CODE_TARGET);
|
||||||
|
@ -50,7 +50,7 @@ void FastNewClosureStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 1;
|
descriptor->register_param_count_ = 1;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kNewClosureFromStubFailure)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenNewClosureFromStubFailure)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -92,7 +92,8 @@ void FastCloneShallowArrayStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 3;
|
descriptor->register_param_count_ = 3;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kCreateArrayLiteralStubBailout)->entry;
|
Runtime::FunctionForId(
|
||||||
|
Runtime::kHiddenCreateArrayLiteralStubBailout)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -103,7 +104,7 @@ void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 4;
|
descriptor->register_param_count_ = 4;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenCreateObjectLiteral)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -237,7 +238,7 @@ static void InitializeArrayConstructorDescriptor(
|
|||||||
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
||||||
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kArrayConstructor)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenArrayConstructor)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -265,7 +266,7 @@ static void InitializeInternalArrayConstructorDescriptor(
|
|||||||
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
||||||
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kInternalArrayConstructor)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenInternalArrayConstructor)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1146,7 +1147,7 @@ void ArgumentsAccessStub::GenerateNewSloppySlow(MacroAssembler* masm) {
|
|||||||
__ mov(Operand(esp, 2 * kPointerSize), edx);
|
__ mov(Operand(esp, 2 * kPointerSize), edx);
|
||||||
|
|
||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ TailCallRuntime(Runtime::kNewArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1371,7 +1372,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) {
|
|||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ pop(eax); // Remove saved parameter count.
|
__ pop(eax); // Remove saved parameter count.
|
||||||
__ mov(Operand(esp, 1 * kPointerSize), ecx); // Patch argument count.
|
__ mov(Operand(esp, 1 * kPointerSize), ecx); // Patch argument count.
|
||||||
__ TailCallRuntime(Runtime::kNewArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1470,7 +1471,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
|
|||||||
|
|
||||||
// Do the runtime call to allocate the arguments object.
|
// Do the runtime call to allocate the arguments object.
|
||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ TailCallRuntime(Runtime::kNewStrictArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewStrictArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3129,7 +3130,7 @@ void StringCharCodeAtGenerator::GenerateSlow(
|
|||||||
} else {
|
} else {
|
||||||
ASSERT(index_flags_ == STRING_INDEX_IS_ARRAY_INDEX);
|
ASSERT(index_flags_ == STRING_INDEX_IS_ARRAY_INDEX);
|
||||||
// NumberToSmi discards numbers that are not exact integers.
|
// NumberToSmi discards numbers that are not exact integers.
|
||||||
__ CallRuntime(Runtime::kNumberToSmi, 1);
|
__ CallRuntime(Runtime::kHiddenNumberToSmi, 1);
|
||||||
}
|
}
|
||||||
if (!index_.is(eax)) {
|
if (!index_.is(eax)) {
|
||||||
// Save the conversion result before the pop instructions below
|
// Save the conversion result before the pop instructions below
|
||||||
|
@ -225,13 +225,13 @@ void FullCodeGenerator::Generate() {
|
|||||||
if (FLAG_harmony_scoping && info->scope()->is_global_scope()) {
|
if (FLAG_harmony_scoping && info->scope()->is_global_scope()) {
|
||||||
__ push(edi);
|
__ push(edi);
|
||||||
__ Push(info->scope()->GetScopeInfo());
|
__ Push(info->scope()->GetScopeInfo());
|
||||||
__ CallRuntime(Runtime::kNewGlobalContext, 2);
|
__ CallRuntime(Runtime::kHiddenNewGlobalContext, 2);
|
||||||
} else if (heap_slots <= FastNewContextStub::kMaximumSlots) {
|
} else if (heap_slots <= FastNewContextStub::kMaximumSlots) {
|
||||||
FastNewContextStub stub(heap_slots);
|
FastNewContextStub stub(heap_slots);
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
} else {
|
} else {
|
||||||
__ push(edi);
|
__ push(edi);
|
||||||
__ CallRuntime(Runtime::kNewFunctionContext, 1);
|
__ CallRuntime(Runtime::kHiddenNewFunctionContext, 1);
|
||||||
}
|
}
|
||||||
function_in_register = false;
|
function_in_register = false;
|
||||||
// Context is returned in eax. It replaces the context passed to us.
|
// Context is returned in eax. It replaces the context passed to us.
|
||||||
@ -824,7 +824,7 @@ void FullCodeGenerator::VisitVariableDeclaration(
|
|||||||
} else {
|
} else {
|
||||||
__ push(Immediate(Smi::FromInt(0))); // Indicates no initial value.
|
__ push(Immediate(Smi::FromInt(0))); // Indicates no initial value.
|
||||||
}
|
}
|
||||||
__ CallRuntime(Runtime::kDeclareContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenDeclareContextSlot, 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -877,7 +877,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
|
|||||||
__ push(Immediate(variable->name()));
|
__ push(Immediate(variable->name()));
|
||||||
__ push(Immediate(Smi::FromInt(NONE)));
|
__ push(Immediate(Smi::FromInt(NONE)));
|
||||||
VisitForStackValue(declaration->fun());
|
VisitForStackValue(declaration->fun());
|
||||||
__ CallRuntime(Runtime::kDeclareContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenDeclareContextSlot, 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -947,7 +947,7 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
|||||||
__ push(esi); // The context is the first argument.
|
__ push(esi); // The context is the first argument.
|
||||||
__ Push(pairs);
|
__ Push(pairs);
|
||||||
__ Push(Smi::FromInt(DeclareGlobalsFlags()));
|
__ Push(Smi::FromInt(DeclareGlobalsFlags()));
|
||||||
__ CallRuntime(Runtime::kDeclareGlobals, 3);
|
__ CallRuntime(Runtime::kHiddenDeclareGlobals, 3);
|
||||||
// Return value is ignored.
|
// Return value is ignored.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -955,7 +955,7 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
|||||||
void FullCodeGenerator::DeclareModules(Handle<FixedArray> descriptions) {
|
void FullCodeGenerator::DeclareModules(Handle<FixedArray> descriptions) {
|
||||||
// Call the runtime to declare the modules.
|
// Call the runtime to declare the modules.
|
||||||
__ Push(descriptions);
|
__ Push(descriptions);
|
||||||
__ CallRuntime(Runtime::kDeclareModules, 1);
|
__ CallRuntime(Runtime::kHiddenDeclareModules, 1);
|
||||||
// Return value is ignored.
|
// Return value is ignored.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1307,7 +1307,7 @@ void FullCodeGenerator::EmitNewClosure(Handle<SharedFunctionInfo> info,
|
|||||||
__ push(Immediate(pretenure
|
__ push(Immediate(pretenure
|
||||||
? isolate()->factory()->true_value()
|
? isolate()->factory()->true_value()
|
||||||
: isolate()->factory()->false_value()));
|
: isolate()->factory()->false_value()));
|
||||||
__ CallRuntime(Runtime::kNewClosure, 3);
|
__ CallRuntime(Runtime::kHiddenNewClosure, 3);
|
||||||
}
|
}
|
||||||
context()->Plug(eax);
|
context()->Plug(eax);
|
||||||
}
|
}
|
||||||
@ -1432,7 +1432,7 @@ void FullCodeGenerator::EmitDynamicLookupFastCase(Variable* var,
|
|||||||
__ mov(eax, isolate()->factory()->undefined_value());
|
__ mov(eax, isolate()->factory()->undefined_value());
|
||||||
} else { // LET || CONST
|
} else { // LET || CONST
|
||||||
__ push(Immediate(var->name()));
|
__ push(Immediate(var->name()));
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__ jmp(done);
|
__ jmp(done);
|
||||||
@ -1509,7 +1509,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
|||||||
// Throw a reference error when using an uninitialized let/const
|
// Throw a reference error when using an uninitialized let/const
|
||||||
// binding in harmony mode.
|
// binding in harmony mode.
|
||||||
__ push(Immediate(var->name()));
|
__ push(Immediate(var->name()));
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
} else {
|
} else {
|
||||||
// Uninitalized const bindings outside of harmony mode are unholed.
|
// Uninitalized const bindings outside of harmony mode are unholed.
|
||||||
ASSERT(var->mode() == CONST_LEGACY);
|
ASSERT(var->mode() == CONST_LEGACY);
|
||||||
@ -1533,7 +1533,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
|||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
__ push(esi); // Context.
|
__ push(esi); // Context.
|
||||||
__ push(Immediate(var->name()));
|
__ push(Immediate(var->name()));
|
||||||
__ CallRuntime(Runtime::kLoadContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlot, 2);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(eax);
|
context()->Plug(eax);
|
||||||
break;
|
break;
|
||||||
@ -1564,7 +1564,7 @@ void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
|
|||||||
__ push(Immediate(Smi::FromInt(expr->literal_index())));
|
__ push(Immediate(Smi::FromInt(expr->literal_index())));
|
||||||
__ push(Immediate(expr->pattern()));
|
__ push(Immediate(expr->pattern()));
|
||||||
__ push(Immediate(expr->flags()));
|
__ push(Immediate(expr->flags()));
|
||||||
__ CallRuntime(Runtime::kMaterializeRegExpLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenMaterializeRegExpLiteral, 4);
|
||||||
__ mov(ebx, eax);
|
__ mov(ebx, eax);
|
||||||
|
|
||||||
__ bind(&materialized);
|
__ bind(&materialized);
|
||||||
@ -1576,7 +1576,7 @@ void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
|
|||||||
__ bind(&runtime_allocate);
|
__ bind(&runtime_allocate);
|
||||||
__ push(ebx);
|
__ push(ebx);
|
||||||
__ push(Immediate(Smi::FromInt(size)));
|
__ push(Immediate(Smi::FromInt(size)));
|
||||||
__ CallRuntime(Runtime::kAllocateInNewSpace, 1);
|
__ CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1);
|
||||||
__ pop(ebx);
|
__ pop(ebx);
|
||||||
|
|
||||||
__ bind(&allocated);
|
__ bind(&allocated);
|
||||||
@ -1625,7 +1625,7 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
|||||||
__ push(Immediate(Smi::FromInt(expr->literal_index())));
|
__ push(Immediate(Smi::FromInt(expr->literal_index())));
|
||||||
__ push(Immediate(constant_properties));
|
__ push(Immediate(constant_properties));
|
||||||
__ push(Immediate(Smi::FromInt(flags)));
|
__ push(Immediate(Smi::FromInt(flags)));
|
||||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenCreateObjectLiteral, 4);
|
||||||
} else {
|
} else {
|
||||||
__ mov(edi, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
|
__ mov(edi, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
|
||||||
__ mov(eax, FieldOperand(edi, JSFunction::kLiteralsOffset));
|
__ mov(eax, FieldOperand(edi, JSFunction::kLiteralsOffset));
|
||||||
@ -1778,7 +1778,7 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) {
|
|||||||
__ push(Immediate(Smi::FromInt(expr->literal_index())));
|
__ push(Immediate(Smi::FromInt(expr->literal_index())));
|
||||||
__ push(Immediate(constant_elements));
|
__ push(Immediate(constant_elements));
|
||||||
__ push(Immediate(Smi::FromInt(flags)));
|
__ push(Immediate(Smi::FromInt(flags)));
|
||||||
__ CallRuntime(Runtime::kCreateArrayLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenCreateArrayLiteral, 4);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) ||
|
ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) ||
|
||||||
FLAG_smi_only_arrays);
|
FLAG_smi_only_arrays);
|
||||||
@ -1991,7 +1991,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
|||||||
__ cmp(esp, ebx);
|
__ cmp(esp, ebx);
|
||||||
__ j(equal, &post_runtime);
|
__ j(equal, &post_runtime);
|
||||||
__ push(eax); // generator object
|
__ push(eax); // generator object
|
||||||
__ CallRuntime(Runtime::kSuspendJSGeneratorObject, 1);
|
__ CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject, 1);
|
||||||
__ mov(context_register(),
|
__ mov(context_register(),
|
||||||
Operand(ebp, StandardFrameConstants::kContextOffset));
|
Operand(ebp, StandardFrameConstants::kContextOffset));
|
||||||
__ bind(&post_runtime);
|
__ bind(&post_runtime);
|
||||||
@ -2059,7 +2059,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
|||||||
__ mov(ecx, esi);
|
__ mov(ecx, esi);
|
||||||
__ RecordWriteField(eax, JSGeneratorObject::kContextOffset, ecx, edx,
|
__ RecordWriteField(eax, JSGeneratorObject::kContextOffset, ecx, edx,
|
||||||
kDontSaveFPRegs);
|
kDontSaveFPRegs);
|
||||||
__ CallRuntime(Runtime::kSuspendJSGeneratorObject, 1);
|
__ CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject, 1);
|
||||||
__ mov(context_register(),
|
__ mov(context_register(),
|
||||||
Operand(ebp, StandardFrameConstants::kContextOffset));
|
Operand(ebp, StandardFrameConstants::kContextOffset));
|
||||||
__ pop(eax); // result
|
__ pop(eax); // result
|
||||||
@ -2113,7 +2113,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
Expression *value,
|
Expression *value,
|
||||||
JSGeneratorObject::ResumeMode resume_mode) {
|
JSGeneratorObject::ResumeMode resume_mode) {
|
||||||
// The value stays in eax, and is ultimately read by the resumed generator, as
|
// The value stays in eax, and is ultimately read by the resumed generator, as
|
||||||
// if the CallRuntime(Runtime::kSuspendJSGeneratorObject) returned it. Or it
|
// if CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject) returned it. Or it
|
||||||
// is read to throw the value when the resumed generator is already closed.
|
// is read to throw the value when the resumed generator is already closed.
|
||||||
// ebx will hold the generator object until the activation has been resumed.
|
// ebx will hold the generator object until the activation has been resumed.
|
||||||
VisitForStackValue(generator);
|
VisitForStackValue(generator);
|
||||||
@ -2193,7 +2193,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
__ push(ebx);
|
__ push(ebx);
|
||||||
__ push(result_register());
|
__ push(result_register());
|
||||||
__ Push(Smi::FromInt(resume_mode));
|
__ Push(Smi::FromInt(resume_mode));
|
||||||
__ CallRuntime(Runtime::kResumeJSGeneratorObject, 3);
|
__ CallRuntime(Runtime::kHiddenResumeJSGeneratorObject, 3);
|
||||||
// Not reached: the runtime call returns elsewhere.
|
// Not reached: the runtime call returns elsewhere.
|
||||||
__ Abort(kGeneratorFailedToResume);
|
__ Abort(kGeneratorFailedToResume);
|
||||||
|
|
||||||
@ -2207,14 +2207,14 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
} else {
|
} else {
|
||||||
// Throw the provided value.
|
// Throw the provided value.
|
||||||
__ push(eax);
|
__ push(eax);
|
||||||
__ CallRuntime(Runtime::kThrow, 1);
|
__ CallRuntime(Runtime::kHiddenThrow, 1);
|
||||||
}
|
}
|
||||||
__ jmp(&done);
|
__ jmp(&done);
|
||||||
|
|
||||||
// Throw error if we attempt to operate on a running generator.
|
// Throw error if we attempt to operate on a running generator.
|
||||||
__ bind(&wrong_state);
|
__ bind(&wrong_state);
|
||||||
__ push(ebx);
|
__ push(ebx);
|
||||||
__ CallRuntime(Runtime::kThrowGeneratorStateError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowGeneratorStateError, 1);
|
||||||
|
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(result_register());
|
context()->Plug(result_register());
|
||||||
@ -2232,7 +2232,7 @@ void FullCodeGenerator::EmitCreateIteratorResult(bool done) {
|
|||||||
|
|
||||||
__ bind(&gc_required);
|
__ bind(&gc_required);
|
||||||
__ Push(Smi::FromInt(map->instance_size()));
|
__ Push(Smi::FromInt(map->instance_size()));
|
||||||
__ CallRuntime(Runtime::kAllocateInNewSpace, 1);
|
__ CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1);
|
||||||
__ mov(context_register(),
|
__ mov(context_register(),
|
||||||
Operand(ebp, StandardFrameConstants::kContextOffset));
|
Operand(ebp, StandardFrameConstants::kContextOffset));
|
||||||
|
|
||||||
@ -2444,7 +2444,7 @@ void FullCodeGenerator::EmitCallStoreContextSlot(
|
|||||||
__ push(esi); // Context.
|
__ push(esi); // Context.
|
||||||
__ push(Immediate(name));
|
__ push(Immediate(name));
|
||||||
__ push(Immediate(Smi::FromInt(strict_mode)));
|
__ push(Immediate(Smi::FromInt(strict_mode)));
|
||||||
__ CallRuntime(Runtime::kStoreContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenStoreContextSlot, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2463,7 +2463,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
|
|||||||
__ push(eax);
|
__ push(eax);
|
||||||
__ push(esi);
|
__ push(esi);
|
||||||
__ push(Immediate(var->name()));
|
__ push(Immediate(var->name()));
|
||||||
__ CallRuntime(Runtime::kInitializeConstContextSlot, 3);
|
__ CallRuntime(Runtime::kHiddenInitializeConstContextSlot, 3);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(var->IsStackLocal() || var->IsContextSlot());
|
ASSERT(var->IsStackLocal() || var->IsContextSlot());
|
||||||
Label skip;
|
Label skip;
|
||||||
@ -2487,7 +2487,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
|
|||||||
__ cmp(edx, isolate()->factory()->the_hole_value());
|
__ cmp(edx, isolate()->factory()->the_hole_value());
|
||||||
__ j(not_equal, &assign, Label::kNear);
|
__ j(not_equal, &assign, Label::kNear);
|
||||||
__ push(Immediate(var->name()));
|
__ push(Immediate(var->name()));
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
__ bind(&assign);
|
__ bind(&assign);
|
||||||
EmitStoreToStackLocalOrContextSlot(var, location);
|
EmitStoreToStackLocalOrContextSlot(var, location);
|
||||||
}
|
}
|
||||||
@ -2722,7 +2722,7 @@ void FullCodeGenerator::EmitResolvePossiblyDirectEval(int arg_count) {
|
|||||||
__ push(Immediate(Smi::FromInt(scope()->start_position())));
|
__ push(Immediate(Smi::FromInt(scope()->start_position())));
|
||||||
|
|
||||||
// Do the runtime call.
|
// Do the runtime call.
|
||||||
__ CallRuntime(Runtime::kResolvePossiblyDirectEval, 5);
|
__ CallRuntime(Runtime::kHiddenResolvePossiblyDirectEval, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2738,8 +2738,8 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|||||||
Call::CallType call_type = expr->GetCallType(isolate());
|
Call::CallType call_type = expr->GetCallType(isolate());
|
||||||
|
|
||||||
if (call_type == Call::POSSIBLY_EVAL_CALL) {
|
if (call_type == Call::POSSIBLY_EVAL_CALL) {
|
||||||
// In a call to eval, we first call %ResolvePossiblyDirectEval to
|
// In a call to eval, we first call RuntimeHidden_ResolvePossiblyDirectEval
|
||||||
// resolve the function we need to call and the receiver of the call.
|
// to resolve the function we need to call and the receiver of the call.
|
||||||
// Then we call the resolved function using the given arguments.
|
// Then we call the resolved function using the given arguments.
|
||||||
ZoneList<Expression*>* args = expr->arguments();
|
ZoneList<Expression*>* args = expr->arguments();
|
||||||
int arg_count = args->length();
|
int arg_count = args->length();
|
||||||
@ -2789,7 +2789,7 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|||||||
// the object holding it (returned in edx).
|
// the object holding it (returned in edx).
|
||||||
__ push(context_register());
|
__ push(context_register());
|
||||||
__ push(Immediate(proxy->name()));
|
__ push(Immediate(proxy->name()));
|
||||||
__ CallRuntime(Runtime::kLoadContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlot, 2);
|
||||||
__ push(eax); // Function.
|
__ push(eax); // Function.
|
||||||
__ push(edx); // Receiver.
|
__ push(edx); // Receiver.
|
||||||
|
|
||||||
@ -3453,7 +3453,7 @@ void FullCodeGenerator::EmitDateField(CallRuntime* expr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
__ bind(¬_date_object);
|
__ bind(¬_date_object);
|
||||||
__ CallRuntime(Runtime::kThrowNotDateError, 0);
|
__ CallRuntime(Runtime::kHiddenThrowNotDateError, 0);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(result);
|
context()->Plug(result);
|
||||||
}
|
}
|
||||||
@ -4234,7 +4234,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
|||||||
// context where the variable was introduced.
|
// context where the variable was introduced.
|
||||||
__ push(context_register());
|
__ push(context_register());
|
||||||
__ push(Immediate(var->name()));
|
__ push(Immediate(var->name()));
|
||||||
__ CallRuntime(Runtime::kDeleteContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenDeleteContextSlot, 2);
|
||||||
context()->Plug(eax);
|
context()->Plug(eax);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -4527,7 +4527,7 @@ void FullCodeGenerator::VisitForTypeofValue(Expression* expr) {
|
|||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
__ push(esi);
|
__ push(esi);
|
||||||
__ push(Immediate(proxy->name()));
|
__ push(Immediate(proxy->name()));
|
||||||
__ CallRuntime(Runtime::kLoadContextSlotNoReferenceError, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlotNoReferenceError, 2);
|
||||||
PrepareForBailout(expr, TOS_REG);
|
PrepareForBailout(expr, TOS_REG);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
|
|
||||||
|
@ -297,7 +297,7 @@ bool LCodeGen::GeneratePrologue() {
|
|||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
} else {
|
} else {
|
||||||
__ push(edi);
|
__ push(edi);
|
||||||
__ CallRuntime(Runtime::kNewFunctionContext, 1);
|
__ CallRuntime(Runtime::kHiddenNewFunctionContext, 1);
|
||||||
}
|
}
|
||||||
RecordSafepoint(Safepoint::kNoLazyDeopt);
|
RecordSafepoint(Safepoint::kNoLazyDeopt);
|
||||||
// Context is returned in eax. It replaces the context passed to us.
|
// Context is returned in eax. It replaces the context passed to us.
|
||||||
@ -3739,7 +3739,7 @@ void LCodeGen::DoDeclareGlobals(LDeclareGlobals* instr) {
|
|||||||
__ push(esi); // The context is the first argument.
|
__ push(esi); // The context is the first argument.
|
||||||
__ push(Immediate(instr->hydrogen()->pairs()));
|
__ push(Immediate(instr->hydrogen()->pairs()));
|
||||||
__ push(Immediate(Smi::FromInt(instr->hydrogen()->flags())));
|
__ push(Immediate(Smi::FromInt(instr->hydrogen()->flags())));
|
||||||
CallRuntime(Runtime::kDeclareGlobals, 3, instr);
|
CallRuntime(Runtime::kHiddenDeclareGlobals, 3, instr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3863,7 +3863,7 @@ void LCodeGen::DoDeferredMathAbsTaggedHeapNumber(LMathAbs* instr) {
|
|||||||
|
|
||||||
// Slow case: Call the runtime system to do the number allocation.
|
// Slow case: Call the runtime system to do the number allocation.
|
||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
CallRuntimeFromDeferred(Runtime::kAllocateHeapNumber, 0,
|
CallRuntimeFromDeferred(Runtime::kHiddenAllocateHeapNumber, 0,
|
||||||
instr, instr->context());
|
instr, instr->context());
|
||||||
// Set the pointer to the new heap number in tmp.
|
// Set the pointer to the new heap number in tmp.
|
||||||
if (!tmp.is(eax)) __ mov(tmp, eax);
|
if (!tmp.is(eax)) __ mov(tmp, eax);
|
||||||
@ -5024,11 +5024,11 @@ void LCodeGen::DoDeferredNumberTagIU(LInstruction* instr,
|
|||||||
|
|
||||||
// NumberTagI and NumberTagD use the context from the frame, rather than
|
// NumberTagI and NumberTagD use the context from the frame, rather than
|
||||||
// the environment's HContext or HInlinedContext value.
|
// the environment's HContext or HInlinedContext value.
|
||||||
// They only call Runtime::kAllocateHeapNumber.
|
// They only call Runtime::kHiddenAllocateHeapNumber.
|
||||||
// The corresponding HChange instructions are added in a phase that does
|
// The corresponding HChange instructions are added in a phase that does
|
||||||
// not have easy access to the local context.
|
// not have easy access to the local context.
|
||||||
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset));
|
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenAllocateHeapNumber);
|
||||||
RecordSafepointWithRegisters(
|
RecordSafepointWithRegisters(
|
||||||
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
||||||
__ StoreToSafepointRegisterSlot(reg, eax);
|
__ StoreToSafepointRegisterSlot(reg, eax);
|
||||||
@ -5099,11 +5099,11 @@ void LCodeGen::DoDeferredNumberTagD(LNumberTagD* instr) {
|
|||||||
PushSafepointRegistersScope scope(this);
|
PushSafepointRegistersScope scope(this);
|
||||||
// NumberTagI and NumberTagD use the context from the frame, rather than
|
// NumberTagI and NumberTagD use the context from the frame, rather than
|
||||||
// the environment's HContext or HInlinedContext value.
|
// the environment's HContext or HInlinedContext value.
|
||||||
// They only call Runtime::kAllocateHeapNumber.
|
// They only call Runtime::kHiddenAllocateHeapNumber.
|
||||||
// The corresponding HChange instructions are added in a phase that does
|
// The corresponding HChange instructions are added in a phase that does
|
||||||
// not have easy access to the local context.
|
// not have easy access to the local context.
|
||||||
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset));
|
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenAllocateHeapNumber);
|
||||||
RecordSafepointWithRegisters(
|
RecordSafepointWithRegisters(
|
||||||
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
||||||
__ StoreToSafepointRegisterSlot(reg, eax);
|
__ StoreToSafepointRegisterSlot(reg, eax);
|
||||||
@ -5926,7 +5926,7 @@ void LCodeGen::DoDeferredAllocate(LAllocate* instr) {
|
|||||||
__ push(Immediate(Smi::FromInt(flags)));
|
__ push(Immediate(Smi::FromInt(flags)));
|
||||||
|
|
||||||
CallRuntimeFromDeferred(
|
CallRuntimeFromDeferred(
|
||||||
Runtime::kAllocateInTargetSpace, 2, instr, instr->context());
|
Runtime::kHiddenAllocateInTargetSpace, 2, instr, instr->context());
|
||||||
__ StoreToSafepointRegisterSlot(result, eax);
|
__ StoreToSafepointRegisterSlot(result, eax);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5959,7 +5959,7 @@ void LCodeGen::DoRegExpLiteral(LRegExpLiteral* instr) {
|
|||||||
__ push(Immediate(Smi::FromInt(instr->hydrogen()->literal_index())));
|
__ push(Immediate(Smi::FromInt(instr->hydrogen()->literal_index())));
|
||||||
__ push(Immediate(instr->hydrogen()->pattern()));
|
__ push(Immediate(instr->hydrogen()->pattern()));
|
||||||
__ push(Immediate(instr->hydrogen()->flags()));
|
__ push(Immediate(instr->hydrogen()->flags()));
|
||||||
CallRuntime(Runtime::kMaterializeRegExpLiteral, 4, instr);
|
CallRuntime(Runtime::kHiddenMaterializeRegExpLiteral, 4, instr);
|
||||||
__ mov(ebx, eax);
|
__ mov(ebx, eax);
|
||||||
|
|
||||||
__ bind(&materialized);
|
__ bind(&materialized);
|
||||||
@ -5971,7 +5971,7 @@ void LCodeGen::DoRegExpLiteral(LRegExpLiteral* instr) {
|
|||||||
__ bind(&runtime_allocate);
|
__ bind(&runtime_allocate);
|
||||||
__ push(ebx);
|
__ push(ebx);
|
||||||
__ push(Immediate(Smi::FromInt(size)));
|
__ push(Immediate(Smi::FromInt(size)));
|
||||||
CallRuntime(Runtime::kAllocateInNewSpace, 1, instr);
|
CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1, instr);
|
||||||
__ pop(ebx);
|
__ pop(ebx);
|
||||||
|
|
||||||
__ bind(&allocated);
|
__ bind(&allocated);
|
||||||
@ -6005,7 +6005,7 @@ void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) {
|
|||||||
__ push(Immediate(instr->hydrogen()->shared_info()));
|
__ push(Immediate(instr->hydrogen()->shared_info()));
|
||||||
__ push(Immediate(pretenure ? factory()->true_value()
|
__ push(Immediate(pretenure ? factory()->true_value()
|
||||||
: factory()->false_value()));
|
: factory()->false_value()));
|
||||||
CallRuntime(Runtime::kNewClosure, 3, instr);
|
CallRuntime(Runtime::kHiddenNewClosure, 3, instr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6185,7 +6185,7 @@ void LCodeGen::DoDummyUse(LDummyUse* instr) {
|
|||||||
void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) {
|
void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) {
|
||||||
PushSafepointRegistersScope scope(this);
|
PushSafepointRegistersScope scope(this);
|
||||||
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset));
|
__ mov(esi, Operand(ebp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kStackGuard);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenStackGuard);
|
||||||
RecordSafepointWithLazyDeopt(
|
RecordSafepointWithLazyDeopt(
|
||||||
instr, RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS);
|
instr, RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS);
|
||||||
ASSERT(instr->HasEnvironment());
|
ASSERT(instr->HasEnvironment());
|
||||||
|
@ -2429,7 +2429,7 @@ void MacroAssembler::CallApiFunctionAndReturn(
|
|||||||
bind(&promote_scheduled_exception);
|
bind(&promote_scheduled_exception);
|
||||||
{
|
{
|
||||||
FrameScope frame(this, StackFrame::INTERNAL);
|
FrameScope frame(this, StackFrame::INTERNAL);
|
||||||
CallRuntime(Runtime::kPromoteScheduledException, 0);
|
CallRuntime(Runtime::kHiddenPromoteScheduledException, 0);
|
||||||
}
|
}
|
||||||
jmp(&exception_handled);
|
jmp(&exception_handled);
|
||||||
|
|
||||||
@ -3021,9 +3021,9 @@ void MacroAssembler::Throw(BailoutReason reason) {
|
|||||||
// We don't actually want to generate a pile of code for this, so just
|
// We don't actually want to generate a pile of code for this, so just
|
||||||
// claim there is a stack frame, without generating one.
|
// claim there is a stack frame, without generating one.
|
||||||
FrameScope scope(this, StackFrame::NONE);
|
FrameScope scope(this, StackFrame::NONE);
|
||||||
CallRuntime(Runtime::kThrowMessage, 1);
|
CallRuntime(Runtime::kHiddenThrowMessage, 1);
|
||||||
} else {
|
} else {
|
||||||
CallRuntime(Runtime::kThrowMessage, 1);
|
CallRuntime(Runtime::kHiddenThrowMessage, 1);
|
||||||
}
|
}
|
||||||
// will not return here
|
// will not return here
|
||||||
int3();
|
int3();
|
||||||
|
@ -332,7 +332,7 @@ void Builtins::Generate_InOptimizationQueue(MacroAssembler* masm) {
|
|||||||
__ LoadRoot(t0, Heap::kStackLimitRootIndex);
|
__ LoadRoot(t0, Heap::kStackLimitRootIndex);
|
||||||
__ Branch(&ok, hs, sp, Operand(t0));
|
__ Branch(&ok, hs, sp, Operand(t0));
|
||||||
|
|
||||||
CallRuntimePassFunction(masm, Runtime::kTryInstallOptimizedCode);
|
CallRuntimePassFunction(masm, Runtime::kHiddenTryInstallOptimizedCode);
|
||||||
GenerateTailCallToReturnedCode(masm);
|
GenerateTailCallToReturnedCode(masm);
|
||||||
|
|
||||||
__ bind(&ok);
|
__ bind(&ok);
|
||||||
@ -427,7 +427,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|||||||
|
|
||||||
__ Push(a1, a2, a1); // a1 = Constructor.
|
__ Push(a1, a2, a1); // a1 = Constructor.
|
||||||
// The call will replace the stub, so the countdown is only done once.
|
// The call will replace the stub, so the countdown is only done once.
|
||||||
__ CallRuntime(Runtime::kFinalizeInstanceSize, 1);
|
__ CallRuntime(Runtime::kHiddenFinalizeInstanceSize, 1);
|
||||||
|
|
||||||
__ Pop(a1, a2);
|
__ Pop(a1, a2);
|
||||||
|
|
||||||
@ -624,9 +624,9 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|||||||
|
|
||||||
__ push(a1); // Argument for Runtime_NewObject.
|
__ push(a1); // Argument for Runtime_NewObject.
|
||||||
if (create_memento) {
|
if (create_memento) {
|
||||||
__ CallRuntime(Runtime::kNewObjectWithAllocationSite, 2);
|
__ CallRuntime(Runtime::kHiddenNewObjectWithAllocationSite, 2);
|
||||||
} else {
|
} else {
|
||||||
__ CallRuntime(Runtime::kNewObject, 1);
|
__ CallRuntime(Runtime::kHiddenNewObject, 1);
|
||||||
}
|
}
|
||||||
__ mov(t4, v0);
|
__ mov(t4, v0);
|
||||||
|
|
||||||
@ -854,7 +854,7 @@ void Builtins::Generate_JSConstructEntryTrampoline(MacroAssembler* masm) {
|
|||||||
|
|
||||||
|
|
||||||
void Builtins::Generate_CompileUnoptimized(MacroAssembler* masm) {
|
void Builtins::Generate_CompileUnoptimized(MacroAssembler* masm) {
|
||||||
CallRuntimePassFunction(masm, Runtime::kCompileUnoptimized);
|
CallRuntimePassFunction(masm, Runtime::kHiddenCompileUnoptimized);
|
||||||
GenerateTailCallToReturnedCode(masm);
|
GenerateTailCallToReturnedCode(masm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -867,7 +867,7 @@ static void CallCompileOptimized(MacroAssembler* masm, bool concurrent) {
|
|||||||
// Whether to compile in a background thread.
|
// Whether to compile in a background thread.
|
||||||
__ Push(masm->isolate()->factory()->ToBoolean(concurrent));
|
__ Push(masm->isolate()->factory()->ToBoolean(concurrent));
|
||||||
|
|
||||||
__ CallRuntime(Runtime::kCompileOptimized, 2);
|
__ CallRuntime(Runtime::kHiddenCompileOptimized, 2);
|
||||||
// Restore receiver.
|
// Restore receiver.
|
||||||
__ Pop(a1);
|
__ Pop(a1);
|
||||||
}
|
}
|
||||||
@ -976,7 +976,7 @@ static void Generate_NotifyStubFailureHelper(MacroAssembler* masm,
|
|||||||
// registers.
|
// registers.
|
||||||
__ MultiPush(kJSCallerSaved | kCalleeSaved);
|
__ MultiPush(kJSCallerSaved | kCalleeSaved);
|
||||||
// Pass the function and deoptimization type to the runtime system.
|
// Pass the function and deoptimization type to the runtime system.
|
||||||
__ CallRuntime(Runtime::kNotifyStubFailure, 0, save_doubles);
|
__ CallRuntime(Runtime::kHiddenNotifyStubFailure, 0, save_doubles);
|
||||||
__ MultiPop(kJSCallerSaved | kCalleeSaved);
|
__ MultiPop(kJSCallerSaved | kCalleeSaved);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1002,7 +1002,7 @@ static void Generate_NotifyDeoptimizedHelper(MacroAssembler* masm,
|
|||||||
// Pass the function and deoptimization type to the runtime system.
|
// Pass the function and deoptimization type to the runtime system.
|
||||||
__ li(a0, Operand(Smi::FromInt(static_cast<int>(type))));
|
__ li(a0, Operand(Smi::FromInt(static_cast<int>(type))));
|
||||||
__ push(a0);
|
__ push(a0);
|
||||||
__ CallRuntime(Runtime::kNotifyDeoptimized, 1);
|
__ CallRuntime(Runtime::kHiddenNotifyDeoptimized, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the full codegen state from the stack and untag it -> t2.
|
// Get the full codegen state from the stack and untag it -> t2.
|
||||||
@ -1084,7 +1084,7 @@ void Builtins::Generate_OsrAfterStackCheck(MacroAssembler* masm) {
|
|||||||
__ Branch(&ok, hs, sp, Operand(at));
|
__ Branch(&ok, hs, sp, Operand(at));
|
||||||
{
|
{
|
||||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
__ CallRuntime(Runtime::kHiddenStackGuard, 0);
|
||||||
}
|
}
|
||||||
__ Jump(masm->isolate()->builtins()->OnStackReplacement(),
|
__ Jump(masm->isolate()->builtins()->OnStackReplacement(),
|
||||||
RelocInfo::CODE_TARGET);
|
RelocInfo::CODE_TARGET);
|
||||||
|
@ -46,7 +46,7 @@ void FastNewClosureStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 1;
|
descriptor->register_param_count_ = 1;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kNewClosureFromStubFailure)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenNewClosureFromStubFailure)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -88,7 +88,8 @@ void FastCloneShallowArrayStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 3;
|
descriptor->register_param_count_ = 3;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kCreateArrayLiteralStubBailout)->entry;
|
Runtime::FunctionForId(
|
||||||
|
Runtime::kHiddenCreateArrayLiteralStubBailout)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -99,7 +100,7 @@ void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 4;
|
descriptor->register_param_count_ = 4;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenCreateObjectLiteral)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -247,7 +248,7 @@ static void InitializeArrayConstructorDescriptor(
|
|||||||
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
||||||
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kArrayConstructor)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenArrayConstructor)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -275,7 +276,7 @@ static void InitializeInternalArrayConstructorDescriptor(
|
|||||||
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
||||||
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kInternalArrayConstructor)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenInternalArrayConstructor)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2263,7 +2264,7 @@ void ArgumentsAccessStub::GenerateNewSloppySlow(MacroAssembler* masm) {
|
|||||||
__ sw(a3, MemOperand(sp, 1 * kPointerSize));
|
__ sw(a3, MemOperand(sp, 1 * kPointerSize));
|
||||||
|
|
||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ TailCallRuntime(Runtime::kNewArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2482,7 +2483,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) {
|
|||||||
// a2 = argument count (tagged)
|
// a2 = argument count (tagged)
|
||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ sw(a2, MemOperand(sp, 0 * kPointerSize)); // Patch argument count.
|
__ sw(a2, MemOperand(sp, 0 * kPointerSize)); // Patch argument count.
|
||||||
__ TailCallRuntime(Runtime::kNewArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2580,7 +2581,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
|
|||||||
|
|
||||||
// Do the runtime call to allocate the arguments object.
|
// Do the runtime call to allocate the arguments object.
|
||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ TailCallRuntime(Runtime::kNewStrictArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewStrictArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3364,7 +3365,7 @@ void StringCharCodeAtGenerator::GenerateSlow(
|
|||||||
} else {
|
} else {
|
||||||
ASSERT(index_flags_ == STRING_INDEX_IS_ARRAY_INDEX);
|
ASSERT(index_flags_ == STRING_INDEX_IS_ARRAY_INDEX);
|
||||||
// NumberToSmi discards numbers that are not exact integers.
|
// NumberToSmi discards numbers that are not exact integers.
|
||||||
__ CallRuntime(Runtime::kNumberToSmi, 1);
|
__ CallRuntime(Runtime::kHiddenNumberToSmi, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save the conversion result before the pop instructions below
|
// Save the conversion result before the pop instructions below
|
||||||
|
@ -243,13 +243,13 @@ void FullCodeGenerator::Generate() {
|
|||||||
if (FLAG_harmony_scoping && info->scope()->is_global_scope()) {
|
if (FLAG_harmony_scoping && info->scope()->is_global_scope()) {
|
||||||
__ push(a1);
|
__ push(a1);
|
||||||
__ Push(info->scope()->GetScopeInfo());
|
__ Push(info->scope()->GetScopeInfo());
|
||||||
__ CallRuntime(Runtime::kNewGlobalContext, 2);
|
__ CallRuntime(Runtime::kHiddenNewGlobalContext, 2);
|
||||||
} else if (heap_slots <= FastNewContextStub::kMaximumSlots) {
|
} else if (heap_slots <= FastNewContextStub::kMaximumSlots) {
|
||||||
FastNewContextStub stub(heap_slots);
|
FastNewContextStub stub(heap_slots);
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
} else {
|
} else {
|
||||||
__ push(a1);
|
__ push(a1);
|
||||||
__ CallRuntime(Runtime::kNewFunctionContext, 1);
|
__ CallRuntime(Runtime::kHiddenNewFunctionContext, 1);
|
||||||
}
|
}
|
||||||
function_in_register = false;
|
function_in_register = false;
|
||||||
// Context is returned in v0. It replaces the context passed to us.
|
// Context is returned in v0. It replaces the context passed to us.
|
||||||
@ -877,7 +877,7 @@ void FullCodeGenerator::VisitVariableDeclaration(
|
|||||||
__ mov(a0, zero_reg); // Smi::FromInt(0) indicates no initial value.
|
__ mov(a0, zero_reg); // Smi::FromInt(0) indicates no initial value.
|
||||||
__ Push(cp, a2, a1, a0);
|
__ Push(cp, a2, a1, a0);
|
||||||
}
|
}
|
||||||
__ CallRuntime(Runtime::kDeclareContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenDeclareContextSlot, 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -933,7 +933,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
|
|||||||
__ Push(cp, a2, a1);
|
__ Push(cp, a2, a1);
|
||||||
// Push initial value for function declaration.
|
// Push initial value for function declaration.
|
||||||
VisitForStackValue(declaration->fun());
|
VisitForStackValue(declaration->fun());
|
||||||
__ CallRuntime(Runtime::kDeclareContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenDeclareContextSlot, 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1005,7 +1005,7 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
|||||||
__ li(a1, Operand(pairs));
|
__ li(a1, Operand(pairs));
|
||||||
__ li(a0, Operand(Smi::FromInt(DeclareGlobalsFlags())));
|
__ li(a0, Operand(Smi::FromInt(DeclareGlobalsFlags())));
|
||||||
__ Push(cp, a1, a0);
|
__ Push(cp, a1, a0);
|
||||||
__ CallRuntime(Runtime::kDeclareGlobals, 3);
|
__ CallRuntime(Runtime::kHiddenDeclareGlobals, 3);
|
||||||
// Return value is ignored.
|
// Return value is ignored.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1013,7 +1013,7 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
|||||||
void FullCodeGenerator::DeclareModules(Handle<FixedArray> descriptions) {
|
void FullCodeGenerator::DeclareModules(Handle<FixedArray> descriptions) {
|
||||||
// Call the runtime to declare the modules.
|
// Call the runtime to declare the modules.
|
||||||
__ Push(descriptions);
|
__ Push(descriptions);
|
||||||
__ CallRuntime(Runtime::kDeclareModules, 1);
|
__ CallRuntime(Runtime::kHiddenDeclareModules, 1);
|
||||||
// Return value is ignored.
|
// Return value is ignored.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1372,7 +1372,7 @@ void FullCodeGenerator::EmitNewClosure(Handle<SharedFunctionInfo> info,
|
|||||||
__ LoadRoot(a1, pretenure ? Heap::kTrueValueRootIndex
|
__ LoadRoot(a1, pretenure ? Heap::kTrueValueRootIndex
|
||||||
: Heap::kFalseValueRootIndex);
|
: Heap::kFalseValueRootIndex);
|
||||||
__ Push(cp, a0, a1);
|
__ Push(cp, a0, a1);
|
||||||
__ CallRuntime(Runtime::kNewClosure, 3);
|
__ CallRuntime(Runtime::kHiddenNewClosure, 3);
|
||||||
}
|
}
|
||||||
context()->Plug(v0);
|
context()->Plug(v0);
|
||||||
}
|
}
|
||||||
@ -1494,7 +1494,7 @@ void FullCodeGenerator::EmitDynamicLookupFastCase(Variable* var,
|
|||||||
__ Branch(done, ne, at, Operand(zero_reg));
|
__ Branch(done, ne, at, Operand(zero_reg));
|
||||||
__ li(a0, Operand(var->name()));
|
__ li(a0, Operand(var->name()));
|
||||||
__ push(a0);
|
__ push(a0);
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__ Branch(done);
|
__ Branch(done);
|
||||||
@ -1573,7 +1573,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
|||||||
__ Branch(&done, ne, at, Operand(zero_reg));
|
__ Branch(&done, ne, at, Operand(zero_reg));
|
||||||
__ li(a0, Operand(var->name()));
|
__ li(a0, Operand(var->name()));
|
||||||
__ push(a0);
|
__ push(a0);
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
} else {
|
} else {
|
||||||
// Uninitalized const bindings outside of harmony mode are unholed.
|
// Uninitalized const bindings outside of harmony mode are unholed.
|
||||||
@ -1598,7 +1598,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
|||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
__ li(a1, Operand(var->name()));
|
__ li(a1, Operand(var->name()));
|
||||||
__ Push(cp, a1); // Context and name.
|
__ Push(cp, a1); // Context and name.
|
||||||
__ CallRuntime(Runtime::kLoadContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlot, 2);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(v0);
|
context()->Plug(v0);
|
||||||
}
|
}
|
||||||
@ -1630,7 +1630,7 @@ void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
|
|||||||
__ li(a2, Operand(expr->pattern()));
|
__ li(a2, Operand(expr->pattern()));
|
||||||
__ li(a1, Operand(expr->flags()));
|
__ li(a1, Operand(expr->flags()));
|
||||||
__ Push(t0, a3, a2, a1);
|
__ Push(t0, a3, a2, a1);
|
||||||
__ CallRuntime(Runtime::kMaterializeRegExpLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenMaterializeRegExpLiteral, 4);
|
||||||
__ mov(t1, v0);
|
__ mov(t1, v0);
|
||||||
|
|
||||||
__ bind(&materialized);
|
__ bind(&materialized);
|
||||||
@ -1642,7 +1642,7 @@ void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
|
|||||||
__ bind(&runtime_allocate);
|
__ bind(&runtime_allocate);
|
||||||
__ li(a0, Operand(Smi::FromInt(size)));
|
__ li(a0, Operand(Smi::FromInt(size)));
|
||||||
__ Push(t1, a0);
|
__ Push(t1, a0);
|
||||||
__ CallRuntime(Runtime::kAllocateInNewSpace, 1);
|
__ CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1);
|
||||||
__ pop(t1);
|
__ pop(t1);
|
||||||
|
|
||||||
__ bind(&allocated);
|
__ bind(&allocated);
|
||||||
@ -1687,7 +1687,7 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
|||||||
flags != ObjectLiteral::kFastElements ||
|
flags != ObjectLiteral::kFastElements ||
|
||||||
properties_count > FastCloneShallowObjectStub::kMaximumClonedProperties) {
|
properties_count > FastCloneShallowObjectStub::kMaximumClonedProperties) {
|
||||||
__ Push(a3, a2, a1, a0);
|
__ Push(a3, a2, a1, a0);
|
||||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenCreateObjectLiteral, 4);
|
||||||
} else {
|
} else {
|
||||||
FastCloneShallowObjectStub stub(properties_count);
|
FastCloneShallowObjectStub stub(properties_count);
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
@ -1841,7 +1841,7 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) {
|
|||||||
length > FastCloneShallowArrayStub::kMaximumClonedLength) {
|
length > FastCloneShallowArrayStub::kMaximumClonedLength) {
|
||||||
__ li(a0, Operand(Smi::FromInt(flags)));
|
__ li(a0, Operand(Smi::FromInt(flags)));
|
||||||
__ Push(a3, a2, a1, a0);
|
__ Push(a3, a2, a1, a0);
|
||||||
__ CallRuntime(Runtime::kCreateArrayLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenCreateArrayLiteral, 4);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) ||
|
ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) ||
|
||||||
FLAG_smi_only_arrays);
|
FLAG_smi_only_arrays);
|
||||||
@ -2043,7 +2043,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
|||||||
__ Addu(a1, fp, Operand(StandardFrameConstants::kExpressionsOffset));
|
__ Addu(a1, fp, Operand(StandardFrameConstants::kExpressionsOffset));
|
||||||
__ Branch(&post_runtime, eq, sp, Operand(a1));
|
__ Branch(&post_runtime, eq, sp, Operand(a1));
|
||||||
__ push(v0); // generator object
|
__ push(v0); // generator object
|
||||||
__ CallRuntime(Runtime::kSuspendJSGeneratorObject, 1);
|
__ CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject, 1);
|
||||||
__ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ bind(&post_runtime);
|
__ bind(&post_runtime);
|
||||||
__ pop(result_register());
|
__ pop(result_register());
|
||||||
@ -2111,7 +2111,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
|||||||
__ mov(a1, cp);
|
__ mov(a1, cp);
|
||||||
__ RecordWriteField(a0, JSGeneratorObject::kContextOffset, a1, a2,
|
__ RecordWriteField(a0, JSGeneratorObject::kContextOffset, a1, a2,
|
||||||
kRAHasBeenSaved, kDontSaveFPRegs);
|
kRAHasBeenSaved, kDontSaveFPRegs);
|
||||||
__ CallRuntime(Runtime::kSuspendJSGeneratorObject, 1);
|
__ CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject, 1);
|
||||||
__ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ pop(v0); // result
|
__ pop(v0); // result
|
||||||
EmitReturnSequence();
|
EmitReturnSequence();
|
||||||
@ -2166,7 +2166,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
Expression *value,
|
Expression *value,
|
||||||
JSGeneratorObject::ResumeMode resume_mode) {
|
JSGeneratorObject::ResumeMode resume_mode) {
|
||||||
// The value stays in a0, and is ultimately read by the resumed generator, as
|
// The value stays in a0, and is ultimately read by the resumed generator, as
|
||||||
// if the CallRuntime(Runtime::kSuspendJSGeneratorObject) returned it. Or it
|
// if CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject) returned it. Or it
|
||||||
// is read to throw the value when the resumed generator is already closed.
|
// is read to throw the value when the resumed generator is already closed.
|
||||||
// a1 will hold the generator object until the activation has been resumed.
|
// a1 will hold the generator object until the activation has been resumed.
|
||||||
VisitForStackValue(generator);
|
VisitForStackValue(generator);
|
||||||
@ -2248,7 +2248,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
ASSERT(!result_register().is(a1));
|
ASSERT(!result_register().is(a1));
|
||||||
__ Push(a1, result_register());
|
__ Push(a1, result_register());
|
||||||
__ Push(Smi::FromInt(resume_mode));
|
__ Push(Smi::FromInt(resume_mode));
|
||||||
__ CallRuntime(Runtime::kResumeJSGeneratorObject, 3);
|
__ CallRuntime(Runtime::kHiddenResumeJSGeneratorObject, 3);
|
||||||
// Not reached: the runtime call returns elsewhere.
|
// Not reached: the runtime call returns elsewhere.
|
||||||
__ stop("not-reached");
|
__ stop("not-reached");
|
||||||
|
|
||||||
@ -2263,14 +2263,14 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
} else {
|
} else {
|
||||||
// Throw the provided value.
|
// Throw the provided value.
|
||||||
__ push(a0);
|
__ push(a0);
|
||||||
__ CallRuntime(Runtime::kThrow, 1);
|
__ CallRuntime(Runtime::kHiddenThrow, 1);
|
||||||
}
|
}
|
||||||
__ jmp(&done);
|
__ jmp(&done);
|
||||||
|
|
||||||
// Throw error if we attempt to operate on a running generator.
|
// Throw error if we attempt to operate on a running generator.
|
||||||
__ bind(&wrong_state);
|
__ bind(&wrong_state);
|
||||||
__ push(a1);
|
__ push(a1);
|
||||||
__ CallRuntime(Runtime::kThrowGeneratorStateError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowGeneratorStateError, 1);
|
||||||
|
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(result_register());
|
context()->Plug(result_register());
|
||||||
@ -2288,7 +2288,7 @@ void FullCodeGenerator::EmitCreateIteratorResult(bool done) {
|
|||||||
|
|
||||||
__ bind(&gc_required);
|
__ bind(&gc_required);
|
||||||
__ Push(Smi::FromInt(map->instance_size()));
|
__ Push(Smi::FromInt(map->instance_size()));
|
||||||
__ CallRuntime(Runtime::kAllocateInNewSpace, 1);
|
__ CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1);
|
||||||
__ lw(context_register(),
|
__ lw(context_register(),
|
||||||
MemOperand(fp, StandardFrameConstants::kContextOffset));
|
MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
|
|
||||||
@ -2506,7 +2506,7 @@ void FullCodeGenerator::EmitCallStoreContextSlot(
|
|||||||
__ li(a1, Operand(name));
|
__ li(a1, Operand(name));
|
||||||
__ li(a0, Operand(Smi::FromInt(strict_mode)));
|
__ li(a0, Operand(Smi::FromInt(strict_mode)));
|
||||||
__ Push(v0, cp, a1, a0); // Value, context, name, strict mode.
|
__ Push(v0, cp, a1, a0); // Value, context, name, strict mode.
|
||||||
__ CallRuntime(Runtime::kStoreContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenStoreContextSlot, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2524,7 +2524,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, Token::Value op) {
|
|||||||
if (var->IsLookupSlot()) {
|
if (var->IsLookupSlot()) {
|
||||||
__ li(a0, Operand(var->name()));
|
__ li(a0, Operand(var->name()));
|
||||||
__ Push(v0, cp, a0); // Context and name.
|
__ Push(v0, cp, a0); // Context and name.
|
||||||
__ CallRuntime(Runtime::kInitializeConstContextSlot, 3);
|
__ CallRuntime(Runtime::kHiddenInitializeConstContextSlot, 3);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(var->IsStackAllocated() || var->IsContextSlot());
|
ASSERT(var->IsStackAllocated() || var->IsContextSlot());
|
||||||
Label skip;
|
Label skip;
|
||||||
@ -2549,7 +2549,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var, Token::Value op) {
|
|||||||
__ Branch(&assign, ne, a3, Operand(t0));
|
__ Branch(&assign, ne, a3, Operand(t0));
|
||||||
__ li(a3, Operand(var->name()));
|
__ li(a3, Operand(var->name()));
|
||||||
__ push(a3);
|
__ push(a3);
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
// Perform the assignment.
|
// Perform the assignment.
|
||||||
__ bind(&assign);
|
__ bind(&assign);
|
||||||
EmitStoreToStackLocalOrContextSlot(var, location);
|
EmitStoreToStackLocalOrContextSlot(var, location);
|
||||||
@ -2785,7 +2785,7 @@ void FullCodeGenerator::EmitResolvePossiblyDirectEval(int arg_count) {
|
|||||||
|
|
||||||
// Do the runtime call.
|
// Do the runtime call.
|
||||||
__ Push(t2, t1, t0, a1);
|
__ Push(t2, t1, t0, a1);
|
||||||
__ CallRuntime(Runtime::kResolvePossiblyDirectEval, 5);
|
__ CallRuntime(Runtime::kHiddenResolvePossiblyDirectEval, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2801,8 +2801,8 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|||||||
Call::CallType call_type = expr->GetCallType(isolate());
|
Call::CallType call_type = expr->GetCallType(isolate());
|
||||||
|
|
||||||
if (call_type == Call::POSSIBLY_EVAL_CALL) {
|
if (call_type == Call::POSSIBLY_EVAL_CALL) {
|
||||||
// In a call to eval, we first call %ResolvePossiblyDirectEval to
|
// In a call to eval, we first call RuntimeHidden_ResolvePossiblyDirectEval
|
||||||
// resolve the function we need to call and the receiver of the
|
// to resolve the function we need to call and the receiver of the
|
||||||
// call. Then we call the resolved function using the given
|
// call. Then we call the resolved function using the given
|
||||||
// arguments.
|
// arguments.
|
||||||
ZoneList<Expression*>* args = expr->arguments();
|
ZoneList<Expression*>* args = expr->arguments();
|
||||||
@ -2857,7 +2857,7 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|||||||
ASSERT(!context_register().is(a2));
|
ASSERT(!context_register().is(a2));
|
||||||
__ li(a2, Operand(proxy->name()));
|
__ li(a2, Operand(proxy->name()));
|
||||||
__ Push(context_register(), a2);
|
__ Push(context_register(), a2);
|
||||||
__ CallRuntime(Runtime::kLoadContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlot, 2);
|
||||||
__ Push(v0, v1); // Function, receiver.
|
__ Push(v0, v1); // Function, receiver.
|
||||||
|
|
||||||
// If fast case code has been generated, emit code to push the
|
// If fast case code has been generated, emit code to push the
|
||||||
@ -3521,7 +3521,7 @@ void FullCodeGenerator::EmitDateField(CallRuntime* expr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
__ bind(¬_date_object);
|
__ bind(¬_date_object);
|
||||||
__ CallRuntime(Runtime::kThrowNotDateError, 0);
|
__ CallRuntime(Runtime::kHiddenThrowNotDateError, 0);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(v0);
|
context()->Plug(v0);
|
||||||
}
|
}
|
||||||
@ -4283,7 +4283,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
|||||||
ASSERT(!context_register().is(a2));
|
ASSERT(!context_register().is(a2));
|
||||||
__ li(a2, Operand(var->name()));
|
__ li(a2, Operand(var->name()));
|
||||||
__ Push(context_register(), a2);
|
__ Push(context_register(), a2);
|
||||||
__ CallRuntime(Runtime::kDeleteContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenDeleteContextSlot, 2);
|
||||||
context()->Plug(v0);
|
context()->Plug(v0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -4565,7 +4565,7 @@ void FullCodeGenerator::VisitForTypeofValue(Expression* expr) {
|
|||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
__ li(a0, Operand(proxy->name()));
|
__ li(a0, Operand(proxy->name()));
|
||||||
__ Push(cp, a0);
|
__ Push(cp, a0);
|
||||||
__ CallRuntime(Runtime::kLoadContextSlotNoReferenceError, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlotNoReferenceError, 2);
|
||||||
PrepareForBailout(expr, TOS_REG);
|
PrepareForBailout(expr, TOS_REG);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ bool LCodeGen::GeneratePrologue() {
|
|||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
} else {
|
} else {
|
||||||
__ push(a1);
|
__ push(a1);
|
||||||
__ CallRuntime(Runtime::kNewFunctionContext, 1);
|
__ CallRuntime(Runtime::kHiddenNewFunctionContext, 1);
|
||||||
}
|
}
|
||||||
RecordSafepoint(Safepoint::kNoLazyDeopt);
|
RecordSafepoint(Safepoint::kNoLazyDeopt);
|
||||||
// Context is returned in both v0. It replaces the context passed to us.
|
// Context is returned in both v0. It replaces the context passed to us.
|
||||||
@ -3499,7 +3499,7 @@ void LCodeGen::DoDeclareGlobals(LDeclareGlobals* instr) {
|
|||||||
__ li(scratch1(), Operand(Smi::FromInt(instr->hydrogen()->flags())));
|
__ li(scratch1(), Operand(Smi::FromInt(instr->hydrogen()->flags())));
|
||||||
// The context is the first argument.
|
// The context is the first argument.
|
||||||
__ Push(cp, scratch0(), scratch1());
|
__ Push(cp, scratch0(), scratch1());
|
||||||
CallRuntime(Runtime::kDeclareGlobals, 3, instr);
|
CallRuntime(Runtime::kHiddenDeclareGlobals, 3, instr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3588,7 +3588,7 @@ void LCodeGen::DoDeferredMathAbsTaggedHeapNumber(LMathAbs* instr) {
|
|||||||
// Slow case: Call the runtime system to do the number allocation.
|
// Slow case: Call the runtime system to do the number allocation.
|
||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
|
|
||||||
CallRuntimeFromDeferred(Runtime::kAllocateHeapNumber, 0, instr,
|
CallRuntimeFromDeferred(Runtime::kHiddenAllocateHeapNumber, 0, instr,
|
||||||
instr->context());
|
instr->context());
|
||||||
// Set the pointer to the new heap number in tmp.
|
// Set the pointer to the new heap number in tmp.
|
||||||
if (!tmp1.is(v0))
|
if (!tmp1.is(v0))
|
||||||
@ -4672,11 +4672,11 @@ void LCodeGen::DoDeferredNumberTagIU(LInstruction* instr,
|
|||||||
|
|
||||||
// NumberTagI and NumberTagD use the context from the frame, rather than
|
// NumberTagI and NumberTagD use the context from the frame, rather than
|
||||||
// the environment's HContext or HInlinedContext value.
|
// the environment's HContext or HInlinedContext value.
|
||||||
// They only call Runtime::kAllocateHeapNumber.
|
// They only call Runtime::kHiddenAllocateHeapNumber.
|
||||||
// The corresponding HChange instructions are added in a phase that does
|
// The corresponding HChange instructions are added in a phase that does
|
||||||
// not have easy access to the local context.
|
// not have easy access to the local context.
|
||||||
__ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenAllocateHeapNumber);
|
||||||
RecordSafepointWithRegisters(
|
RecordSafepointWithRegisters(
|
||||||
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
||||||
__ Subu(v0, v0, kHeapObjectTag);
|
__ Subu(v0, v0, kHeapObjectTag);
|
||||||
@ -4737,11 +4737,11 @@ void LCodeGen::DoDeferredNumberTagD(LNumberTagD* instr) {
|
|||||||
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
||||||
// NumberTagI and NumberTagD use the context from the frame, rather than
|
// NumberTagI and NumberTagD use the context from the frame, rather than
|
||||||
// the environment's HContext or HInlinedContext value.
|
// the environment's HContext or HInlinedContext value.
|
||||||
// They only call Runtime::kAllocateHeapNumber.
|
// They only call Runtime::kHiddenAllocateHeapNumber.
|
||||||
// The corresponding HChange instructions are added in a phase that does
|
// The corresponding HChange instructions are added in a phase that does
|
||||||
// not have easy access to the local context.
|
// not have easy access to the local context.
|
||||||
__ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
__ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenAllocateHeapNumber);
|
||||||
RecordSafepointWithRegisters(
|
RecordSafepointWithRegisters(
|
||||||
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
||||||
__ Subu(v0, v0, kHeapObjectTag);
|
__ Subu(v0, v0, kHeapObjectTag);
|
||||||
@ -5351,7 +5351,7 @@ void LCodeGen::DoDeferredAllocate(LAllocate* instr) {
|
|||||||
__ Push(Smi::FromInt(flags));
|
__ Push(Smi::FromInt(flags));
|
||||||
|
|
||||||
CallRuntimeFromDeferred(
|
CallRuntimeFromDeferred(
|
||||||
Runtime::kAllocateInTargetSpace, 2, instr, instr->context());
|
Runtime::kHiddenAllocateInTargetSpace, 2, instr, instr->context());
|
||||||
__ StoreToSafepointRegisterSlot(v0, result);
|
__ StoreToSafepointRegisterSlot(v0, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5385,7 +5385,7 @@ void LCodeGen::DoRegExpLiteral(LRegExpLiteral* instr) {
|
|||||||
__ li(t1, Operand(instr->hydrogen()->pattern()));
|
__ li(t1, Operand(instr->hydrogen()->pattern()));
|
||||||
__ li(t0, Operand(instr->hydrogen()->flags()));
|
__ li(t0, Operand(instr->hydrogen()->flags()));
|
||||||
__ Push(t3, t2, t1, t0);
|
__ Push(t3, t2, t1, t0);
|
||||||
CallRuntime(Runtime::kMaterializeRegExpLiteral, 4, instr);
|
CallRuntime(Runtime::kHiddenMaterializeRegExpLiteral, 4, instr);
|
||||||
__ mov(a1, v0);
|
__ mov(a1, v0);
|
||||||
|
|
||||||
__ bind(&materialized);
|
__ bind(&materialized);
|
||||||
@ -5398,7 +5398,7 @@ void LCodeGen::DoRegExpLiteral(LRegExpLiteral* instr) {
|
|||||||
__ bind(&runtime_allocate);
|
__ bind(&runtime_allocate);
|
||||||
__ li(a0, Operand(Smi::FromInt(size)));
|
__ li(a0, Operand(Smi::FromInt(size)));
|
||||||
__ Push(a1, a0);
|
__ Push(a1, a0);
|
||||||
CallRuntime(Runtime::kAllocateInNewSpace, 1, instr);
|
CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1, instr);
|
||||||
__ pop(a1);
|
__ pop(a1);
|
||||||
|
|
||||||
__ bind(&allocated);
|
__ bind(&allocated);
|
||||||
@ -5432,7 +5432,7 @@ void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) {
|
|||||||
__ li(a1, Operand(pretenure ? factory()->true_value()
|
__ li(a1, Operand(pretenure ? factory()->true_value()
|
||||||
: factory()->false_value()));
|
: factory()->false_value()));
|
||||||
__ Push(cp, a2, a1);
|
__ Push(cp, a2, a1);
|
||||||
CallRuntime(Runtime::kNewClosure, 3, instr);
|
CallRuntime(Runtime::kHiddenNewClosure, 3, instr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5656,7 +5656,7 @@ void LCodeGen::DoDummyUse(LDummyUse* instr) {
|
|||||||
void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) {
|
void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) {
|
||||||
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
|
||||||
LoadContextFromDeferred(instr->context());
|
LoadContextFromDeferred(instr->context());
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kStackGuard);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenStackGuard);
|
||||||
RecordSafepointWithLazyDeopt(
|
RecordSafepointWithLazyDeopt(
|
||||||
instr, RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS);
|
instr, RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS);
|
||||||
ASSERT(instr->HasEnvironment());
|
ASSERT(instr->HasEnvironment());
|
||||||
|
@ -3986,7 +3986,7 @@ void MacroAssembler::CallApiFunctionAndReturn(
|
|||||||
{
|
{
|
||||||
FrameScope frame(this, StackFrame::INTERNAL);
|
FrameScope frame(this, StackFrame::INTERNAL);
|
||||||
CallExternalReference(
|
CallExternalReference(
|
||||||
ExternalReference(Runtime::kPromoteScheduledException, isolate()),
|
ExternalReference(Runtime::kHiddenPromoteScheduledException, isolate()),
|
||||||
0);
|
0);
|
||||||
}
|
}
|
||||||
jmp(&exception_handled);
|
jmp(&exception_handled);
|
||||||
@ -5451,9 +5451,9 @@ void MacroAssembler::Throw(BailoutReason reason) {
|
|||||||
// We don't actually want to generate a pile of code for this, so just
|
// We don't actually want to generate a pile of code for this, so just
|
||||||
// claim there is a stack frame, without generating one.
|
// claim there is a stack frame, without generating one.
|
||||||
FrameScope scope(this, StackFrame::NONE);
|
FrameScope scope(this, StackFrame::NONE);
|
||||||
CallRuntime(Runtime::kThrowMessage, 1);
|
CallRuntime(Runtime::kHiddenThrowMessage, 1);
|
||||||
} else {
|
} else {
|
||||||
CallRuntime(Runtime::kThrowMessage, 1);
|
CallRuntime(Runtime::kHiddenThrowMessage, 1);
|
||||||
}
|
}
|
||||||
// will not return here
|
// will not return here
|
||||||
if (is_trampoline_pool_blocked()) {
|
if (is_trampoline_pool_blocked()) {
|
||||||
|
@ -1738,7 +1738,7 @@ void Parser::Declare(Declaration* declaration, bool resolve, bool* ok) {
|
|||||||
// same variable if it is declared several times. This is not a
|
// same variable if it is declared several times. This is not a
|
||||||
// semantic issue as long as we keep the source order, but it may be
|
// semantic issue as long as we keep the source order, but it may be
|
||||||
// a performance issue since it may lead to repeated
|
// a performance issue since it may lead to repeated
|
||||||
// Runtime::DeclareContextSlot() calls.
|
// RuntimeHidden_DeclareContextSlot calls.
|
||||||
declaration_scope->AddDeclaration(declaration);
|
declaration_scope->AddDeclaration(declaration);
|
||||||
|
|
||||||
if (mode == CONST_LEGACY && declaration_scope->is_global_scope()) {
|
if (mode == CONST_LEGACY && declaration_scope->is_global_scope()) {
|
||||||
@ -2216,7 +2216,7 @@ Block* Parser::ParseVariableDeclarations(
|
|||||||
// the number of arguments (1 or 2).
|
// the number of arguments (1 or 2).
|
||||||
initialize = factory()->NewCallRuntime(
|
initialize = factory()->NewCallRuntime(
|
||||||
isolate()->factory()->InitializeConstGlobal_string(),
|
isolate()->factory()->InitializeConstGlobal_string(),
|
||||||
Runtime::FunctionForId(Runtime::kInitializeConstGlobal),
|
Runtime::FunctionForId(Runtime::kHiddenInitializeConstGlobal),
|
||||||
arguments, pos);
|
arguments, pos);
|
||||||
} else {
|
} else {
|
||||||
// Add strict mode.
|
// Add strict mode.
|
||||||
@ -3432,7 +3432,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral(
|
|||||||
new(zone()) ZoneList<Expression*>(0, zone());
|
new(zone()) ZoneList<Expression*>(0, zone());
|
||||||
CallRuntime* allocation = factory()->NewCallRuntime(
|
CallRuntime* allocation = factory()->NewCallRuntime(
|
||||||
isolate()->factory()->empty_string(),
|
isolate()->factory()->empty_string(),
|
||||||
Runtime::FunctionForId(Runtime::kCreateJSGeneratorObject),
|
Runtime::FunctionForId(Runtime::kHiddenCreateJSGeneratorObject),
|
||||||
arguments, pos);
|
arguments, pos);
|
||||||
VariableProxy* init_proxy = factory()->NewVariableProxy(
|
VariableProxy* init_proxy = factory()->NewVariableProxy(
|
||||||
function_state_->generator_object_variable());
|
function_state_->generator_object_variable());
|
||||||
|
122
src/runtime.cc
122
src/runtime.cc
@ -468,7 +468,7 @@ static Handle<Object> CreateLiteralBoilerplate(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateObjectLiteral) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_CreateObjectLiteral) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 4);
|
ASSERT(args.length() == 4);
|
||||||
CONVERT_ARG_HANDLE_CHECKED(FixedArray, literals, 0);
|
CONVERT_ARG_HANDLE_CHECKED(FixedArray, literals, 0);
|
||||||
@ -570,7 +570,7 @@ static MaybeObject* CreateArrayLiteralImpl(Isolate* isolate,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateArrayLiteral) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_CreateArrayLiteral) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 4);
|
ASSERT(args.length() == 4);
|
||||||
CONVERT_ARG_HANDLE_CHECKED(FixedArray, literals, 0);
|
CONVERT_ARG_HANDLE_CHECKED(FixedArray, literals, 0);
|
||||||
@ -583,7 +583,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateArrayLiteral) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateArrayLiteralStubBailout) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_CreateArrayLiteralStubBailout) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 3);
|
ASSERT(args.length() == 3);
|
||||||
CONVERT_ARG_HANDLE_CHECKED(FixedArray, literals, 0);
|
CONVERT_ARG_HANDLE_CHECKED(FixedArray, literals, 0);
|
||||||
@ -2131,6 +2131,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_SetAccessorProperty) {
|
|||||||
CONVERT_ARG_HANDLE_CHECKED(Object, setter, 3);
|
CONVERT_ARG_HANDLE_CHECKED(Object, setter, 3);
|
||||||
CONVERT_SMI_ARG_CHECKED(attribute, 4);
|
CONVERT_SMI_ARG_CHECKED(attribute, 4);
|
||||||
CONVERT_SMI_ARG_CHECKED(access_control, 5);
|
CONVERT_SMI_ARG_CHECKED(access_control, 5);
|
||||||
|
RUNTIME_ASSERT(getter->IsUndefined() || getter->IsFunctionTemplateInfo());
|
||||||
|
RUNTIME_ASSERT(setter->IsUndefined() || setter->IsFunctionTemplateInfo());
|
||||||
JSObject::DefineAccessor(object,
|
JSObject::DefineAccessor(object,
|
||||||
name,
|
name,
|
||||||
InstantiateAccessorComponent(isolate, getter),
|
InstantiateAccessorComponent(isolate, getter),
|
||||||
@ -2154,7 +2156,7 @@ static Failure* ThrowRedeclarationError(Isolate* isolate,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_DeclareGlobals) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_DeclareGlobals) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 3);
|
ASSERT(args.length() == 3);
|
||||||
Handle<GlobalObject> global = Handle<GlobalObject>(
|
Handle<GlobalObject> global = Handle<GlobalObject>(
|
||||||
@ -2249,7 +2251,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DeclareGlobals) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_DeclareContextSlot) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_DeclareContextSlot) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 4);
|
ASSERT(args.length() == 4);
|
||||||
|
|
||||||
@ -2408,7 +2410,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_InitializeVarGlobal) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_InitializeConstGlobal) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_InitializeConstGlobal) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
// All constants are declared with an initial value. The name
|
// All constants are declared with an initial value. The name
|
||||||
// of the constant is the first argument and the initial value
|
// of the constant is the first argument and the initial value
|
||||||
@ -2485,7 +2487,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_InitializeConstGlobal) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_InitializeConstContextSlot) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_InitializeConstContextSlot) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 3);
|
ASSERT(args.length() == 3);
|
||||||
|
|
||||||
@ -2803,7 +2805,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetDefaultReceiver) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_MaterializeRegExpLiteral) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_MaterializeRegExpLiteral) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 4);
|
ASSERT(args.length() == 4);
|
||||||
CONVERT_ARG_HANDLE_CHECKED(FixedArray, literals, 0);
|
CONVERT_ARG_HANDLE_CHECKED(FixedArray, literals, 0);
|
||||||
@ -3121,7 +3123,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_SetExpectedNumberOfProperties) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateJSGeneratorObject) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_CreateJSGeneratorObject) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 0);
|
ASSERT(args.length() == 0);
|
||||||
|
|
||||||
@ -3147,7 +3149,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateJSGeneratorObject) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_SuspendJSGeneratorObject) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_SuspendJSGeneratorObject) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
CONVERT_ARG_CHECKED(JSGeneratorObject, generator_object, 0);
|
CONVERT_ARG_CHECKED(JSGeneratorObject, generator_object, 0);
|
||||||
@ -3198,7 +3200,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_SuspendJSGeneratorObject) {
|
|||||||
// inlined into GeneratorNext and GeneratorThrow. EmitGeneratorResumeResume is
|
// inlined into GeneratorNext and GeneratorThrow. EmitGeneratorResumeResume is
|
||||||
// called in any case, as it needs to reconstruct the stack frame and make space
|
// called in any case, as it needs to reconstruct the stack frame and make space
|
||||||
// for arguments and operands.
|
// for arguments and operands.
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_ResumeJSGeneratorObject) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_ResumeJSGeneratorObject) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 3);
|
ASSERT(args.length() == 3);
|
||||||
CONVERT_ARG_CHECKED(JSGeneratorObject, generator_object, 0);
|
CONVERT_ARG_CHECKED(JSGeneratorObject, generator_object, 0);
|
||||||
@ -3246,7 +3248,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ResumeJSGeneratorObject) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_ThrowGeneratorStateError) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_ThrowGeneratorStateError) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
CONVERT_ARG_HANDLE_CHECKED(JSGeneratorObject, generator, 0);
|
CONVERT_ARG_HANDLE_CHECKED(JSGeneratorObject, generator, 0);
|
||||||
@ -6924,7 +6926,7 @@ RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NumberToString) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToStringSkipCache) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NumberToStringSkipCache) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
|
|
||||||
@ -6949,24 +6951,6 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToInteger) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ES6 draft 9.1.11
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToPositiveInteger) {
|
|
||||||
SealHandleScope shs(isolate);
|
|
||||||
ASSERT(args.length() == 1);
|
|
||||||
|
|
||||||
CONVERT_DOUBLE_ARG_CHECKED(number, 0);
|
|
||||||
|
|
||||||
// We do not include 0 so that we don't have to treat +0 / -0 cases.
|
|
||||||
if (number > 0 && number <= Smi::kMaxValue) {
|
|
||||||
return Smi::FromInt(static_cast<int>(number));
|
|
||||||
}
|
|
||||||
if (number <= 0) {
|
|
||||||
return Smi::FromInt(0);
|
|
||||||
}
|
|
||||||
return isolate->heap()->NumberFromDouble(DoubleToInteger(number));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToIntegerMapMinusZero) {
|
RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToIntegerMapMinusZero) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
@ -7011,7 +6995,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToJSInt32) {
|
|||||||
|
|
||||||
// Converts a Number to a Smi, if possible. Returns NaN if the number is not
|
// Converts a Number to a Smi, if possible. Returns NaN if the number is not
|
||||||
// a small integer.
|
// a small integer.
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToSmi) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NumberToSmi) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
|
|
||||||
@ -7030,7 +7014,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberToSmi) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_AllocateHeapNumber) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_AllocateHeapNumber) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 0);
|
ASSERT(args.length() == 0);
|
||||||
return isolate->heap()->AllocateHeapNumber(0);
|
return isolate->heap()->AllocateHeapNumber(0);
|
||||||
@ -8020,7 +8004,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DateSetValue) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NewArgumentsFast) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NewArgumentsFast) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 3);
|
ASSERT(args.length() == 3);
|
||||||
|
|
||||||
@ -8115,7 +8099,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewArgumentsFast) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NewStrictArgumentsFast) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NewStrictArgumentsFast) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 3);
|
ASSERT(args.length() == 3);
|
||||||
|
|
||||||
@ -8148,7 +8132,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewStrictArgumentsFast) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NewClosureFromStubFailure) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NewClosureFromStubFailure) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
CONVERT_ARG_HANDLE_CHECKED(SharedFunctionInfo, shared, 0);
|
CONVERT_ARG_HANDLE_CHECKED(SharedFunctionInfo, shared, 0);
|
||||||
@ -8162,7 +8146,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewClosureFromStubFailure) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NewClosure) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NewClosure) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 3);
|
ASSERT(args.length() == 3);
|
||||||
CONVERT_ARG_HANDLE_CHECKED(Context, context, 0);
|
CONVERT_ARG_HANDLE_CHECKED(Context, context, 0);
|
||||||
@ -8428,7 +8412,7 @@ static MaybeObject* Runtime_NewObjectHelper(Isolate* isolate,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NewObject) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NewObject) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
|
|
||||||
@ -8439,7 +8423,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewObject) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NewObjectWithAllocationSite) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NewObjectWithAllocationSite) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 2);
|
ASSERT(args.length() == 2);
|
||||||
|
|
||||||
@ -8456,7 +8440,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewObjectWithAllocationSite) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_FinalizeInstanceSize) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_FinalizeInstanceSize) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
|
|
||||||
@ -8467,7 +8451,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FinalizeInstanceSize) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_CompileUnoptimized) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_CompileUnoptimized) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
|
|
||||||
@ -8496,7 +8480,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CompileUnoptimized) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_CompileOptimized) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_CompileOptimized) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 2);
|
ASSERT(args.length() == 2);
|
||||||
Handle<JSFunction> function = args.at<JSFunction>(0);
|
Handle<JSFunction> function = args.at<JSFunction>(0);
|
||||||
@ -8559,7 +8543,7 @@ class ActivationsFinder : public ThreadVisitor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NotifyStubFailure) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NotifyStubFailure) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 0);
|
ASSERT(args.length() == 0);
|
||||||
Deoptimizer* deoptimizer = Deoptimizer::Grab(isolate);
|
Deoptimizer* deoptimizer = Deoptimizer::Grab(isolate);
|
||||||
@ -8569,7 +8553,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NotifyStubFailure) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NotifyDeoptimized) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NotifyDeoptimized) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
RUNTIME_ASSERT(args[0]->IsSmi());
|
RUNTIME_ASSERT(args[0]->IsSmi());
|
||||||
@ -9021,7 +9005,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetConstructorDelegate) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NewGlobalContext) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NewGlobalContext) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 2);
|
ASSERT(args.length() == 2);
|
||||||
|
|
||||||
@ -9040,7 +9024,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewGlobalContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_NewFunctionContext) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_NewFunctionContext) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
|
|
||||||
@ -9050,7 +9034,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewFunctionContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_PushWithContext) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_PushWithContext) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 2);
|
ASSERT(args.length() == 2);
|
||||||
JSReceiver* extension_object;
|
JSReceiver* extension_object;
|
||||||
@ -9094,7 +9078,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_PushWithContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_PushCatchContext) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_PushCatchContext) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 3);
|
ASSERT(args.length() == 3);
|
||||||
String* name = String::cast(args[0]);
|
String* name = String::cast(args[0]);
|
||||||
@ -9120,7 +9104,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_PushCatchContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_PushBlockContext) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_PushBlockContext) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 2);
|
ASSERT(args.length() == 2);
|
||||||
ScopeInfo* scope_info = ScopeInfo::cast(args[0]);
|
ScopeInfo* scope_info = ScopeInfo::cast(args[0]);
|
||||||
@ -9152,7 +9136,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_IsJSModule) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_PushModuleContext) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_PushModuleContext) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 2);
|
ASSERT(args.length() == 2);
|
||||||
CONVERT_SMI_ARG_CHECKED(index, 0);
|
CONVERT_SMI_ARG_CHECKED(index, 0);
|
||||||
@ -9187,7 +9171,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_PushModuleContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_DeclareModules) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_DeclareModules) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
CONVERT_ARG_HANDLE_CHECKED(FixedArray, descriptions, 0);
|
CONVERT_ARG_HANDLE_CHECKED(FixedArray, descriptions, 0);
|
||||||
@ -9240,7 +9224,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DeclareModules) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_DeleteContextSlot) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_DeleteContextSlot) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 2);
|
ASSERT(args.length() == 2);
|
||||||
|
|
||||||
@ -9426,17 +9410,17 @@ static ObjectPair LoadContextSlotHelper(Arguments args,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(ObjectPair, Runtime_LoadContextSlot) {
|
RUNTIME_FUNCTION(ObjectPair, RuntimeHidden_LoadContextSlot) {
|
||||||
return LoadContextSlotHelper(args, isolate, true);
|
return LoadContextSlotHelper(args, isolate, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(ObjectPair, Runtime_LoadContextSlotNoReferenceError) {
|
RUNTIME_FUNCTION(ObjectPair, RuntimeHidden_LoadContextSlotNoReferenceError) {
|
||||||
return LoadContextSlotHelper(args, isolate, false);
|
return LoadContextSlotHelper(args, isolate, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_StoreContextSlot) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_StoreContextSlot) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 4);
|
ASSERT(args.length() == 4);
|
||||||
|
|
||||||
@ -9521,7 +9505,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StoreContextSlot) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_Throw) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_Throw) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
|
|
||||||
@ -9529,7 +9513,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_Throw) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_ReThrow) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_ReThrow) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
|
|
||||||
@ -9537,14 +9521,14 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ReThrow) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_PromoteScheduledException) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_PromoteScheduledException) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT_EQ(0, args.length());
|
ASSERT_EQ(0, args.length());
|
||||||
return isolate->PromoteScheduledException();
|
return isolate->PromoteScheduledException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_ThrowReferenceError) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_ThrowReferenceError) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
|
|
||||||
@ -9556,7 +9540,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ThrowReferenceError) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_ThrowNotDateError) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_ThrowNotDateError) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 0);
|
ASSERT(args.length() == 0);
|
||||||
return isolate->Throw(*isolate->factory()->NewTypeError(
|
return isolate->Throw(*isolate->factory()->NewTypeError(
|
||||||
@ -9564,7 +9548,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ThrowNotDateError) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_ThrowMessage) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_ThrowMessage) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
CONVERT_SMI_ARG_CHECKED(message_id, 0);
|
CONVERT_SMI_ARG_CHECKED(message_id, 0);
|
||||||
@ -9577,7 +9561,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ThrowMessage) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_StackGuard) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_StackGuard) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 0);
|
ASSERT(args.length() == 0);
|
||||||
|
|
||||||
@ -9590,7 +9574,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StackGuard) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_TryInstallOptimizedCode) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_TryInstallOptimizedCode) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
CONVERT_ARG_HANDLE_CHECKED(JSFunction, function, 0);
|
CONVERT_ARG_HANDLE_CHECKED(JSFunction, function, 0);
|
||||||
@ -9607,7 +9591,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_TryInstallOptimizedCode) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_Interrupt) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_Interrupt) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 0);
|
ASSERT(args.length() == 0);
|
||||||
return Execution::HandleStackGuardInterrupt(isolate);
|
return Execution::HandleStackGuardInterrupt(isolate);
|
||||||
@ -9907,7 +9891,7 @@ static ObjectPair CompileGlobalEval(Isolate* isolate,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(ObjectPair, Runtime_ResolvePossiblyDirectEval) {
|
RUNTIME_FUNCTION(ObjectPair, RuntimeHidden_ResolvePossiblyDirectEval) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
ASSERT(args.length() == 5);
|
ASSERT(args.length() == 5);
|
||||||
|
|
||||||
@ -9958,7 +9942,7 @@ static MaybeObject* Allocate(Isolate* isolate,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_AllocateInNewSpace) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_AllocateInNewSpace) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 1);
|
ASSERT(args.length() == 1);
|
||||||
CONVERT_SMI_ARG_CHECKED(size, 0);
|
CONVERT_SMI_ARG_CHECKED(size, 0);
|
||||||
@ -9966,7 +9950,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_AllocateInNewSpace) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_AllocateInTargetSpace) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_AllocateInTargetSpace) {
|
||||||
SealHandleScope shs(isolate);
|
SealHandleScope shs(isolate);
|
||||||
ASSERT(args.length() == 2);
|
ASSERT(args.length() == 2);
|
||||||
CONVERT_SMI_ARG_CHECKED(size, 0);
|
CONVERT_SMI_ARG_CHECKED(size, 0);
|
||||||
@ -15024,7 +15008,7 @@ static MaybeObject* ArrayConstructorCommon(Isolate* isolate,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_ArrayConstructor) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_ArrayConstructor) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
// If we get 2 arguments then they are the stub parameters (constructor, type
|
// If we get 2 arguments then they are the stub parameters (constructor, type
|
||||||
// info). If we get 4, then the first one is a pointer to the arguments
|
// info). If we get 4, then the first one is a pointer to the arguments
|
||||||
@ -15061,7 +15045,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ArrayConstructor) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
RUNTIME_FUNCTION(MaybeObject*, Runtime_InternalArrayConstructor) {
|
RUNTIME_FUNCTION(MaybeObject*, RuntimeHidden_InternalArrayConstructor) {
|
||||||
HandleScope scope(isolate);
|
HandleScope scope(isolate);
|
||||||
Arguments empty_args(0, NULL);
|
Arguments empty_args(0, NULL);
|
||||||
bool no_caller_args = args.length() == 1;
|
bool no_caller_args = args.length() == 1;
|
||||||
|
134
src/runtime.h
134
src/runtime.h
@ -83,13 +83,6 @@ namespace internal {
|
|||||||
F(Apply, 5, 1) \
|
F(Apply, 5, 1) \
|
||||||
F(GetFunctionDelegate, 1, 1) \
|
F(GetFunctionDelegate, 1, 1) \
|
||||||
F(GetConstructorDelegate, 1, 1) \
|
F(GetConstructorDelegate, 1, 1) \
|
||||||
F(NewArgumentsFast, 3, 1) \
|
|
||||||
F(NewStrictArgumentsFast, 3, 1) \
|
|
||||||
F(CompileUnoptimized, 1, 1) \
|
|
||||||
F(CompileOptimized, 2, 1) \
|
|
||||||
F(TryInstallOptimizedCode, 1, 1) \
|
|
||||||
F(NotifyDeoptimized, 1, 1) \
|
|
||||||
F(NotifyStubFailure, 0, 1) \
|
|
||||||
F(DeoptimizeFunction, 1, 1) \
|
F(DeoptimizeFunction, 1, 1) \
|
||||||
F(ClearFunctionTypeFeedback, 1, 1) \
|
F(ClearFunctionTypeFeedback, 1, 1) \
|
||||||
F(RunningInSimulator, 0, 1) \
|
F(RunningInSimulator, 0, 1) \
|
||||||
@ -101,8 +94,6 @@ namespace internal {
|
|||||||
F(UnblockConcurrentRecompilation, 0, 1) \
|
F(UnblockConcurrentRecompilation, 0, 1) \
|
||||||
F(CompileForOnStackReplacement, 1, 1) \
|
F(CompileForOnStackReplacement, 1, 1) \
|
||||||
F(SetAllocationTimeout, -1 /* 2 || 3 */, 1) \
|
F(SetAllocationTimeout, -1 /* 2 || 3 */, 1) \
|
||||||
F(AllocateInNewSpace, 1, 1) \
|
|
||||||
F(AllocateInTargetSpace, 2, 1) \
|
|
||||||
F(SetNativeFlag, 1, 1) \
|
F(SetNativeFlag, 1, 1) \
|
||||||
F(SetInlineBuiltinFlag, 1, 1) \
|
F(SetInlineBuiltinFlag, 1, 1) \
|
||||||
F(StoreArrayLiteralElement, 5, 1) \
|
F(StoreArrayLiteralElement, 5, 1) \
|
||||||
@ -130,14 +121,10 @@ namespace internal {
|
|||||||
F(URIEscape, 1, 1) \
|
F(URIEscape, 1, 1) \
|
||||||
F(URIUnescape, 1, 1) \
|
F(URIUnescape, 1, 1) \
|
||||||
\
|
\
|
||||||
F(NumberToStringSkipCache, 1, 1) \
|
|
||||||
F(NumberToInteger, 1, 1) \
|
F(NumberToInteger, 1, 1) \
|
||||||
F(NumberToPositiveInteger, 1, 1) \
|
|
||||||
F(NumberToIntegerMapMinusZero, 1, 1) \
|
F(NumberToIntegerMapMinusZero, 1, 1) \
|
||||||
F(NumberToJSUint32, 1, 1) \
|
F(NumberToJSUint32, 1, 1) \
|
||||||
F(NumberToJSInt32, 1, 1) \
|
F(NumberToJSInt32, 1, 1) \
|
||||||
F(NumberToSmi, 1, 1) \
|
|
||||||
F(AllocateHeapNumber, 0, 1) \
|
|
||||||
\
|
\
|
||||||
/* Arithmetic operations */ \
|
/* Arithmetic operations */ \
|
||||||
F(NumberAdd, 2, 1) \
|
F(NumberAdd, 2, 1) \
|
||||||
@ -258,16 +245,12 @@ namespace internal {
|
|||||||
F(DateSetValue, 3, 1) \
|
F(DateSetValue, 3, 1) \
|
||||||
F(DateCacheVersion, 0, 1) \
|
F(DateCacheVersion, 0, 1) \
|
||||||
\
|
\
|
||||||
/* Numbers */ \
|
|
||||||
\
|
|
||||||
/* Globals */ \
|
/* Globals */ \
|
||||||
F(CompileString, 2, 1) \
|
F(CompileString, 2, 1) \
|
||||||
F(GlobalPrint, 1, 1) \
|
|
||||||
\
|
\
|
||||||
/* Eval */ \
|
/* Eval */ \
|
||||||
F(GlobalReceiver, 1, 1) \
|
F(GlobalReceiver, 1, 1) \
|
||||||
F(IsAttachedGlobal, 1, 1) \
|
F(IsAttachedGlobal, 1, 1) \
|
||||||
F(ResolvePossiblyDirectEval, 5, 2) \
|
|
||||||
\
|
\
|
||||||
F(SetProperty, -1 /* 4 or 5 */, 1) \
|
F(SetProperty, -1 /* 4 or 5 */, 1) \
|
||||||
F(DefineOrRedefineDataProperty, 4, 1) \
|
F(DefineOrRedefineDataProperty, 4, 1) \
|
||||||
@ -281,24 +264,10 @@ namespace internal {
|
|||||||
F(GetArrayKeys, 2, 1) \
|
F(GetArrayKeys, 2, 1) \
|
||||||
F(MoveArrayContents, 2, 1) \
|
F(MoveArrayContents, 2, 1) \
|
||||||
F(EstimateNumberOfElements, 1, 1) \
|
F(EstimateNumberOfElements, 1, 1) \
|
||||||
F(ArrayConstructor, -1, 1) \
|
|
||||||
F(InternalArrayConstructor, -1, 1) \
|
|
||||||
\
|
\
|
||||||
/* Getters and Setters */ \
|
/* Getters and Setters */ \
|
||||||
F(LookupAccessor, 3, 1) \
|
F(LookupAccessor, 3, 1) \
|
||||||
\
|
\
|
||||||
/* Literals */ \
|
|
||||||
F(MaterializeRegExpLiteral, 4, 1)\
|
|
||||||
F(CreateObjectLiteral, 4, 1) \
|
|
||||||
F(CreateArrayLiteral, 4, 1) \
|
|
||||||
F(CreateArrayLiteralStubBailout, 3, 1) \
|
|
||||||
\
|
|
||||||
/* Harmony generators */ \
|
|
||||||
F(CreateJSGeneratorObject, 0, 1) \
|
|
||||||
F(SuspendJSGeneratorObject, 1, 1) \
|
|
||||||
F(ResumeJSGeneratorObject, 3, 1) \
|
|
||||||
F(ThrowGeneratorStateError, 1, 1) \
|
|
||||||
\
|
|
||||||
/* ES5 */ \
|
/* ES5 */ \
|
||||||
F(ObjectFreeze, 1, 1) \
|
F(ObjectFreeze, 1, 1) \
|
||||||
\
|
\
|
||||||
@ -397,44 +366,15 @@ namespace internal {
|
|||||||
F(DataViewSetFloat64, 4, 1) \
|
F(DataViewSetFloat64, 4, 1) \
|
||||||
\
|
\
|
||||||
/* Statements */ \
|
/* Statements */ \
|
||||||
F(NewClosure, 3, 1) \
|
|
||||||
F(NewClosureFromStubFailure, 1, 1) \
|
|
||||||
F(NewObject, 1, 1) \
|
|
||||||
F(NewObjectWithAllocationSite, 2, 1) \
|
|
||||||
F(NewObjectFromBound, 1, 1) \
|
F(NewObjectFromBound, 1, 1) \
|
||||||
F(FinalizeInstanceSize, 1, 1) \
|
|
||||||
F(Throw, 1, 1) \
|
|
||||||
F(ReThrow, 1, 1) \
|
|
||||||
F(ThrowReferenceError, 1, 1) \
|
|
||||||
F(ThrowNotDateError, 0, 1) \
|
|
||||||
F(ThrowMessage, 1, 1) \
|
|
||||||
F(StackGuard, 0, 1) \
|
|
||||||
F(Interrupt, 0, 1) \
|
|
||||||
F(PromoteScheduledException, 0, 1) \
|
|
||||||
\
|
|
||||||
/* Contexts */ \
|
|
||||||
F(NewGlobalContext, 2, 1) \
|
|
||||||
F(NewFunctionContext, 1, 1) \
|
|
||||||
F(PushWithContext, 2, 1) \
|
|
||||||
F(PushCatchContext, 3, 1) \
|
|
||||||
F(PushBlockContext, 2, 1) \
|
|
||||||
F(PushModuleContext, 2, 1) \
|
|
||||||
F(DeleteContextSlot, 2, 1) \
|
|
||||||
F(LoadContextSlot, 2, 2) \
|
|
||||||
F(LoadContextSlotNoReferenceError, 2, 2) \
|
|
||||||
F(StoreContextSlot, 4, 1) \
|
|
||||||
\
|
\
|
||||||
/* Declarations and initialization */ \
|
/* Declarations and initialization */ \
|
||||||
F(DeclareGlobals, 3, 1) \
|
|
||||||
F(DeclareModules, 1, 1) \
|
|
||||||
F(DeclareContextSlot, 4, 1) \
|
|
||||||
F(InitializeVarGlobal, -1 /* 2 or 3 */, 1) \
|
F(InitializeVarGlobal, -1 /* 2 or 3 */, 1) \
|
||||||
F(InitializeConstGlobal, 2, 1) \
|
|
||||||
F(InitializeConstContextSlot, 3, 1) \
|
|
||||||
F(OptimizeObjectForAddingMultipleProperties, 2, 1) \
|
F(OptimizeObjectForAddingMultipleProperties, 2, 1) \
|
||||||
\
|
\
|
||||||
/* Debugging */ \
|
/* Debugging */ \
|
||||||
F(DebugPrint, 1, 1) \
|
F(DebugPrint, 1, 1) \
|
||||||
|
F(GlobalPrint, 1, 1) \
|
||||||
F(DebugTrace, 0, 1) \
|
F(DebugTrace, 0, 1) \
|
||||||
F(TraceEnter, 0, 1) \
|
F(TraceEnter, 0, 1) \
|
||||||
F(TraceExit, 1, 1) \
|
F(TraceExit, 1, 1) \
|
||||||
@ -624,7 +564,77 @@ namespace internal {
|
|||||||
F(StringCompare, 2, 1) \
|
F(StringCompare, 2, 1) \
|
||||||
F(StringCharCodeAt, 2, 1) \
|
F(StringCharCodeAt, 2, 1) \
|
||||||
F(Log, 3, 1) \
|
F(Log, 3, 1) \
|
||||||
F(GetFromCache, 2, 1)
|
F(GetFromCache, 2, 1) \
|
||||||
|
\
|
||||||
|
/* Compilation */ \
|
||||||
|
F(CompileUnoptimized, 1, 1) \
|
||||||
|
F(CompileOptimized, 2, 1) \
|
||||||
|
F(TryInstallOptimizedCode, 1, 1) \
|
||||||
|
F(NotifyDeoptimized, 1, 1) \
|
||||||
|
F(NotifyStubFailure, 0, 1) \
|
||||||
|
\
|
||||||
|
/* Utilities */ \
|
||||||
|
F(AllocateInNewSpace, 1, 1) \
|
||||||
|
F(AllocateInTargetSpace, 2, 1) \
|
||||||
|
F(AllocateHeapNumber, 0, 1) \
|
||||||
|
F(NumberToSmi, 1, 1) \
|
||||||
|
F(NumberToStringSkipCache, 1, 1) \
|
||||||
|
\
|
||||||
|
F(NewArgumentsFast, 3, 1) \
|
||||||
|
F(NewStrictArgumentsFast, 3, 1) \
|
||||||
|
\
|
||||||
|
/* Harmony generators */ \
|
||||||
|
F(CreateJSGeneratorObject, 0, 1) \
|
||||||
|
F(SuspendJSGeneratorObject, 1, 1) \
|
||||||
|
F(ResumeJSGeneratorObject, 3, 1) \
|
||||||
|
F(ThrowGeneratorStateError, 1, 1) \
|
||||||
|
\
|
||||||
|
/* Arrays */ \
|
||||||
|
F(ArrayConstructor, -1, 1) \
|
||||||
|
F(InternalArrayConstructor, -1, 1) \
|
||||||
|
\
|
||||||
|
/* Literals */ \
|
||||||
|
F(MaterializeRegExpLiteral, 4, 1)\
|
||||||
|
F(CreateObjectLiteral, 4, 1) \
|
||||||
|
F(CreateArrayLiteral, 4, 1) \
|
||||||
|
F(CreateArrayLiteralStubBailout, 3, 1) \
|
||||||
|
\
|
||||||
|
/* Statements */ \
|
||||||
|
F(NewClosure, 3, 1) \
|
||||||
|
F(NewClosureFromStubFailure, 1, 1) \
|
||||||
|
F(NewObject, 1, 1) \
|
||||||
|
F(NewObjectWithAllocationSite, 2, 1) \
|
||||||
|
F(FinalizeInstanceSize, 1, 1) \
|
||||||
|
F(Throw, 1, 1) \
|
||||||
|
F(ReThrow, 1, 1) \
|
||||||
|
F(ThrowReferenceError, 1, 1) \
|
||||||
|
F(ThrowNotDateError, 0, 1) \
|
||||||
|
F(ThrowMessage, 1, 1) \
|
||||||
|
F(StackGuard, 0, 1) \
|
||||||
|
F(Interrupt, 0, 1) \
|
||||||
|
F(PromoteScheduledException, 0, 1) \
|
||||||
|
\
|
||||||
|
/* Contexts */ \
|
||||||
|
F(NewGlobalContext, 2, 1) \
|
||||||
|
F(NewFunctionContext, 1, 1) \
|
||||||
|
F(PushWithContext, 2, 1) \
|
||||||
|
F(PushCatchContext, 3, 1) \
|
||||||
|
F(PushBlockContext, 2, 1) \
|
||||||
|
F(PushModuleContext, 2, 1) \
|
||||||
|
F(DeleteContextSlot, 2, 1) \
|
||||||
|
F(LoadContextSlot, 2, 2) \
|
||||||
|
F(LoadContextSlotNoReferenceError, 2, 2) \
|
||||||
|
F(StoreContextSlot, 4, 1) \
|
||||||
|
\
|
||||||
|
/* Declarations and initialization */ \
|
||||||
|
F(DeclareGlobals, 3, 1) \
|
||||||
|
F(DeclareModules, 1, 1) \
|
||||||
|
F(DeclareContextSlot, 4, 1) \
|
||||||
|
F(InitializeConstGlobal, 2, 1) \
|
||||||
|
F(InitializeConstContextSlot, 3, 1) \
|
||||||
|
\
|
||||||
|
/* Eval */ \
|
||||||
|
F(ResolvePossiblyDirectEval, 5, 2)
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// INLINE_FUNCTION_LIST defines all inlined functions accessed
|
// INLINE_FUNCTION_LIST defines all inlined functions accessed
|
||||||
|
@ -508,11 +508,12 @@ void ExternalReferenceTable::PopulateTable(Isolate* isolate) {
|
|||||||
UNCLASSIFIED,
|
UNCLASSIFIED,
|
||||||
52,
|
52,
|
||||||
"cpu_features");
|
"cpu_features");
|
||||||
Add(ExternalReference(Runtime::kAllocateInNewSpace, isolate).address(),
|
Add(ExternalReference(Runtime::kHiddenAllocateInNewSpace, isolate).address(),
|
||||||
UNCLASSIFIED,
|
UNCLASSIFIED,
|
||||||
53,
|
53,
|
||||||
"Runtime::AllocateInNewSpace");
|
"Runtime::AllocateInNewSpace");
|
||||||
Add(ExternalReference(Runtime::kAllocateInTargetSpace, isolate).address(),
|
Add(ExternalReference(
|
||||||
|
Runtime::kHiddenAllocateInTargetSpace, isolate).address(),
|
||||||
UNCLASSIFIED,
|
UNCLASSIFIED,
|
||||||
54,
|
54,
|
||||||
"Runtime::AllocateInTargetSpace");
|
"Runtime::AllocateInTargetSpace");
|
||||||
|
@ -114,7 +114,7 @@ void Builtins::Generate_InOptimizationQueue(MacroAssembler* masm) {
|
|||||||
__ CompareRoot(rsp, Heap::kStackLimitRootIndex);
|
__ CompareRoot(rsp, Heap::kStackLimitRootIndex);
|
||||||
__ j(above_equal, &ok);
|
__ j(above_equal, &ok);
|
||||||
|
|
||||||
CallRuntimePassFunction(masm, Runtime::kTryInstallOptimizedCode);
|
CallRuntimePassFunction(masm, Runtime::kHiddenTryInstallOptimizedCode);
|
||||||
GenerateTailCallToReturnedCode(masm);
|
GenerateTailCallToReturnedCode(masm);
|
||||||
|
|
||||||
__ bind(&ok);
|
__ bind(&ok);
|
||||||
@ -204,7 +204,7 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|||||||
|
|
||||||
__ Push(rdi); // constructor
|
__ Push(rdi); // constructor
|
||||||
// The call will replace the stub, so the countdown is only done once.
|
// The call will replace the stub, so the countdown is only done once.
|
||||||
__ CallRuntime(Runtime::kFinalizeInstanceSize, 1);
|
__ CallRuntime(Runtime::kHiddenFinalizeInstanceSize, 1);
|
||||||
|
|
||||||
__ Pop(rdi);
|
__ Pop(rdi);
|
||||||
__ Pop(rax);
|
__ Pop(rax);
|
||||||
@ -373,9 +373,9 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
|||||||
__ movp(rdi, Operand(rsp, offset));
|
__ movp(rdi, Operand(rsp, offset));
|
||||||
__ Push(rdi);
|
__ Push(rdi);
|
||||||
if (create_memento) {
|
if (create_memento) {
|
||||||
__ CallRuntime(Runtime::kNewObjectWithAllocationSite, 2);
|
__ CallRuntime(Runtime::kHiddenNewObjectWithAllocationSite, 2);
|
||||||
} else {
|
} else {
|
||||||
__ CallRuntime(Runtime::kNewObject, 1);
|
__ CallRuntime(Runtime::kHiddenNewObject, 1);
|
||||||
}
|
}
|
||||||
__ movp(rbx, rax); // store result in rbx
|
__ movp(rbx, rax); // store result in rbx
|
||||||
|
|
||||||
@ -628,7 +628,7 @@ void Builtins::Generate_JSConstructEntryTrampoline(MacroAssembler* masm) {
|
|||||||
|
|
||||||
|
|
||||||
void Builtins::Generate_CompileUnoptimized(MacroAssembler* masm) {
|
void Builtins::Generate_CompileUnoptimized(MacroAssembler* masm) {
|
||||||
CallRuntimePassFunction(masm, Runtime::kCompileUnoptimized);
|
CallRuntimePassFunction(masm, Runtime::kHiddenCompileUnoptimized);
|
||||||
GenerateTailCallToReturnedCode(masm);
|
GenerateTailCallToReturnedCode(masm);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -643,7 +643,7 @@ static void CallCompileOptimized(MacroAssembler* masm,
|
|||||||
// Whether to compile in a background thread.
|
// Whether to compile in a background thread.
|
||||||
__ Push(masm->isolate()->factory()->ToBoolean(concurrent));
|
__ Push(masm->isolate()->factory()->ToBoolean(concurrent));
|
||||||
|
|
||||||
__ CallRuntime(Runtime::kCompileOptimized, 2);
|
__ CallRuntime(Runtime::kHiddenCompileOptimized, 2);
|
||||||
// Restore receiver.
|
// Restore receiver.
|
||||||
__ Pop(rdi);
|
__ Pop(rdi);
|
||||||
}
|
}
|
||||||
@ -744,7 +744,7 @@ static void Generate_NotifyStubFailureHelper(MacroAssembler* masm,
|
|||||||
// stubs that tail call the runtime on deopts passing their parameters in
|
// stubs that tail call the runtime on deopts passing their parameters in
|
||||||
// registers.
|
// registers.
|
||||||
__ Pushad();
|
__ Pushad();
|
||||||
__ CallRuntime(Runtime::kNotifyStubFailure, 0, save_doubles);
|
__ CallRuntime(Runtime::kHiddenNotifyStubFailure, 0, save_doubles);
|
||||||
__ Popad();
|
__ Popad();
|
||||||
// Tear down internal frame.
|
// Tear down internal frame.
|
||||||
}
|
}
|
||||||
@ -773,7 +773,7 @@ static void Generate_NotifyDeoptimizedHelper(MacroAssembler* masm,
|
|||||||
// Pass the deoptimization type to the runtime system.
|
// Pass the deoptimization type to the runtime system.
|
||||||
__ Push(Smi::FromInt(static_cast<int>(type)));
|
__ Push(Smi::FromInt(static_cast<int>(type)));
|
||||||
|
|
||||||
__ CallRuntime(Runtime::kNotifyDeoptimized, 1);
|
__ CallRuntime(Runtime::kHiddenNotifyDeoptimized, 1);
|
||||||
// Tear down internal frame.
|
// Tear down internal frame.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1486,7 +1486,7 @@ void Builtins::Generate_OsrAfterStackCheck(MacroAssembler* masm) {
|
|||||||
__ j(above_equal, &ok);
|
__ j(above_equal, &ok);
|
||||||
{
|
{
|
||||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||||
__ CallRuntime(Runtime::kStackGuard, 0);
|
__ CallRuntime(Runtime::kHiddenStackGuard, 0);
|
||||||
}
|
}
|
||||||
__ jmp(masm->isolate()->builtins()->OnStackReplacement(),
|
__ jmp(masm->isolate()->builtins()->OnStackReplacement(),
|
||||||
RelocInfo::CODE_TARGET);
|
RelocInfo::CODE_TARGET);
|
||||||
|
@ -46,7 +46,7 @@ void FastNewClosureStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 1;
|
descriptor->register_param_count_ = 1;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kNewClosureFromStubFailure)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenNewClosureFromStubFailure)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -88,7 +88,8 @@ void FastCloneShallowArrayStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 3;
|
descriptor->register_param_count_ = 3;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kCreateArrayLiteralStubBailout)->entry;
|
Runtime::FunctionForId(
|
||||||
|
Runtime::kHiddenCreateArrayLiteralStubBailout)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -99,7 +100,7 @@ void FastCloneShallowObjectStub::InitializeInterfaceDescriptor(
|
|||||||
descriptor->register_param_count_ = 4;
|
descriptor->register_param_count_ = 4;
|
||||||
descriptor->register_params_ = registers;
|
descriptor->register_params_ = registers;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kCreateObjectLiteral)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenCreateObjectLiteral)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -233,7 +234,7 @@ static void InitializeArrayConstructorDescriptor(
|
|||||||
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
||||||
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kArrayConstructor)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenArrayConstructor)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -261,7 +262,7 @@ static void InitializeInternalArrayConstructorDescriptor(
|
|||||||
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
descriptor->hint_stack_parameter_count_ = constant_stack_parameter_count;
|
||||||
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
descriptor->function_mode_ = JS_FUNCTION_STUB_MODE;
|
||||||
descriptor->deoptimization_handler_ =
|
descriptor->deoptimization_handler_ =
|
||||||
Runtime::FunctionForId(Runtime::kInternalArrayConstructor)->entry;
|
Runtime::FunctionForId(Runtime::kHiddenInternalArrayConstructor)->entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1203,7 +1204,7 @@ void ArgumentsAccessStub::GenerateNewSloppyFast(MacroAssembler* masm) {
|
|||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ Integer32ToSmi(rcx, rcx);
|
__ Integer32ToSmi(rcx, rcx);
|
||||||
__ movp(args.GetArgumentOperand(2), rcx); // Patch argument count.
|
__ movp(args.GetArgumentOperand(2), rcx); // Patch argument count.
|
||||||
__ TailCallRuntime(Runtime::kNewArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1230,7 +1231,7 @@ void ArgumentsAccessStub::GenerateNewSloppySlow(MacroAssembler* masm) {
|
|||||||
__ movp(args.GetArgumentOperand(1), rdx);
|
__ movp(args.GetArgumentOperand(1), rdx);
|
||||||
|
|
||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ TailCallRuntime(Runtime::kNewArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1331,7 +1332,7 @@ void ArgumentsAccessStub::GenerateNewStrict(MacroAssembler* masm) {
|
|||||||
|
|
||||||
// Do the runtime call to allocate the arguments object.
|
// Do the runtime call to allocate the arguments object.
|
||||||
__ bind(&runtime);
|
__ bind(&runtime);
|
||||||
__ TailCallRuntime(Runtime::kNewStrictArgumentsFast, 3, 1);
|
__ TailCallRuntime(Runtime::kHiddenNewStrictArgumentsFast, 3, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3009,7 +3010,7 @@ void StringCharCodeAtGenerator::GenerateSlow(
|
|||||||
} else {
|
} else {
|
||||||
ASSERT(index_flags_ == STRING_INDEX_IS_ARRAY_INDEX);
|
ASSERT(index_flags_ == STRING_INDEX_IS_ARRAY_INDEX);
|
||||||
// NumberToSmi discards numbers that are not exact integers.
|
// NumberToSmi discards numbers that are not exact integers.
|
||||||
__ CallRuntime(Runtime::kNumberToSmi, 1);
|
__ CallRuntime(Runtime::kHiddenNumberToSmi, 1);
|
||||||
}
|
}
|
||||||
if (!index_.is(rax)) {
|
if (!index_.is(rax)) {
|
||||||
// Save the conversion result before the pop instructions below
|
// Save the conversion result before the pop instructions below
|
||||||
|
@ -224,13 +224,13 @@ void FullCodeGenerator::Generate() {
|
|||||||
if (FLAG_harmony_scoping && info->scope()->is_global_scope()) {
|
if (FLAG_harmony_scoping && info->scope()->is_global_scope()) {
|
||||||
__ Push(rdi);
|
__ Push(rdi);
|
||||||
__ Push(info->scope()->GetScopeInfo());
|
__ Push(info->scope()->GetScopeInfo());
|
||||||
__ CallRuntime(Runtime::kNewGlobalContext, 2);
|
__ CallRuntime(Runtime::kHiddenNewGlobalContext, 2);
|
||||||
} else if (heap_slots <= FastNewContextStub::kMaximumSlots) {
|
} else if (heap_slots <= FastNewContextStub::kMaximumSlots) {
|
||||||
FastNewContextStub stub(heap_slots);
|
FastNewContextStub stub(heap_slots);
|
||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
} else {
|
} else {
|
||||||
__ Push(rdi);
|
__ Push(rdi);
|
||||||
__ CallRuntime(Runtime::kNewFunctionContext, 1);
|
__ CallRuntime(Runtime::kHiddenNewFunctionContext, 1);
|
||||||
}
|
}
|
||||||
function_in_register = false;
|
function_in_register = false;
|
||||||
// Context is returned in rax. It replaces the context passed to us.
|
// Context is returned in rax. It replaces the context passed to us.
|
||||||
@ -838,7 +838,7 @@ void FullCodeGenerator::VisitVariableDeclaration(
|
|||||||
} else {
|
} else {
|
||||||
__ Push(Smi::FromInt(0)); // Indicates no initial value.
|
__ Push(Smi::FromInt(0)); // Indicates no initial value.
|
||||||
}
|
}
|
||||||
__ CallRuntime(Runtime::kDeclareContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenDeclareContextSlot, 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -892,7 +892,7 @@ void FullCodeGenerator::VisitFunctionDeclaration(
|
|||||||
__ Push(variable->name());
|
__ Push(variable->name());
|
||||||
__ Push(Smi::FromInt(NONE));
|
__ Push(Smi::FromInt(NONE));
|
||||||
VisitForStackValue(declaration->fun());
|
VisitForStackValue(declaration->fun());
|
||||||
__ CallRuntime(Runtime::kDeclareContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenDeclareContextSlot, 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -962,7 +962,7 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
|||||||
__ Push(rsi); // The context is the first argument.
|
__ Push(rsi); // The context is the first argument.
|
||||||
__ Push(pairs);
|
__ Push(pairs);
|
||||||
__ Push(Smi::FromInt(DeclareGlobalsFlags()));
|
__ Push(Smi::FromInt(DeclareGlobalsFlags()));
|
||||||
__ CallRuntime(Runtime::kDeclareGlobals, 3);
|
__ CallRuntime(Runtime::kHiddenDeclareGlobals, 3);
|
||||||
// Return value is ignored.
|
// Return value is ignored.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -970,7 +970,7 @@ void FullCodeGenerator::DeclareGlobals(Handle<FixedArray> pairs) {
|
|||||||
void FullCodeGenerator::DeclareModules(Handle<FixedArray> descriptions) {
|
void FullCodeGenerator::DeclareModules(Handle<FixedArray> descriptions) {
|
||||||
// Call the runtime to declare the modules.
|
// Call the runtime to declare the modules.
|
||||||
__ Push(descriptions);
|
__ Push(descriptions);
|
||||||
__ CallRuntime(Runtime::kDeclareModules, 1);
|
__ CallRuntime(Runtime::kHiddenDeclareModules, 1);
|
||||||
// Return value is ignored.
|
// Return value is ignored.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1333,7 +1333,7 @@ void FullCodeGenerator::EmitNewClosure(Handle<SharedFunctionInfo> info,
|
|||||||
__ Push(pretenure
|
__ Push(pretenure
|
||||||
? isolate()->factory()->true_value()
|
? isolate()->factory()->true_value()
|
||||||
: isolate()->factory()->false_value());
|
: isolate()->factory()->false_value());
|
||||||
__ CallRuntime(Runtime::kNewClosure, 3);
|
__ CallRuntime(Runtime::kHiddenNewClosure, 3);
|
||||||
}
|
}
|
||||||
context()->Plug(rax);
|
context()->Plug(rax);
|
||||||
}
|
}
|
||||||
@ -1458,7 +1458,7 @@ void FullCodeGenerator::EmitDynamicLookupFastCase(Variable* var,
|
|||||||
__ LoadRoot(rax, Heap::kUndefinedValueRootIndex);
|
__ LoadRoot(rax, Heap::kUndefinedValueRootIndex);
|
||||||
} else { // LET || CONST
|
} else { // LET || CONST
|
||||||
__ Push(var->name());
|
__ Push(var->name());
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__ jmp(done);
|
__ jmp(done);
|
||||||
@ -1535,7 +1535,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
|||||||
// Throw a reference error when using an uninitialized let/const
|
// Throw a reference error when using an uninitialized let/const
|
||||||
// binding in harmony mode.
|
// binding in harmony mode.
|
||||||
__ Push(var->name());
|
__ Push(var->name());
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
} else {
|
} else {
|
||||||
// Uninitalized const bindings outside of harmony mode are unholed.
|
// Uninitalized const bindings outside of harmony mode are unholed.
|
||||||
ASSERT(var->mode() == CONST_LEGACY);
|
ASSERT(var->mode() == CONST_LEGACY);
|
||||||
@ -1559,7 +1559,7 @@ void FullCodeGenerator::EmitVariableLoad(VariableProxy* proxy) {
|
|||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
__ Push(rsi); // Context.
|
__ Push(rsi); // Context.
|
||||||
__ Push(var->name());
|
__ Push(var->name());
|
||||||
__ CallRuntime(Runtime::kLoadContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlot, 2);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(rax);
|
context()->Plug(rax);
|
||||||
break;
|
break;
|
||||||
@ -1590,7 +1590,7 @@ void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
|
|||||||
__ Push(Smi::FromInt(expr->literal_index()));
|
__ Push(Smi::FromInt(expr->literal_index()));
|
||||||
__ Push(expr->pattern());
|
__ Push(expr->pattern());
|
||||||
__ Push(expr->flags());
|
__ Push(expr->flags());
|
||||||
__ CallRuntime(Runtime::kMaterializeRegExpLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenMaterializeRegExpLiteral, 4);
|
||||||
__ movp(rbx, rax);
|
__ movp(rbx, rax);
|
||||||
|
|
||||||
__ bind(&materialized);
|
__ bind(&materialized);
|
||||||
@ -1602,7 +1602,7 @@ void FullCodeGenerator::VisitRegExpLiteral(RegExpLiteral* expr) {
|
|||||||
__ bind(&runtime_allocate);
|
__ bind(&runtime_allocate);
|
||||||
__ Push(rbx);
|
__ Push(rbx);
|
||||||
__ Push(Smi::FromInt(size));
|
__ Push(Smi::FromInt(size));
|
||||||
__ CallRuntime(Runtime::kAllocateInNewSpace, 1);
|
__ CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1);
|
||||||
__ Pop(rbx);
|
__ Pop(rbx);
|
||||||
|
|
||||||
__ bind(&allocated);
|
__ bind(&allocated);
|
||||||
@ -1651,7 +1651,7 @@ void FullCodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) {
|
|||||||
__ Push(Smi::FromInt(expr->literal_index()));
|
__ Push(Smi::FromInt(expr->literal_index()));
|
||||||
__ Push(constant_properties);
|
__ Push(constant_properties);
|
||||||
__ Push(Smi::FromInt(flags));
|
__ Push(Smi::FromInt(flags));
|
||||||
__ CallRuntime(Runtime::kCreateObjectLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenCreateObjectLiteral, 4);
|
||||||
} else {
|
} else {
|
||||||
__ movp(rdi, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset));
|
__ movp(rdi, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset));
|
||||||
__ movp(rax, FieldOperand(rdi, JSFunction::kLiteralsOffset));
|
__ movp(rax, FieldOperand(rdi, JSFunction::kLiteralsOffset));
|
||||||
@ -1804,7 +1804,7 @@ void FullCodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) {
|
|||||||
__ Push(Smi::FromInt(expr->literal_index()));
|
__ Push(Smi::FromInt(expr->literal_index()));
|
||||||
__ Push(constant_elements);
|
__ Push(constant_elements);
|
||||||
__ Push(Smi::FromInt(flags));
|
__ Push(Smi::FromInt(flags));
|
||||||
__ CallRuntime(Runtime::kCreateArrayLiteral, 4);
|
__ CallRuntime(Runtime::kHiddenCreateArrayLiteral, 4);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) ||
|
ASSERT(IsFastSmiOrObjectElementsKind(constant_elements_kind) ||
|
||||||
FLAG_smi_only_arrays);
|
FLAG_smi_only_arrays);
|
||||||
@ -2016,7 +2016,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
|||||||
__ cmpp(rsp, rbx);
|
__ cmpp(rsp, rbx);
|
||||||
__ j(equal, &post_runtime);
|
__ j(equal, &post_runtime);
|
||||||
__ Push(rax); // generator object
|
__ Push(rax); // generator object
|
||||||
__ CallRuntime(Runtime::kSuspendJSGeneratorObject, 1);
|
__ CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject, 1);
|
||||||
__ movp(context_register(),
|
__ movp(context_register(),
|
||||||
Operand(rbp, StandardFrameConstants::kContextOffset));
|
Operand(rbp, StandardFrameConstants::kContextOffset));
|
||||||
__ bind(&post_runtime);
|
__ bind(&post_runtime);
|
||||||
@ -2085,7 +2085,7 @@ void FullCodeGenerator::VisitYield(Yield* expr) {
|
|||||||
__ movp(rcx, rsi);
|
__ movp(rcx, rsi);
|
||||||
__ RecordWriteField(rax, JSGeneratorObject::kContextOffset, rcx, rdx,
|
__ RecordWriteField(rax, JSGeneratorObject::kContextOffset, rcx, rdx,
|
||||||
kDontSaveFPRegs);
|
kDontSaveFPRegs);
|
||||||
__ CallRuntime(Runtime::kSuspendJSGeneratorObject, 1);
|
__ CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject, 1);
|
||||||
__ movp(context_register(),
|
__ movp(context_register(),
|
||||||
Operand(rbp, StandardFrameConstants::kContextOffset));
|
Operand(rbp, StandardFrameConstants::kContextOffset));
|
||||||
__ Pop(rax); // result
|
__ Pop(rax); // result
|
||||||
@ -2139,7 +2139,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
Expression *value,
|
Expression *value,
|
||||||
JSGeneratorObject::ResumeMode resume_mode) {
|
JSGeneratorObject::ResumeMode resume_mode) {
|
||||||
// The value stays in rax, and is ultimately read by the resumed generator, as
|
// The value stays in rax, and is ultimately read by the resumed generator, as
|
||||||
// if the CallRuntime(Runtime::kSuspendJSGeneratorObject) returned it. Or it
|
// if CallRuntime(Runtime::kHiddenSuspendJSGeneratorObject) returned it. Or it
|
||||||
// is read to throw the value when the resumed generator is already closed.
|
// is read to throw the value when the resumed generator is already closed.
|
||||||
// rbx will hold the generator object until the activation has been resumed.
|
// rbx will hold the generator object until the activation has been resumed.
|
||||||
VisitForStackValue(generator);
|
VisitForStackValue(generator);
|
||||||
@ -2220,7 +2220,7 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
__ Push(rbx);
|
__ Push(rbx);
|
||||||
__ Push(result_register());
|
__ Push(result_register());
|
||||||
__ Push(Smi::FromInt(resume_mode));
|
__ Push(Smi::FromInt(resume_mode));
|
||||||
__ CallRuntime(Runtime::kResumeJSGeneratorObject, 3);
|
__ CallRuntime(Runtime::kHiddenResumeJSGeneratorObject, 3);
|
||||||
// Not reached: the runtime call returns elsewhere.
|
// Not reached: the runtime call returns elsewhere.
|
||||||
__ Abort(kGeneratorFailedToResume);
|
__ Abort(kGeneratorFailedToResume);
|
||||||
|
|
||||||
@ -2234,14 +2234,14 @@ void FullCodeGenerator::EmitGeneratorResume(Expression *generator,
|
|||||||
} else {
|
} else {
|
||||||
// Throw the provided value.
|
// Throw the provided value.
|
||||||
__ Push(rax);
|
__ Push(rax);
|
||||||
__ CallRuntime(Runtime::kThrow, 1);
|
__ CallRuntime(Runtime::kHiddenThrow, 1);
|
||||||
}
|
}
|
||||||
__ jmp(&done);
|
__ jmp(&done);
|
||||||
|
|
||||||
// Throw error if we attempt to operate on a running generator.
|
// Throw error if we attempt to operate on a running generator.
|
||||||
__ bind(&wrong_state);
|
__ bind(&wrong_state);
|
||||||
__ Push(rbx);
|
__ Push(rbx);
|
||||||
__ CallRuntime(Runtime::kThrowGeneratorStateError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowGeneratorStateError, 1);
|
||||||
|
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(result_register());
|
context()->Plug(result_register());
|
||||||
@ -2259,7 +2259,7 @@ void FullCodeGenerator::EmitCreateIteratorResult(bool done) {
|
|||||||
|
|
||||||
__ bind(&gc_required);
|
__ bind(&gc_required);
|
||||||
__ Push(Smi::FromInt(map->instance_size()));
|
__ Push(Smi::FromInt(map->instance_size()));
|
||||||
__ CallRuntime(Runtime::kAllocateInNewSpace, 1);
|
__ CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1);
|
||||||
__ movp(context_register(),
|
__ movp(context_register(),
|
||||||
Operand(rbp, StandardFrameConstants::kContextOffset));
|
Operand(rbp, StandardFrameConstants::kContextOffset));
|
||||||
|
|
||||||
@ -2438,7 +2438,7 @@ void FullCodeGenerator::EmitCallStoreContextSlot(
|
|||||||
__ Push(rsi); // Context.
|
__ Push(rsi); // Context.
|
||||||
__ Push(name);
|
__ Push(name);
|
||||||
__ Push(Smi::FromInt(strict_mode));
|
__ Push(Smi::FromInt(strict_mode));
|
||||||
__ CallRuntime(Runtime::kStoreContextSlot, 4);
|
__ CallRuntime(Runtime::kHiddenStoreContextSlot, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2457,7 +2457,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
|
|||||||
__ Push(rax);
|
__ Push(rax);
|
||||||
__ Push(rsi);
|
__ Push(rsi);
|
||||||
__ Push(var->name());
|
__ Push(var->name());
|
||||||
__ CallRuntime(Runtime::kInitializeConstContextSlot, 3);
|
__ CallRuntime(Runtime::kHiddenInitializeConstContextSlot, 3);
|
||||||
} else {
|
} else {
|
||||||
ASSERT(var->IsStackLocal() || var->IsContextSlot());
|
ASSERT(var->IsStackLocal() || var->IsContextSlot());
|
||||||
Label skip;
|
Label skip;
|
||||||
@ -2481,7 +2481,7 @@ void FullCodeGenerator::EmitVariableAssignment(Variable* var,
|
|||||||
__ CompareRoot(rdx, Heap::kTheHoleValueRootIndex);
|
__ CompareRoot(rdx, Heap::kTheHoleValueRootIndex);
|
||||||
__ j(not_equal, &assign, Label::kNear);
|
__ j(not_equal, &assign, Label::kNear);
|
||||||
__ Push(var->name());
|
__ Push(var->name());
|
||||||
__ CallRuntime(Runtime::kThrowReferenceError, 1);
|
__ CallRuntime(Runtime::kHiddenThrowReferenceError, 1);
|
||||||
__ bind(&assign);
|
__ bind(&assign);
|
||||||
EmitStoreToStackLocalOrContextSlot(var, location);
|
EmitStoreToStackLocalOrContextSlot(var, location);
|
||||||
}
|
}
|
||||||
@ -2708,7 +2708,7 @@ void FullCodeGenerator::EmitResolvePossiblyDirectEval(int arg_count) {
|
|||||||
__ Push(Smi::FromInt(scope()->start_position()));
|
__ Push(Smi::FromInt(scope()->start_position()));
|
||||||
|
|
||||||
// Do the runtime call.
|
// Do the runtime call.
|
||||||
__ CallRuntime(Runtime::kResolvePossiblyDirectEval, 5);
|
__ CallRuntime(Runtime::kHiddenResolvePossiblyDirectEval, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2724,8 +2724,8 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|||||||
Call::CallType call_type = expr->GetCallType(isolate());
|
Call::CallType call_type = expr->GetCallType(isolate());
|
||||||
|
|
||||||
if (call_type == Call::POSSIBLY_EVAL_CALL) {
|
if (call_type == Call::POSSIBLY_EVAL_CALL) {
|
||||||
// In a call to eval, we first call %ResolvePossiblyDirectEval to
|
// In a call to eval, we first call RuntimeHidden_ResolvePossiblyDirectEval
|
||||||
// resolve the function we need to call and the receiver of the call.
|
// to resolve the function we need to call and the receiver of the call.
|
||||||
// Then we call the resolved function using the given arguments.
|
// Then we call the resolved function using the given arguments.
|
||||||
ZoneList<Expression*>* args = expr->arguments();
|
ZoneList<Expression*>* args = expr->arguments();
|
||||||
int arg_count = args->length();
|
int arg_count = args->length();
|
||||||
@ -2775,7 +2775,7 @@ void FullCodeGenerator::VisitCall(Call* expr) {
|
|||||||
// the object holding it (returned in rdx).
|
// the object holding it (returned in rdx).
|
||||||
__ Push(context_register());
|
__ Push(context_register());
|
||||||
__ Push(proxy->name());
|
__ Push(proxy->name());
|
||||||
__ CallRuntime(Runtime::kLoadContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlot, 2);
|
||||||
__ Push(rax); // Function.
|
__ Push(rax); // Function.
|
||||||
__ Push(rdx); // Receiver.
|
__ Push(rdx); // Receiver.
|
||||||
|
|
||||||
@ -3434,7 +3434,7 @@ void FullCodeGenerator::EmitDateField(CallRuntime* expr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
__ bind(¬_date_object);
|
__ bind(¬_date_object);
|
||||||
__ CallRuntime(Runtime::kThrowNotDateError, 0);
|
__ CallRuntime(Runtime::kHiddenThrowNotDateError, 0);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
context()->Plug(rax);
|
context()->Plug(rax);
|
||||||
}
|
}
|
||||||
@ -4232,7 +4232,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
|||||||
// context where the variable was introduced.
|
// context where the variable was introduced.
|
||||||
__ Push(context_register());
|
__ Push(context_register());
|
||||||
__ Push(var->name());
|
__ Push(var->name());
|
||||||
__ CallRuntime(Runtime::kDeleteContextSlot, 2);
|
__ CallRuntime(Runtime::kHiddenDeleteContextSlot, 2);
|
||||||
context()->Plug(rax);
|
context()->Plug(rax);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -4519,7 +4519,7 @@ void FullCodeGenerator::VisitForTypeofValue(Expression* expr) {
|
|||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
__ Push(rsi);
|
__ Push(rsi);
|
||||||
__ Push(proxy->name());
|
__ Push(proxy->name());
|
||||||
__ CallRuntime(Runtime::kLoadContextSlotNoReferenceError, 2);
|
__ CallRuntime(Runtime::kHiddenLoadContextSlotNoReferenceError, 2);
|
||||||
PrepareForBailout(expr, TOS_REG);
|
PrepareForBailout(expr, TOS_REG);
|
||||||
__ bind(&done);
|
__ bind(&done);
|
||||||
|
|
||||||
|
@ -223,7 +223,7 @@ bool LCodeGen::GeneratePrologue() {
|
|||||||
__ CallStub(&stub);
|
__ CallStub(&stub);
|
||||||
} else {
|
} else {
|
||||||
__ Push(rdi);
|
__ Push(rdi);
|
||||||
__ CallRuntime(Runtime::kNewFunctionContext, 1);
|
__ CallRuntime(Runtime::kHiddenNewFunctionContext, 1);
|
||||||
}
|
}
|
||||||
RecordSafepoint(Safepoint::kNoLazyDeopt);
|
RecordSafepoint(Safepoint::kNoLazyDeopt);
|
||||||
// Context is returned in rax. It replaces the context passed to us.
|
// Context is returned in rax. It replaces the context passed to us.
|
||||||
@ -3330,7 +3330,7 @@ void LCodeGen::DoDeclareGlobals(LDeclareGlobals* instr) {
|
|||||||
__ Push(rsi); // The context is the first argument.
|
__ Push(rsi); // The context is the first argument.
|
||||||
__ Push(instr->hydrogen()->pairs());
|
__ Push(instr->hydrogen()->pairs());
|
||||||
__ Push(Smi::FromInt(instr->hydrogen()->flags()));
|
__ Push(Smi::FromInt(instr->hydrogen()->flags()));
|
||||||
CallRuntime(Runtime::kDeclareGlobals, 3, instr);
|
CallRuntime(Runtime::kHiddenDeclareGlobals, 3, instr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3462,7 +3462,7 @@ void LCodeGen::DoDeferredMathAbsTaggedHeapNumber(LMathAbs* instr) {
|
|||||||
// Slow case: Call the runtime system to do the number allocation.
|
// Slow case: Call the runtime system to do the number allocation.
|
||||||
__ bind(&slow);
|
__ bind(&slow);
|
||||||
CallRuntimeFromDeferred(
|
CallRuntimeFromDeferred(
|
||||||
Runtime::kAllocateHeapNumber, 0, instr, instr->context());
|
Runtime::kHiddenAllocateHeapNumber, 0, instr, instr->context());
|
||||||
// Set the pointer to the new heap number in tmp.
|
// Set the pointer to the new heap number in tmp.
|
||||||
if (!tmp.is(rax)) __ movp(tmp, rax);
|
if (!tmp.is(rax)) __ movp(tmp, rax);
|
||||||
// Restore input_reg after call to runtime.
|
// Restore input_reg after call to runtime.
|
||||||
@ -4548,11 +4548,11 @@ void LCodeGen::DoDeferredNumberTagU(LNumberTagU* instr) {
|
|||||||
|
|
||||||
// NumberTagU uses the context from the frame, rather than
|
// NumberTagU uses the context from the frame, rather than
|
||||||
// the environment's HContext or HInlinedContext value.
|
// the environment's HContext or HInlinedContext value.
|
||||||
// They only call Runtime::kAllocateHeapNumber.
|
// They only call Runtime::kHiddenAllocateHeapNumber.
|
||||||
// The corresponding HChange instructions are added in a phase that does
|
// The corresponding HChange instructions are added in a phase that does
|
||||||
// not have easy access to the local context.
|
// not have easy access to the local context.
|
||||||
__ movp(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
|
__ movp(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenAllocateHeapNumber);
|
||||||
RecordSafepointWithRegisters(
|
RecordSafepointWithRegisters(
|
||||||
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
||||||
__ StoreToSafepointRegisterSlot(reg, rax);
|
__ StoreToSafepointRegisterSlot(reg, rax);
|
||||||
@ -4604,11 +4604,11 @@ void LCodeGen::DoDeferredNumberTagD(LNumberTagD* instr) {
|
|||||||
PushSafepointRegistersScope scope(this);
|
PushSafepointRegistersScope scope(this);
|
||||||
// NumberTagD uses the context from the frame, rather than
|
// NumberTagD uses the context from the frame, rather than
|
||||||
// the environment's HContext or HInlinedContext value.
|
// the environment's HContext or HInlinedContext value.
|
||||||
// They only call Runtime::kAllocateHeapNumber.
|
// They only call Runtime::kHiddenAllocateHeapNumber.
|
||||||
// The corresponding HChange instructions are added in a phase that does
|
// The corresponding HChange instructions are added in a phase that does
|
||||||
// not have easy access to the local context.
|
// not have easy access to the local context.
|
||||||
__ movp(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
|
__ movp(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kAllocateHeapNumber);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenAllocateHeapNumber);
|
||||||
RecordSafepointWithRegisters(
|
RecordSafepointWithRegisters(
|
||||||
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
instr->pointer_map(), 0, Safepoint::kNoLazyDeopt);
|
||||||
__ movp(kScratchRegister, rax);
|
__ movp(kScratchRegister, rax);
|
||||||
@ -5160,7 +5160,7 @@ void LCodeGen::DoDeferredAllocate(LAllocate* instr) {
|
|||||||
__ Push(Smi::FromInt(flags));
|
__ Push(Smi::FromInt(flags));
|
||||||
|
|
||||||
CallRuntimeFromDeferred(
|
CallRuntimeFromDeferred(
|
||||||
Runtime::kAllocateInTargetSpace, 2, instr, instr->context());
|
Runtime::kHiddenAllocateInTargetSpace, 2, instr, instr->context());
|
||||||
__ StoreToSafepointRegisterSlot(result, rax);
|
__ StoreToSafepointRegisterSlot(result, rax);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5192,7 +5192,7 @@ void LCodeGen::DoRegExpLiteral(LRegExpLiteral* instr) {
|
|||||||
__ Push(Smi::FromInt(instr->hydrogen()->literal_index()));
|
__ Push(Smi::FromInt(instr->hydrogen()->literal_index()));
|
||||||
__ Push(instr->hydrogen()->pattern());
|
__ Push(instr->hydrogen()->pattern());
|
||||||
__ Push(instr->hydrogen()->flags());
|
__ Push(instr->hydrogen()->flags());
|
||||||
CallRuntime(Runtime::kMaterializeRegExpLiteral, 4, instr);
|
CallRuntime(Runtime::kHiddenMaterializeRegExpLiteral, 4, instr);
|
||||||
__ movp(rbx, rax);
|
__ movp(rbx, rax);
|
||||||
|
|
||||||
__ bind(&materialized);
|
__ bind(&materialized);
|
||||||
@ -5204,7 +5204,7 @@ void LCodeGen::DoRegExpLiteral(LRegExpLiteral* instr) {
|
|||||||
__ bind(&runtime_allocate);
|
__ bind(&runtime_allocate);
|
||||||
__ Push(rbx);
|
__ Push(rbx);
|
||||||
__ Push(Smi::FromInt(size));
|
__ Push(Smi::FromInt(size));
|
||||||
CallRuntime(Runtime::kAllocateInNewSpace, 1, instr);
|
CallRuntime(Runtime::kHiddenAllocateInNewSpace, 1, instr);
|
||||||
__ Pop(rbx);
|
__ Pop(rbx);
|
||||||
|
|
||||||
__ bind(&allocated);
|
__ bind(&allocated);
|
||||||
@ -5238,7 +5238,7 @@ void LCodeGen::DoFunctionLiteral(LFunctionLiteral* instr) {
|
|||||||
__ Push(instr->hydrogen()->shared_info());
|
__ Push(instr->hydrogen()->shared_info());
|
||||||
__ PushRoot(pretenure ? Heap::kTrueValueRootIndex :
|
__ PushRoot(pretenure ? Heap::kTrueValueRootIndex :
|
||||||
Heap::kFalseValueRootIndex);
|
Heap::kFalseValueRootIndex);
|
||||||
CallRuntime(Runtime::kNewClosure, 3, instr);
|
CallRuntime(Runtime::kHiddenNewClosure, 3, instr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5433,7 +5433,7 @@ void LCodeGen::DoDummyUse(LDummyUse* instr) {
|
|||||||
void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) {
|
void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) {
|
||||||
PushSafepointRegistersScope scope(this);
|
PushSafepointRegistersScope scope(this);
|
||||||
__ movp(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
|
__ movp(rsi, Operand(rbp, StandardFrameConstants::kContextOffset));
|
||||||
__ CallRuntimeSaveDoubles(Runtime::kStackGuard);
|
__ CallRuntimeSaveDoubles(Runtime::kHiddenStackGuard);
|
||||||
RecordSafepointWithLazyDeopt(instr, RECORD_SAFEPOINT_WITH_REGISTERS, 0);
|
RecordSafepointWithLazyDeopt(instr, RECORD_SAFEPOINT_WITH_REGISTERS, 0);
|
||||||
ASSERT(instr->HasEnvironment());
|
ASSERT(instr->HasEnvironment());
|
||||||
LEnvironment* env = instr->environment();
|
LEnvironment* env = instr->environment();
|
||||||
|
@ -800,7 +800,7 @@ void MacroAssembler::CallApiFunctionAndReturn(
|
|||||||
bind(&promote_scheduled_exception);
|
bind(&promote_scheduled_exception);
|
||||||
{
|
{
|
||||||
FrameScope frame(this, StackFrame::INTERNAL);
|
FrameScope frame(this, StackFrame::INTERNAL);
|
||||||
CallRuntime(Runtime::kPromoteScheduledException, 0);
|
CallRuntime(Runtime::kHiddenPromoteScheduledException, 0);
|
||||||
}
|
}
|
||||||
jmp(&exception_handled);
|
jmp(&exception_handled);
|
||||||
|
|
||||||
@ -3307,9 +3307,9 @@ void MacroAssembler::Throw(BailoutReason reason) {
|
|||||||
// We don't actually want to generate a pile of code for this, so just
|
// We don't actually want to generate a pile of code for this, so just
|
||||||
// claim there is a stack frame, without generating one.
|
// claim there is a stack frame, without generating one.
|
||||||
FrameScope scope(this, StackFrame::NONE);
|
FrameScope scope(this, StackFrame::NONE);
|
||||||
CallRuntime(Runtime::kThrowMessage, 1);
|
CallRuntime(Runtime::kHiddenThrowMessage, 1);
|
||||||
} else {
|
} else {
|
||||||
CallRuntime(Runtime::kThrowMessage, 1);
|
CallRuntime(Runtime::kHiddenThrowMessage, 1);
|
||||||
}
|
}
|
||||||
// Control will not return here.
|
// Control will not return here.
|
||||||
int3();
|
int3();
|
||||||
|
@ -116,7 +116,6 @@ function testArgumentTypes(name, argc) {
|
|||||||
|
|
||||||
var knownProblems = {
|
var knownProblems = {
|
||||||
"Abort": true,
|
"Abort": true,
|
||||||
"ThrowMessage": true,
|
|
||||||
|
|
||||||
// Avoid calling the concat operation, because weird lengths
|
// Avoid calling the concat operation, because weird lengths
|
||||||
// may lead to out-of-memory. Ditto for StringBuilderJoin.
|
// may lead to out-of-memory. Ditto for StringBuilderJoin.
|
||||||
@ -141,32 +140,8 @@ var knownProblems = {
|
|||||||
"DisableAccessChecks": true,
|
"DisableAccessChecks": true,
|
||||||
"EnableAccessChecks": true,
|
"EnableAccessChecks": true,
|
||||||
|
|
||||||
// These functions should not be callable as runtime functions.
|
// IS_VAR is special.
|
||||||
"NewFunctionContext": true,
|
|
||||||
"NewArgumentsFast": true,
|
|
||||||
"NewStrictArgumentsFast": true,
|
|
||||||
"PushWithContext": true,
|
|
||||||
"PushCatchContext": true,
|
|
||||||
"PushBlockContext": true,
|
|
||||||
"PushModuleContext": true,
|
|
||||||
"CompileUnoptimized": true,
|
|
||||||
"CompileOptimized": true,
|
|
||||||
"CompileOptimizedConcurrent": true,
|
|
||||||
"NotifyDeoptimized": true,
|
|
||||||
"NotifyStubFailure": true,
|
|
||||||
"NotifyOSR": true,
|
|
||||||
"CreateObjectLiteralBoilerplate": true,
|
|
||||||
"CloneLiteralBoilerplate": true,
|
|
||||||
"CloneShallowLiteralBoilerplate": true,
|
|
||||||
"CreateArrayLiteralBoilerplate": true,
|
|
||||||
"IS_VAR": true,
|
"IS_VAR": true,
|
||||||
"ResolvePossiblyDirectEval": true,
|
|
||||||
"DeclareGlobals": true,
|
|
||||||
"ArrayConstructor": true,
|
|
||||||
"InternalArrayConstructor": true,
|
|
||||||
|
|
||||||
"PromoteScheduledException": true,
|
|
||||||
"DeleteHandleScopeExtensions": true,
|
|
||||||
|
|
||||||
// Vararg with minimum number > 0.
|
// Vararg with minimum number > 0.
|
||||||
"Call": true,
|
"Call": true,
|
||||||
|
@ -116,7 +116,6 @@ function testArgumentTypes(name, argc) {
|
|||||||
|
|
||||||
var knownProblems = {
|
var knownProblems = {
|
||||||
"Abort": true,
|
"Abort": true,
|
||||||
"ThrowMessage": true,
|
|
||||||
|
|
||||||
// Avoid calling the concat operation, because weird lengths
|
// Avoid calling the concat operation, because weird lengths
|
||||||
// may lead to out-of-memory. Ditto for StringBuilderJoin.
|
// may lead to out-of-memory. Ditto for StringBuilderJoin.
|
||||||
@ -141,33 +140,8 @@ var knownProblems = {
|
|||||||
"DisableAccessChecks": true,
|
"DisableAccessChecks": true,
|
||||||
"EnableAccessChecks": true,
|
"EnableAccessChecks": true,
|
||||||
|
|
||||||
// These functions should not be callable as runtime functions.
|
// IS_VAR is special.
|
||||||
"NewFunctionContext": true,
|
|
||||||
"NewArgumentsFast": true,
|
|
||||||
"NewStrictArgumentsFast": true,
|
|
||||||
"PushWithContext": true,
|
|
||||||
"PushCatchContext": true,
|
|
||||||
"PushBlockContext": true,
|
|
||||||
"PushModuleContext": true,
|
|
||||||
"CompileUnoptimized": true,
|
|
||||||
"CompileOptimized": true,
|
|
||||||
"CompileOptimizedConcurrent": true,
|
|
||||||
"NotifyDeoptimized": true,
|
|
||||||
"NotifyStubFailure": true,
|
|
||||||
"NotifyOSR": true,
|
|
||||||
"CreateObjectLiteralBoilerplate": true,
|
|
||||||
"CloneLiteralBoilerplate": true,
|
|
||||||
"CloneShallowLiteralBoilerplate": true,
|
|
||||||
"CreateArrayLiteralBoilerplate": true,
|
|
||||||
"IS_VAR": true,
|
"IS_VAR": true,
|
||||||
"ResolvePossiblyDirectEval": true,
|
|
||||||
"DeclareGlobals": true,
|
|
||||||
"ArrayConstructor": true,
|
|
||||||
"InternalArrayConstructor": true,
|
|
||||||
"SetAccessorProperty": true,
|
|
||||||
|
|
||||||
"PromoteScheduledException": true,
|
|
||||||
"DeleteHandleScopeExtensions": true,
|
|
||||||
|
|
||||||
// Vararg with minimum number > 0.
|
// Vararg with minimum number > 0.
|
||||||
"Call": true,
|
"Call": true,
|
||||||
|
@ -116,7 +116,6 @@ function testArgumentTypes(name, argc) {
|
|||||||
|
|
||||||
var knownProblems = {
|
var knownProblems = {
|
||||||
"Abort": true,
|
"Abort": true,
|
||||||
"ThrowMessage": true,
|
|
||||||
|
|
||||||
// Avoid calling the concat operation, because weird lengths
|
// Avoid calling the concat operation, because weird lengths
|
||||||
// may lead to out-of-memory. Ditto for StringBuilderJoin.
|
// may lead to out-of-memory. Ditto for StringBuilderJoin.
|
||||||
@ -141,32 +140,8 @@ var knownProblems = {
|
|||||||
"DisableAccessChecks": true,
|
"DisableAccessChecks": true,
|
||||||
"EnableAccessChecks": true,
|
"EnableAccessChecks": true,
|
||||||
|
|
||||||
// These functions should not be callable as runtime functions.
|
// IS_VAR is special.
|
||||||
"NewFunctionContext": true,
|
|
||||||
"NewArgumentsFast": true,
|
|
||||||
"NewStrictArgumentsFast": true,
|
|
||||||
"PushWithContext": true,
|
|
||||||
"PushCatchContext": true,
|
|
||||||
"PushBlockContext": true,
|
|
||||||
"PushModuleContext": true,
|
|
||||||
"CompileUnoptimized": true,
|
|
||||||
"CompileOptimized": true,
|
|
||||||
"CompileOptimizedConcurrent": true,
|
|
||||||
"NotifyDeoptimized": true,
|
|
||||||
"NotifyStubFailure": true,
|
|
||||||
"NotifyOSR": true,
|
|
||||||
"CreateObjectLiteralBoilerplate": true,
|
|
||||||
"CloneLiteralBoilerplate": true,
|
|
||||||
"CloneShallowLiteralBoilerplate": true,
|
|
||||||
"CreateArrayLiteralBoilerplate": true,
|
|
||||||
"IS_VAR": true,
|
"IS_VAR": true,
|
||||||
"ResolvePossiblyDirectEval": true,
|
|
||||||
"DeclareGlobals": true,
|
|
||||||
"ArrayConstructor": true,
|
|
||||||
"InternalArrayConstructor": true,
|
|
||||||
|
|
||||||
"PromoteScheduledException": true,
|
|
||||||
"DeleteHandleScopeExtensions": true,
|
|
||||||
|
|
||||||
// Vararg with minimum number > 0.
|
// Vararg with minimum number > 0.
|
||||||
"Call": true,
|
"Call": true,
|
||||||
@ -212,7 +187,7 @@ var knownProblems = {
|
|||||||
"_GeneratorThrow": true,
|
"_GeneratorThrow": true,
|
||||||
|
|
||||||
// Only applicable to DataViews.
|
// Only applicable to DataViews.
|
||||||
"_DataViewInitialize":true,
|
"_DataViewInitialize": true,
|
||||||
};
|
};
|
||||||
|
|
||||||
var currentlyUncallable = {
|
var currentlyUncallable = {
|
||||||
|
@ -116,7 +116,6 @@ function testArgumentTypes(name, argc) {
|
|||||||
|
|
||||||
var knownProblems = {
|
var knownProblems = {
|
||||||
"Abort": true,
|
"Abort": true,
|
||||||
"ThrowMessage": true,
|
|
||||||
|
|
||||||
// Avoid calling the concat operation, because weird lengths
|
// Avoid calling the concat operation, because weird lengths
|
||||||
// may lead to out-of-memory. Ditto for StringBuilderJoin.
|
// may lead to out-of-memory. Ditto for StringBuilderJoin.
|
||||||
@ -141,32 +140,8 @@ var knownProblems = {
|
|||||||
"DisableAccessChecks": true,
|
"DisableAccessChecks": true,
|
||||||
"EnableAccessChecks": true,
|
"EnableAccessChecks": true,
|
||||||
|
|
||||||
// These functions should not be callable as runtime functions.
|
// IS_VAR is special.
|
||||||
"NewFunctionContext": true,
|
|
||||||
"NewArgumentsFast": true,
|
|
||||||
"NewStrictArgumentsFast": true,
|
|
||||||
"PushWithContext": true,
|
|
||||||
"PushCatchContext": true,
|
|
||||||
"PushBlockContext": true,
|
|
||||||
"PushModuleContext": true,
|
|
||||||
"CompileUnoptimized": true,
|
|
||||||
"CompileOptimized": true,
|
|
||||||
"CompileOptimizedConcurrent": true,
|
|
||||||
"NotifyDeoptimized": true,
|
|
||||||
"NotifyStubFailure": true,
|
|
||||||
"NotifyOSR": true,
|
|
||||||
"CreateObjectLiteralBoilerplate": true,
|
|
||||||
"CloneLiteralBoilerplate": true,
|
|
||||||
"CloneShallowLiteralBoilerplate": true,
|
|
||||||
"CreateArrayLiteralBoilerplate": true,
|
|
||||||
"IS_VAR": true,
|
"IS_VAR": true,
|
||||||
"ResolvePossiblyDirectEval": true,
|
|
||||||
"DeclareGlobals": true,
|
|
||||||
"ArrayConstructor": true,
|
|
||||||
"InternalArrayConstructor": true,
|
|
||||||
|
|
||||||
"PromoteScheduledException": true,
|
|
||||||
"DeleteHandleScopeExtensions": true,
|
|
||||||
|
|
||||||
// Vararg with minimum number > 0.
|
// Vararg with minimum number > 0.
|
||||||
"Call": true,
|
"Call": true,
|
||||||
|
Loading…
Reference in New Issue
Block a user