[builtins] Remove Builtins::Name() accessors
Instead of auto-generating the Name() convenience accessor, use a macro to avoid wasting code space. BUILTIN_CODE(isolate, Name) expands to isolate->builtins()->builtin_handle(Builtins::kName); This reduces the size of libv8.so by 134,752 bytes on a x64 release build. Bug: v8:6624 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: Idff7ee5c45e344e73412c0f47e92553c7c7ff75f Reviewed-on: https://chromium-review.googlesource.com/593607 Reviewed-by: Andreas Haas <ahaas@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#47010}
This commit is contained in:
parent
e47d175738
commit
2f79e03560
@ -6544,7 +6544,7 @@ Local<Context> NewContext(
|
||||
// TODO(jkummerow): This is for crbug.com/713699. Remove it if it doesn't
|
||||
// fail.
|
||||
// Sanity-check that the isolate is initialized and usable.
|
||||
CHECK(isolate->builtins()->Illegal()->IsCode());
|
||||
CHECK(isolate->builtins()->builtin(i::Builtins::kIllegal)->IsCode());
|
||||
|
||||
TRACE_EVENT_CALL_STATS_SCOPED(isolate, "v8", "V8.NewContext");
|
||||
LOG_API(isolate, Context, New);
|
||||
|
@ -602,8 +602,8 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
||||
{
|
||||
FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL);
|
||||
__ Push(cp);
|
||||
__ Call(strict() ? isolate()->builtins()->StrictEqual()
|
||||
: isolate()->builtins()->Equal(),
|
||||
__ Call(strict() ? BUILTIN_CODE(isolate(), StrictEqual)
|
||||
: BUILTIN_CODE(isolate(), Equal),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
}
|
||||
@ -1282,7 +1282,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
|
||||
__ bind(&non_function);
|
||||
__ mov(r3, r1);
|
||||
__ Jump(isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
// StringCharCodeAtGenerator
|
||||
|
@ -1573,8 +1573,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
|
||||
}
|
||||
|
||||
if (!definitely_matches) {
|
||||
Handle<Code> adaptor =
|
||||
isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
||||
Handle<Code> adaptor = BUILTIN_CODE(isolate(), ArgumentsAdaptorTrampoline);
|
||||
if (flag == CALL_FUNCTION) {
|
||||
Call(adaptor);
|
||||
if (!*definitely_mismatches) {
|
||||
@ -1733,7 +1732,7 @@ void MacroAssembler::MaybeDropFrames() {
|
||||
mov(r1, Operand(restart_fp));
|
||||
ldr(r1, MemOperand(r1));
|
||||
tst(r1, r1);
|
||||
Jump(isolate()->builtins()->FrameDropperTrampoline(), RelocInfo::CODE_TARGET,
|
||||
Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
|
||||
ne);
|
||||
}
|
||||
|
||||
@ -2321,9 +2320,9 @@ void TurboAssembler::Abort(BailoutReason reason) {
|
||||
// We don't actually want to generate a pile of code for this, so just
|
||||
// claim there is a stack frame, without generating one.
|
||||
FrameScope scope(this, StackFrame::NONE);
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
// will not return here
|
||||
if (is_const_pool_blocked()) {
|
||||
|
@ -550,8 +550,8 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
__ Push(cp);
|
||||
__ Call(strict() ? isolate()->builtins()->StrictEqual()
|
||||
: isolate()->builtins()->Equal(),
|
||||
__ Call(strict() ? BUILTIN_CODE(isolate(), StrictEqual)
|
||||
: BUILTIN_CODE(isolate(), Equal),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
}
|
||||
@ -1371,7 +1371,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
|
||||
__ Bind(&non_function);
|
||||
__ Mov(x3, function);
|
||||
__ Jump(isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) {
|
||||
|
@ -2295,8 +2295,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
|
||||
// If the argument counts may mismatch, generate a call to the argument
|
||||
// adaptor.
|
||||
if (!definitely_matches) {
|
||||
Handle<Code> adaptor =
|
||||
isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
||||
Handle<Code> adaptor = BUILTIN_CODE(isolate(), ArgumentsAdaptorTrampoline);
|
||||
if (flag == CALL_FUNCTION) {
|
||||
Call(adaptor);
|
||||
if (!*definitely_mismatches) {
|
||||
@ -2775,7 +2774,7 @@ void MacroAssembler::MaybeDropFrames() {
|
||||
Mov(x1, Operand(restart_fp));
|
||||
Ldr(x1, MemOperand(x1));
|
||||
Tst(x1, x1);
|
||||
Jump(isolate()->builtins()->FrameDropperTrampoline(), RelocInfo::CODE_TARGET,
|
||||
Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
|
||||
ne);
|
||||
}
|
||||
|
||||
@ -3748,9 +3747,9 @@ void TurboAssembler::Abort(BailoutReason reason) {
|
||||
// We don't actually want to generate a pile of code for this, so just
|
||||
// claim there is a stack frame, without generating one.
|
||||
FrameScope scope(this, StackFrame::NONE);
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
} else {
|
||||
// Load the string to pass to Printf.
|
||||
|
@ -286,7 +286,7 @@ CompilationJob::Status AsmJsCompilationJob::FinalizeJobImpl() {
|
||||
result->set(kWasmDataCompiledModule, *compiled);
|
||||
result->set(kWasmDataUsesBitSet, *uses_bitset);
|
||||
info()->SetAsmWasmData(result);
|
||||
info()->SetCode(info()->isolate()->builtins()->InstantiateAsmJs());
|
||||
info()->SetCode(BUILTIN_CODE(info()->isolate(), InstantiateAsmJs));
|
||||
|
||||
ReportCompilationSuccess(info()->script(), info()->literal()->position(),
|
||||
translate_time_, compile_time_, module_->size());
|
||||
|
@ -513,7 +513,7 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) {
|
||||
|
||||
// Allocate the empty function as the prototype for function according to
|
||||
// ES#sec-properties-of-the-function-prototype-object
|
||||
Handle<Code> code(isolate->builtins()->EmptyFunction());
|
||||
Handle<Code> code(BUILTIN_CODE(isolate, EmptyFunction));
|
||||
Handle<JSFunction> empty_function =
|
||||
factory->NewFunction(empty_function_map, factory->empty_string(), code);
|
||||
empty_function->shared()->set_language_mode(STRICT);
|
||||
@ -567,7 +567,7 @@ Handle<JSFunction> Genesis::GetThrowTypeErrorIntrinsic() {
|
||||
return restricted_properties_thrower_;
|
||||
}
|
||||
Handle<String> name(factory()->empty_string());
|
||||
Handle<Code> code(builtins()->StrictPoisonPillThrower());
|
||||
Handle<Code> code = BUILTIN_CODE(isolate(), StrictPoisonPillThrower);
|
||||
Handle<JSFunction> function =
|
||||
factory()->NewFunctionWithoutPrototype(name, code, STRICT);
|
||||
function->shared()->DontAdaptArguments();
|
||||
@ -1088,7 +1088,7 @@ Handle<JSGlobalObject> Genesis::CreateNewGlobals(
|
||||
|
||||
if (js_global_object_template.is_null()) {
|
||||
Handle<String> name(factory()->empty_string());
|
||||
Handle<Code> code(builtins()->Illegal());
|
||||
Handle<Code> code = BUILTIN_CODE(isolate(), Illegal);
|
||||
Handle<JSObject> prototype =
|
||||
factory()->NewFunctionPrototype(isolate()->object_function());
|
||||
js_global_object_function =
|
||||
@ -1118,7 +1118,7 @@ Handle<JSGlobalObject> Genesis::CreateNewGlobals(
|
||||
Handle<JSFunction> global_proxy_function;
|
||||
if (global_proxy_template.IsEmpty()) {
|
||||
Handle<String> name(factory()->empty_string());
|
||||
Handle<Code> code(builtins()->Illegal());
|
||||
Handle<Code> code = BUILTIN_CODE(isolate(), Illegal);
|
||||
global_proxy_function =
|
||||
factory()->NewFunction(name, code, JS_GLOBAL_PROXY_TYPE,
|
||||
JSGlobalProxy::SizeWithEmbedderFields(0));
|
||||
@ -1201,7 +1201,7 @@ static void InstallError(Isolate* isolate, Handle<JSObject> global,
|
||||
error_fun->shared()->set_instance_class_name(*factory->Error_string());
|
||||
error_fun->shared()->DontAdaptArguments();
|
||||
error_fun->shared()->set_construct_stub(
|
||||
*isolate->builtins()->ErrorConstructor());
|
||||
*BUILTIN_CODE(isolate, ErrorConstructor));
|
||||
error_fun->shared()->set_length(1);
|
||||
|
||||
if (context_index == Context::ERROR_FUNCTION_INDEX) {
|
||||
@ -1285,7 +1285,6 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
|
||||
Isolate* isolate = global_object->GetIsolate();
|
||||
Factory* factory = isolate->factory();
|
||||
Builtins* builtins = isolate->builtins();
|
||||
|
||||
Handle<ScriptContextTable> script_context_table =
|
||||
factory->NewScriptContextTable();
|
||||
@ -1407,7 +1406,8 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
// Function instances are sloppy by default.
|
||||
function_fun->set_prototype_or_initial_map(*isolate->sloppy_function_map());
|
||||
function_fun->shared()->DontAdaptArguments();
|
||||
function_fun->shared()->SetConstructStub(*builtins->FunctionConstructor());
|
||||
function_fun->shared()->SetConstructStub(
|
||||
*BUILTIN_CODE(isolate, FunctionConstructor));
|
||||
function_fun->shared()->set_length(1);
|
||||
InstallWithIntrinsicDefaultProto(isolate, function_fun,
|
||||
Context::FUNCTION_FUNCTION_INDEX);
|
||||
@ -1452,7 +1452,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
}
|
||||
|
||||
{ // --- A s y n c F r o m S y n c I t e r a t o r
|
||||
Handle<Code> code(builtins->AsyncIteratorValueUnwrap());
|
||||
Handle<Code> code(BUILTIN_CODE(isolate, AsyncIteratorValueUnwrap));
|
||||
Handle<SharedFunctionInfo> info =
|
||||
factory->NewSharedFunctionInfo(factory->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(1);
|
||||
@ -1471,14 +1471,14 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
Builtins::kAsyncGeneratorAwaitUncaught, 1, false);
|
||||
native_context()->set_async_generator_await_uncaught(*await_uncaught);
|
||||
|
||||
Handle<Code> code(builtins->AsyncGeneratorAwaitResolveClosure());
|
||||
Handle<Code> code(BUILTIN_CODE(isolate, AsyncGeneratorAwaitResolveClosure));
|
||||
Handle<SharedFunctionInfo> info =
|
||||
factory->NewSharedFunctionInfo(factory->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(1);
|
||||
info->set_length(1);
|
||||
native_context()->set_async_generator_await_resolve_shared_fun(*info);
|
||||
|
||||
code = builtins->AsyncGeneratorAwaitRejectClosure();
|
||||
code = BUILTIN_CODE(isolate, AsyncGeneratorAwaitRejectClosure);
|
||||
info = factory->NewSharedFunctionInfo(factory->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(1);
|
||||
info->set_length(1);
|
||||
@ -1657,7 +1657,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
isolate->initial_object_prototype(), Builtins::kNumberConstructor);
|
||||
number_fun->shared()->DontAdaptArguments();
|
||||
number_fun->shared()->SetConstructStub(
|
||||
*builtins->NumberConstructor_ConstructStub());
|
||||
*BUILTIN_CODE(isolate, NumberConstructor_ConstructStub));
|
||||
number_fun->shared()->set_length(1);
|
||||
InstallWithIntrinsicDefaultProto(isolate, number_fun,
|
||||
Context::NUMBER_FUNCTION_INDEX);
|
||||
@ -1774,7 +1774,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
Builtins::kBooleanConstructor);
|
||||
boolean_fun->shared()->DontAdaptArguments();
|
||||
boolean_fun->shared()->SetConstructStub(
|
||||
*builtins->BooleanConstructor_ConstructStub());
|
||||
*BUILTIN_CODE(isolate, BooleanConstructor_ConstructStub));
|
||||
boolean_fun->shared()->set_length(1);
|
||||
InstallWithIntrinsicDefaultProto(isolate, boolean_fun,
|
||||
Context::BOOLEAN_FUNCTION_INDEX);
|
||||
@ -1801,7 +1801,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
global, "String", JS_VALUE_TYPE, JSValue::kSize,
|
||||
isolate->initial_object_prototype(), Builtins::kStringConstructor);
|
||||
string_fun->shared()->SetConstructStub(
|
||||
*builtins->StringConstructor_ConstructStub());
|
||||
*BUILTIN_CODE(isolate, StringConstructor_ConstructStub));
|
||||
string_fun->shared()->DontAdaptArguments();
|
||||
string_fun->shared()->set_length(1);
|
||||
InstallWithIntrinsicDefaultProto(isolate, string_fun,
|
||||
@ -1944,7 +1944,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
global, "Symbol", JS_VALUE_TYPE, JSValue::kSize,
|
||||
factory->the_hole_value(), Builtins::kSymbolConstructor);
|
||||
symbol_fun->shared()->SetConstructStub(
|
||||
*builtins->SymbolConstructor_ConstructStub());
|
||||
*BUILTIN_CODE(isolate, SymbolConstructor_ConstructStub));
|
||||
symbol_fun->shared()->set_length(0);
|
||||
symbol_fun->shared()->DontAdaptArguments();
|
||||
native_context()->set_symbol_function(*symbol_fun);
|
||||
@ -2010,7 +2010,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
InstallWithIntrinsicDefaultProto(isolate, date_fun,
|
||||
Context::DATE_FUNCTION_INDEX);
|
||||
date_fun->shared()->SetConstructStub(
|
||||
*builtins->DateConstructor_ConstructStub());
|
||||
*BUILTIN_CODE(isolate, DateConstructor_ConstructStub));
|
||||
date_fun->shared()->set_length(7);
|
||||
date_fun->shared()->DontAdaptArguments();
|
||||
|
||||
@ -2134,10 +2134,10 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
}
|
||||
|
||||
{
|
||||
Handle<Code> code(builtins->PromiseGetCapabilitiesExecutor());
|
||||
Handle<Code> code(BUILTIN_CODE(isolate, PromiseGetCapabilitiesExecutor));
|
||||
Handle<SharedFunctionInfo> info =
|
||||
factory->NewSharedFunctionInfo(factory->empty_string(), code, true);
|
||||
info->SetConstructStub(*builtins->JSBuiltinsConstructStub());
|
||||
info->SetConstructStub(*BUILTIN_CODE(isolate, JSBuiltinsConstructStub));
|
||||
info->set_instance_class_name(isolate->heap()->Object_string());
|
||||
info->set_internal_formal_parameter_count(2);
|
||||
info->set_length(2);
|
||||
@ -2158,7 +2158,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
Context::PROMISE_FUNCTION_INDEX);
|
||||
|
||||
Handle<SharedFunctionInfo> shared(promise_fun->shared(), isolate);
|
||||
shared->SetConstructStub(*builtins->JSBuiltinsConstructStub());
|
||||
shared->SetConstructStub(*BUILTIN_CODE(isolate, JSBuiltinsConstructStub));
|
||||
shared->set_instance_class_name(isolate->heap()->Object_string());
|
||||
shared->set_internal_formal_parameter_count(1);
|
||||
shared->set_length(1);
|
||||
@ -2255,14 +2255,14 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
}
|
||||
|
||||
{
|
||||
Handle<Code> code(builtins->PromiseResolveClosure());
|
||||
Handle<Code> code(BUILTIN_CODE(isolate, PromiseResolveClosure));
|
||||
Handle<SharedFunctionInfo> info =
|
||||
factory->NewSharedFunctionInfo(factory->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(1);
|
||||
info->set_length(1);
|
||||
native_context()->set_promise_resolve_shared_fun(*info);
|
||||
|
||||
code = builtins->PromiseRejectClosure();
|
||||
code = BUILTIN_CODE(isolate, PromiseRejectClosure);
|
||||
info =
|
||||
factory->NewSharedFunctionInfo(factory->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(1);
|
||||
@ -2271,7 +2271,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
}
|
||||
|
||||
{
|
||||
Handle<Code> code(builtins->PromiseAllResolveElementClosure());
|
||||
Handle<Code> code(BUILTIN_CODE(isolate, PromiseAllResolveElementClosure));
|
||||
Handle<SharedFunctionInfo> info =
|
||||
factory->NewSharedFunctionInfo(factory->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(1);
|
||||
@ -2298,7 +2298,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
Context::REGEXP_FUNCTION_INDEX);
|
||||
|
||||
Handle<SharedFunctionInfo> shared(regexp_fun->shared(), isolate);
|
||||
shared->SetConstructStub(*builtins->JSBuiltinsConstructStub());
|
||||
shared->SetConstructStub(*BUILTIN_CODE(isolate, JSBuiltinsConstructStub));
|
||||
shared->set_instance_class_name(isolate->heap()->RegExp_string());
|
||||
shared->set_internal_formal_parameter_count(2);
|
||||
shared->set_length(2);
|
||||
@ -2474,7 +2474,8 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
{ // -- E r r o r
|
||||
InstallError(isolate, global, factory->Error_string(),
|
||||
Context::ERROR_FUNCTION_INDEX);
|
||||
InstallMakeError(isolate, builtins->MakeError(), Context::MAKE_ERROR_INDEX);
|
||||
InstallMakeError(isolate, BUILTIN_CODE(isolate, MakeError),
|
||||
Context::MAKE_ERROR_INDEX);
|
||||
}
|
||||
|
||||
{ // -- E v a l E r r o r
|
||||
@ -2485,7 +2486,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
{ // -- R a n g e E r r o r
|
||||
InstallError(isolate, global, factory->RangeError_string(),
|
||||
Context::RANGE_ERROR_FUNCTION_INDEX);
|
||||
InstallMakeError(isolate, builtins->MakeRangeError(),
|
||||
InstallMakeError(isolate, BUILTIN_CODE(isolate, MakeRangeError),
|
||||
Context::MAKE_RANGE_ERROR_INDEX);
|
||||
}
|
||||
|
||||
@ -2497,21 +2498,21 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
{ // -- S y n t a x E r r o r
|
||||
InstallError(isolate, global, factory->SyntaxError_string(),
|
||||
Context::SYNTAX_ERROR_FUNCTION_INDEX);
|
||||
InstallMakeError(isolate, builtins->MakeSyntaxError(),
|
||||
InstallMakeError(isolate, BUILTIN_CODE(isolate, MakeSyntaxError),
|
||||
Context::MAKE_SYNTAX_ERROR_INDEX);
|
||||
}
|
||||
|
||||
{ // -- T y p e E r r o r
|
||||
InstallError(isolate, global, factory->TypeError_string(),
|
||||
Context::TYPE_ERROR_FUNCTION_INDEX);
|
||||
InstallMakeError(isolate, builtins->MakeTypeError(),
|
||||
InstallMakeError(isolate, BUILTIN_CODE(isolate, MakeTypeError),
|
||||
Context::MAKE_TYPE_ERROR_INDEX);
|
||||
}
|
||||
|
||||
{ // -- U R I E r r o r
|
||||
InstallError(isolate, global, factory->URIError_string(),
|
||||
Context::URI_ERROR_FUNCTION_INDEX);
|
||||
InstallMakeError(isolate, builtins->MakeURIError(),
|
||||
InstallMakeError(isolate, BUILTIN_CODE(isolate, MakeURIError),
|
||||
Context::MAKE_URI_ERROR_INDEX);
|
||||
}
|
||||
|
||||
@ -2923,7 +2924,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
InstallWithIntrinsicDefaultProto(isolate, data_view_fun,
|
||||
Context::DATA_VIEW_FUN_INDEX);
|
||||
data_view_fun->shared()->SetConstructStub(
|
||||
*builtins->DataViewConstructor_ConstructStub());
|
||||
*BUILTIN_CODE(isolate, DataViewConstructor_ConstructStub));
|
||||
data_view_fun->shared()->set_length(3);
|
||||
data_view_fun->shared()->DontAdaptArguments();
|
||||
|
||||
@ -3002,7 +3003,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
Context::JS_MAP_FUN_INDEX);
|
||||
|
||||
Handle<SharedFunctionInfo> shared(js_map_fun->shared(), isolate);
|
||||
shared->SetConstructStub(*builtins->JSBuiltinsConstructStub());
|
||||
shared->SetConstructStub(*BUILTIN_CODE(isolate, JSBuiltinsConstructStub));
|
||||
shared->set_instance_class_name(isolate->heap()->Map_string());
|
||||
shared->DontAdaptArguments();
|
||||
shared->set_length(0);
|
||||
@ -3057,7 +3058,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
Context::JS_SET_FUN_INDEX);
|
||||
|
||||
Handle<SharedFunctionInfo> shared(js_set_fun->shared(), isolate);
|
||||
shared->SetConstructStub(*builtins->JSBuiltinsConstructStub());
|
||||
shared->SetConstructStub(*BUILTIN_CODE(isolate, JSBuiltinsConstructStub));
|
||||
shared->set_instance_class_name(isolate->heap()->Set_string());
|
||||
shared->DontAdaptArguments();
|
||||
shared->set_length(0);
|
||||
@ -3187,7 +3188,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
proxy_function_map->set_is_constructor(true);
|
||||
|
||||
Handle<String> name = factory->Proxy_string();
|
||||
Handle<Code> code(builtins->ProxyConstructor());
|
||||
Handle<Code> code(BUILTIN_CODE(isolate, ProxyConstructor));
|
||||
Handle<JSFunction> proxy_function =
|
||||
factory->NewFunction(proxy_function_map, name, code);
|
||||
|
||||
@ -3195,7 +3196,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
factory->null_value());
|
||||
|
||||
proxy_function->shared()->SetConstructStub(
|
||||
*builtins->ProxyConstructor_ConstructStub());
|
||||
*BUILTIN_CODE(isolate, ProxyConstructor_ConstructStub));
|
||||
proxy_function->shared()->set_internal_formal_parameter_count(2);
|
||||
proxy_function->shared()->set_length(2);
|
||||
|
||||
@ -3285,7 +3286,7 @@ void Genesis::InitializeGlobal(Handle<JSGlobalObject> global_object,
|
||||
// This is done by introducing an anonymous function with
|
||||
// class_name equals 'Arguments'.
|
||||
Handle<String> arguments_string = factory->Arguments_string();
|
||||
Handle<Code> code(builtins->Illegal());
|
||||
Handle<Code> code(BUILTIN_CODE(isolate, Illegal));
|
||||
Handle<JSFunction> function =
|
||||
factory->NewFunctionWithoutPrototype(arguments_string, code, STRICT);
|
||||
function->shared()->set_instance_class_name(*arguments_string);
|
||||
@ -3655,7 +3656,6 @@ void Genesis::ConfigureUtilsObject(GlobalContextType context_type) {
|
||||
void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
||||
Handle<JSObject> container) {
|
||||
Factory* factory = isolate->factory();
|
||||
Builtins* builtins = isolate->builtins();
|
||||
HandleScope scope(isolate);
|
||||
Handle<Context> native_context = isolate->native_context();
|
||||
#define EXPORT_PRIVATE_SYMBOL(NAME) \
|
||||
@ -3693,7 +3693,7 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
||||
native_context->generator_function_map());
|
||||
generator_function_function->shared()->DontAdaptArguments();
|
||||
generator_function_function->shared()->SetConstructStub(
|
||||
*builtins->GeneratorFunctionConstructor());
|
||||
*BUILTIN_CODE(isolate, GeneratorFunctionConstructor));
|
||||
generator_function_function->shared()->set_length(1);
|
||||
InstallWithIntrinsicDefaultProto(
|
||||
isolate, generator_function_function,
|
||||
@ -3723,7 +3723,7 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
||||
native_context->async_generator_function_map());
|
||||
async_generator_function_function->shared()->DontAdaptArguments();
|
||||
async_generator_function_function->shared()->SetConstructStub(
|
||||
*builtins->AsyncGeneratorFunctionConstructor());
|
||||
*BUILTIN_CODE(isolate, AsyncGeneratorFunctionConstructor));
|
||||
async_generator_function_function->shared()->set_length(1);
|
||||
InstallWithIntrinsicDefaultProto(
|
||||
isolate, async_generator_function_function,
|
||||
@ -3958,7 +3958,7 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
||||
native_context->async_function_map());
|
||||
async_function_constructor->shared()->DontAdaptArguments();
|
||||
async_function_constructor->shared()->SetConstructStub(
|
||||
*builtins->AsyncFunctionConstructor());
|
||||
*BUILTIN_CODE(isolate, AsyncFunctionConstructor));
|
||||
async_function_constructor->shared()->set_length(1);
|
||||
native_context->set_async_function_constructor(*async_function_constructor);
|
||||
JSObject::ForceSetPrototype(async_function_constructor,
|
||||
@ -3987,7 +3987,7 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
||||
}
|
||||
|
||||
{
|
||||
Handle<Code> code(builtins->AsyncFunctionAwaitRejectClosure());
|
||||
Handle<Code> code(BUILTIN_CODE(isolate, AsyncFunctionAwaitRejectClosure));
|
||||
Handle<SharedFunctionInfo> info =
|
||||
factory->NewSharedFunctionInfo(factory->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(1);
|
||||
@ -3996,7 +3996,8 @@ void Bootstrapper::ExportFromRuntime(Isolate* isolate,
|
||||
}
|
||||
|
||||
{
|
||||
Handle<Code> code(builtins->AsyncFunctionAwaitResolveClosure());
|
||||
Handle<Code> code(
|
||||
BUILTIN_CODE(isolate, AsyncFunctionAwaitResolveClosure));
|
||||
Handle<SharedFunctionInfo> info =
|
||||
factory->NewSharedFunctionInfo(factory->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(1);
|
||||
@ -4168,7 +4169,7 @@ void Genesis::InitializeGlobal_harmony_promise_finally() {
|
||||
native_context()->set_promise_prototype_map(*prototype_map);
|
||||
|
||||
{
|
||||
Handle<Code> code(builtins()->PromiseThenFinally());
|
||||
Handle<Code> code = BUILTIN_CODE(isolate(), PromiseThenFinally);
|
||||
Handle<SharedFunctionInfo> info = factory()->NewSharedFunctionInfo(
|
||||
factory()->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(1);
|
||||
@ -4178,7 +4179,7 @@ void Genesis::InitializeGlobal_harmony_promise_finally() {
|
||||
}
|
||||
|
||||
{
|
||||
Handle<Code> code(builtins()->PromiseCatchFinally());
|
||||
Handle<Code> code = BUILTIN_CODE(isolate(), PromiseCatchFinally);
|
||||
Handle<SharedFunctionInfo> info = factory()->NewSharedFunctionInfo(
|
||||
factory()->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(1);
|
||||
@ -4188,7 +4189,7 @@ void Genesis::InitializeGlobal_harmony_promise_finally() {
|
||||
}
|
||||
|
||||
{
|
||||
Handle<Code> code(builtins()->PromiseValueThunkFinally());
|
||||
Handle<Code> code = BUILTIN_CODE(isolate(), PromiseValueThunkFinally);
|
||||
Handle<SharedFunctionInfo> info = factory()->NewSharedFunctionInfo(
|
||||
factory()->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(0);
|
||||
@ -4197,7 +4198,7 @@ void Genesis::InitializeGlobal_harmony_promise_finally() {
|
||||
}
|
||||
|
||||
{
|
||||
Handle<Code> code(builtins()->PromiseThrowerFinally());
|
||||
Handle<Code> code = BUILTIN_CODE(isolate(), PromiseThrowerFinally);
|
||||
Handle<SharedFunctionInfo> info = factory()->NewSharedFunctionInfo(
|
||||
factory()->empty_string(), code, false);
|
||||
info->set_internal_formal_parameter_count(0);
|
||||
@ -4254,8 +4255,9 @@ Handle<JSFunction> Genesis::CreateArrayBuffer(Handle<String> name,
|
||||
CreateFunction(isolate(), name, JS_ARRAY_BUFFER_TYPE,
|
||||
JSArrayBuffer::kSizeWithEmbedderFields, prototype,
|
||||
Builtins::kArrayBufferConstructor);
|
||||
array_buffer_fun->shared()->SetConstructStub(
|
||||
*builtins()->ArrayBufferConstructor_ConstructStub());
|
||||
Handle<Code> code =
|
||||
BUILTIN_CODE(isolate(), ArrayBufferConstructor_ConstructStub);
|
||||
array_buffer_fun->shared()->SetConstructStub(*code);
|
||||
array_buffer_fun->shared()->DontAdaptArguments();
|
||||
array_buffer_fun->shared()->set_length(1);
|
||||
array_buffer_fun->shared()->set_instance_class_name(*name);
|
||||
|
@ -144,7 +144,7 @@ void Builtins::Generate_NumberConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(r2);
|
||||
__ EnterBuiltinFrame(cp, r1, r2);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, r1, r2);
|
||||
__ SmiUntag(r2);
|
||||
}
|
||||
@ -201,7 +201,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ EnterBuiltinFrame(cp, r1, r6);
|
||||
__ Push(r3);
|
||||
__ Move(r0, r2);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ Move(r2, r0);
|
||||
__ Pop(r3);
|
||||
__ LeaveBuiltinFrame(cp, r1, r6);
|
||||
@ -226,7 +226,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(r6);
|
||||
__ EnterBuiltinFrame(cp, r1, r6);
|
||||
__ Push(r2); // first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(r2);
|
||||
__ LeaveBuiltinFrame(cp, r1, r6);
|
||||
@ -286,7 +286,7 @@ void Builtins::Generate_StringConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(r2);
|
||||
__ EnterBuiltinFrame(cp, r1, r2);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, r1, r2);
|
||||
__ SmiUntag(r2);
|
||||
}
|
||||
@ -349,7 +349,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ EnterBuiltinFrame(cp, r1, r6);
|
||||
__ Push(r3);
|
||||
__ Move(r0, r2);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ Move(r2, r0);
|
||||
__ Pop(r3);
|
||||
__ LeaveBuiltinFrame(cp, r1, r6);
|
||||
@ -374,7 +374,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(r6);
|
||||
__ EnterBuiltinFrame(cp, r1, r6);
|
||||
__ Push(r2); // first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(r2);
|
||||
__ LeaveBuiltinFrame(cp, r1, r6);
|
||||
@ -534,7 +534,7 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm,
|
||||
// If not derived class constructor: Allocate the new receiver object.
|
||||
__ IncrementCounter(masm->isolate()->counters()->constructed_objects(), 1,
|
||||
r4, r5);
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ b(&post_instantiation_deopt_entry);
|
||||
|
||||
@ -911,7 +911,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
||||
|
||||
// Invoke the code.
|
||||
Handle<Code> builtin = is_construct
|
||||
? masm->isolate()->builtins()->Construct()
|
||||
? BUILTIN_CODE(masm->isolate(), Construct)
|
||||
: masm->isolate()->builtins()->Call();
|
||||
__ Call(builtin, RelocInfo::CODE_TARGET);
|
||||
|
||||
@ -1319,7 +1319,7 @@ void Builtins::Generate_InterpreterPushArgsThenCallImpl(
|
||||
masm->isolate()->builtins()->CallFunction(ConvertReceiverMode::kAny),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
__ Jump(masm->isolate()->builtins()->CallWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
__ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny),
|
||||
@ -1373,12 +1373,12 @@ void Builtins::Generate_InterpreterPushArgsThenConstructImpl(
|
||||
__ add(pc, r4, Operand(Code::kHeaderSize - kHeapObjectTag));
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
// Call the constructor with r0, r1, and r3 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
DCHECK_EQ(InterpreterPushArgsMode::kOther, mode);
|
||||
// Call the constructor with r0, r1, and r3 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
__ bind(&stack_overflow);
|
||||
@ -1429,7 +1429,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
|
||||
Smi* interpreter_entry_return_pc_offset(
|
||||
masm->isolate()->heap()->interpreter_entry_return_pc_offset());
|
||||
DCHECK_NE(interpreter_entry_return_pc_offset, Smi::kZero);
|
||||
__ Move(r2, masm->isolate()->builtins()->InterpreterEntryTrampoline());
|
||||
__ Move(r2, BUILTIN_CODE(masm->isolate(), InterpreterEntryTrampoline));
|
||||
__ add(lr, r2, Operand(interpreter_entry_return_pc_offset->value() +
|
||||
Code::kHeaderSize - kHeapObjectTag));
|
||||
|
||||
@ -1908,7 +1908,7 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
__ JumpIfRoot(r2, Heap::kUndefinedValueRootIndex, &no_arguments);
|
||||
|
||||
// 4a. Apply the receiver to the given argArray.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// 4b. The argArray is either null or undefined, so we tail call without any
|
||||
@ -2001,7 +2001,7 @@ void Builtins::Generate_ReflectApply(MacroAssembler* masm) {
|
||||
// will do.
|
||||
|
||||
// 3. Apply the target to the given argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2048,7 +2048,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
|
||||
// builtins will do.
|
||||
|
||||
// 4. Construct the target with the given new.target and argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2261,7 +2261,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
|
||||
__ Push(r0, r1);
|
||||
__ mov(r0, r3);
|
||||
__ Push(cp);
|
||||
__ Call(masm->isolate()->builtins()->ToObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
__ mov(r3, r0);
|
||||
@ -2415,7 +2415,7 @@ void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode) {
|
||||
__ Jump(masm->isolate()->builtins()->CallFunction(mode),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
__ cmp(r5, Operand(JS_BOUND_FUNCTION_TYPE));
|
||||
__ Jump(masm->isolate()->builtins()->CallBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Check if target has a [[Call]] internal method.
|
||||
@ -2511,7 +2511,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
|
||||
// Dispatch based on instance type.
|
||||
__ CompareObjectType(r1, r4, r5, JS_FUNCTION_TYPE);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Check if target has a [[Construct]] internal method.
|
||||
@ -2522,7 +2522,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Only dispatch to bound functions after checking whether they are
|
||||
// constructors.
|
||||
__ cmp(r5, Operand(JS_BOUND_FUNCTION_TYPE));
|
||||
__ Jump(masm->isolate()->builtins()->ConstructBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Only dispatch to proxies after checking whether they are constructors.
|
||||
@ -2545,7 +2545,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Called Construct on an Object that doesn't have a [[Construct]] internal
|
||||
// method.
|
||||
__ bind(&non_constructor);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructedNonConstructable),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
@ -146,7 +146,7 @@ void Builtins::Generate_NumberConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(x2);
|
||||
__ EnterBuiltinFrame(cp, x1, x2);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, x1, x2);
|
||||
__ SmiUntag(x2);
|
||||
}
|
||||
@ -202,7 +202,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ EnterBuiltinFrame(cp, x1, x6);
|
||||
__ Push(x3);
|
||||
__ Move(x0, x2);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ Move(x2, x0);
|
||||
__ Pop(x3);
|
||||
__ LeaveBuiltinFrame(cp, x1, x6);
|
||||
@ -227,7 +227,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(x6);
|
||||
__ EnterBuiltinFrame(cp, x1, x6);
|
||||
__ Push(x2); // first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(x2);
|
||||
__ LeaveBuiltinFrame(cp, x1, x6);
|
||||
@ -290,7 +290,7 @@ void Builtins::Generate_StringConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(x2);
|
||||
__ EnterBuiltinFrame(cp, x1, x2);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, x1, x2);
|
||||
__ SmiUntag(x2);
|
||||
}
|
||||
@ -354,7 +354,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ EnterBuiltinFrame(cp, x1, x6);
|
||||
__ Push(x3);
|
||||
__ Move(x0, x2);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ Move(x2, x0);
|
||||
__ Pop(x3);
|
||||
__ LeaveBuiltinFrame(cp, x1, x6);
|
||||
@ -379,7 +379,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(x6);
|
||||
__ EnterBuiltinFrame(cp, x1, x6);
|
||||
__ Push(x2); // first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(x2);
|
||||
__ LeaveBuiltinFrame(cp, x1, x6);
|
||||
@ -545,7 +545,7 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm,
|
||||
// If not derived class constructor: Allocate the new receiver object.
|
||||
__ IncrementCounter(masm->isolate()->counters()->constructed_objects(), 1,
|
||||
x4, x5);
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ B(&post_instantiation_deopt_entry);
|
||||
|
||||
@ -933,7 +933,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
||||
// x29 : frame pointer (fp).
|
||||
|
||||
Handle<Code> builtin = is_construct
|
||||
? masm->isolate()->builtins()->Construct()
|
||||
? BUILTIN_CODE(masm->isolate(), Construct)
|
||||
: masm->isolate()->builtins()->Call();
|
||||
__ Call(builtin, RelocInfo::CODE_TARGET);
|
||||
|
||||
@ -1345,7 +1345,7 @@ void Builtins::Generate_InterpreterPushArgsThenCallImpl(
|
||||
masm->isolate()->builtins()->CallFunction(ConvertReceiverMode::kAny),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
__ Jump(masm->isolate()->builtins()->CallWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
__ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny),
|
||||
@ -1398,12 +1398,12 @@ void Builtins::Generate_InterpreterPushArgsThenConstructImpl(
|
||||
__ Br(x4);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
// Call the constructor with x0, x1, and x3 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
DCHECK_EQ(InterpreterPushArgsMode::kOther, mode);
|
||||
// Call the constructor with x0, x1, and x3 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
__ bind(&stack_overflow);
|
||||
@ -1452,7 +1452,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
|
||||
Smi* interpreter_entry_return_pc_offset(
|
||||
masm->isolate()->heap()->interpreter_entry_return_pc_offset());
|
||||
DCHECK_NE(interpreter_entry_return_pc_offset, Smi::kZero);
|
||||
__ LoadObject(x1, masm->isolate()->builtins()->InterpreterEntryTrampoline());
|
||||
__ LoadObject(x1, BUILTIN_CODE(masm->isolate(), InterpreterEntryTrampoline));
|
||||
__ Add(lr, x1, Operand(interpreter_entry_return_pc_offset->value() +
|
||||
Code::kHeaderSize - kHeapObjectTag));
|
||||
|
||||
@ -1957,7 +1957,7 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
__ B(eq, &no_arguments);
|
||||
|
||||
// 4a. Apply the receiver to the given argArray.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// 4b. The argArray is either null or undefined, so we tail call without any
|
||||
@ -2071,7 +2071,7 @@ void Builtins::Generate_ReflectApply(MacroAssembler* masm) {
|
||||
// will do.
|
||||
|
||||
// 3. Apply the target to the given argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2136,7 +2136,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
|
||||
// builtins will do.
|
||||
|
||||
// 4. Construct the target with the given new.target and argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2359,7 +2359,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
|
||||
__ Push(x0, x1);
|
||||
__ Mov(x0, x3);
|
||||
__ Push(cp);
|
||||
__ Call(masm->isolate()->builtins()->ToObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
__ Mov(x3, x0);
|
||||
@ -2510,7 +2510,7 @@ void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode) {
|
||||
__ Jump(masm->isolate()->builtins()->CallFunction(mode),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
__ Cmp(x5, JS_BOUND_FUNCTION_TYPE);
|
||||
__ Jump(masm->isolate()->builtins()->CallBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Check if target has a [[Call]] internal method.
|
||||
@ -2612,7 +2612,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
|
||||
// Dispatch based on instance type.
|
||||
__ CompareObjectType(x1, x4, x5, JS_FUNCTION_TYPE);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Check if target has a [[Construct]] internal method.
|
||||
@ -2622,7 +2622,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Only dispatch to bound functions after checking whether they are
|
||||
// constructors.
|
||||
__ Cmp(x5, JS_BOUND_FUNCTION_TYPE);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Only dispatch to proxies after checking whether they are constructors.
|
||||
@ -2645,7 +2645,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Called Construct on an Object that doesn't have a [[Construct]] internal
|
||||
// method.
|
||||
__ bind(&non_constructor);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructedNonConstructable),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
@ -14,11 +14,11 @@ namespace internal {
|
||||
Handle<Code> Builtins::CallFunction(ConvertReceiverMode mode) {
|
||||
switch (mode) {
|
||||
case ConvertReceiverMode::kNullOrUndefined:
|
||||
return CallFunction_ReceiverIsNullOrUndefined();
|
||||
return builtin_handle(kCallFunction_ReceiverIsNullOrUndefined);
|
||||
case ConvertReceiverMode::kNotNullOrUndefined:
|
||||
return CallFunction_ReceiverIsNotNullOrUndefined();
|
||||
return builtin_handle(kCallFunction_ReceiverIsNotNullOrUndefined);
|
||||
case ConvertReceiverMode::kAny:
|
||||
return CallFunction_ReceiverIsAny();
|
||||
return builtin_handle(kCallFunction_ReceiverIsAny);
|
||||
}
|
||||
UNREACHABLE();
|
||||
}
|
||||
@ -26,11 +26,11 @@ Handle<Code> Builtins::CallFunction(ConvertReceiverMode mode) {
|
||||
Handle<Code> Builtins::Call(ConvertReceiverMode mode) {
|
||||
switch (mode) {
|
||||
case ConvertReceiverMode::kNullOrUndefined:
|
||||
return Call_ReceiverIsNullOrUndefined();
|
||||
return builtin_handle(kCall_ReceiverIsNullOrUndefined);
|
||||
case ConvertReceiverMode::kNotNullOrUndefined:
|
||||
return Call_ReceiverIsNotNullOrUndefined();
|
||||
return builtin_handle(kCall_ReceiverIsNotNullOrUndefined);
|
||||
case ConvertReceiverMode::kAny:
|
||||
return Call_ReceiverIsAny();
|
||||
return builtin_handle(kCall_ReceiverIsAny);
|
||||
}
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
@ -20,17 +20,17 @@ namespace internal {
|
||||
|
||||
void Builtins::Generate_ConstructVarargs(MacroAssembler* masm) {
|
||||
Generate_CallOrConstructVarargs(masm,
|
||||
masm->isolate()->builtins()->Construct());
|
||||
BUILTIN_CODE(masm->isolate(), Construct));
|
||||
}
|
||||
|
||||
void Builtins::Generate_ConstructForwardVarargs(MacroAssembler* masm) {
|
||||
Generate_CallOrConstructForwardVarargs(
|
||||
masm, masm->isolate()->builtins()->Construct());
|
||||
masm, BUILTIN_CODE(masm->isolate(), Construct));
|
||||
}
|
||||
|
||||
void Builtins::Generate_ConstructFunctionForwardVarargs(MacroAssembler* masm) {
|
||||
Generate_CallOrConstructForwardVarargs(
|
||||
masm, masm->isolate()->builtins()->ConstructFunction());
|
||||
masm, BUILTIN_CODE(masm->isolate(), ConstructFunction));
|
||||
}
|
||||
|
||||
TF_BUILTIN(ConstructWithArrayLike, CallOrConstructBuiltinsAssembler) {
|
||||
|
@ -17,20 +17,21 @@ Handle<Code> Builtins::InterpreterPushArgsThenCall(
|
||||
case InterpreterPushArgsMode::kJSFunction:
|
||||
switch (receiver_mode) {
|
||||
case ConvertReceiverMode::kNullOrUndefined:
|
||||
return InterpreterPushUndefinedAndArgsThenCallFunction();
|
||||
return builtin_handle(
|
||||
kInterpreterPushUndefinedAndArgsThenCallFunction);
|
||||
case ConvertReceiverMode::kNotNullOrUndefined:
|
||||
case ConvertReceiverMode::kAny:
|
||||
return InterpreterPushArgsThenCallFunction();
|
||||
return builtin_handle(kInterpreterPushArgsThenCallFunction);
|
||||
}
|
||||
case InterpreterPushArgsMode::kWithFinalSpread:
|
||||
return InterpreterPushArgsThenCallWithFinalSpread();
|
||||
return builtin_handle(kInterpreterPushArgsThenCallWithFinalSpread);
|
||||
case InterpreterPushArgsMode::kOther:
|
||||
switch (receiver_mode) {
|
||||
case ConvertReceiverMode::kNullOrUndefined:
|
||||
return InterpreterPushUndefinedAndArgsThenCall();
|
||||
return builtin_handle(kInterpreterPushUndefinedAndArgsThenCall);
|
||||
case ConvertReceiverMode::kNotNullOrUndefined:
|
||||
case ConvertReceiverMode::kAny:
|
||||
return InterpreterPushArgsThenCall();
|
||||
return builtin_handle(kInterpreterPushArgsThenCall);
|
||||
}
|
||||
}
|
||||
UNREACHABLE();
|
||||
@ -40,11 +41,11 @@ Handle<Code> Builtins::InterpreterPushArgsThenConstruct(
|
||||
InterpreterPushArgsMode mode) {
|
||||
switch (mode) {
|
||||
case InterpreterPushArgsMode::kJSFunction:
|
||||
return InterpreterPushArgsThenConstructFunction();
|
||||
return builtin_handle(kInterpreterPushArgsThenConstructFunction);
|
||||
case InterpreterPushArgsMode::kWithFinalSpread:
|
||||
return InterpreterPushArgsThenConstructWithFinalSpread();
|
||||
return builtin_handle(kInterpreterPushArgsThenConstructWithFinalSpread);
|
||||
case InterpreterPushArgsMode::kOther:
|
||||
return InterpreterPushArgsThenConstruct();
|
||||
return builtin_handle(kInterpreterPushArgsThenConstruct);
|
||||
}
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
@ -99,9 +99,9 @@ const char* Builtins::Lookup(byte* pc) {
|
||||
Handle<Code> Builtins::NewFunctionContext(ScopeType scope_type) {
|
||||
switch (scope_type) {
|
||||
case ScopeType::EVAL_SCOPE:
|
||||
return FastNewFunctionContextEval();
|
||||
return builtin_handle(kFastNewFunctionContextEval);
|
||||
case ScopeType::FUNCTION_SCOPE:
|
||||
return FastNewFunctionContextFunction();
|
||||
return builtin_handle(kFastNewFunctionContextFunction);
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
@ -112,9 +112,9 @@ Handle<Code> Builtins::NewCloneShallowArray(
|
||||
AllocationSiteMode allocation_mode) {
|
||||
switch (allocation_mode) {
|
||||
case TRACK_ALLOCATION_SITE:
|
||||
return FastCloneShallowArrayTrack();
|
||||
return builtin_handle(kFastCloneShallowArrayTrack);
|
||||
case DONT_TRACK_ALLOCATION_SITE:
|
||||
return FastCloneShallowArrayDontTrack();
|
||||
return builtin_handle(kFastCloneShallowArrayDontTrack);
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
@ -124,11 +124,11 @@ Handle<Code> Builtins::NewCloneShallowArray(
|
||||
Handle<Code> Builtins::NonPrimitiveToPrimitive(ToPrimitiveHint hint) {
|
||||
switch (hint) {
|
||||
case ToPrimitiveHint::kDefault:
|
||||
return NonPrimitiveToPrimitive_Default();
|
||||
return builtin_handle(kNonPrimitiveToPrimitive_Default);
|
||||
case ToPrimitiveHint::kNumber:
|
||||
return NonPrimitiveToPrimitive_Number();
|
||||
return builtin_handle(kNonPrimitiveToPrimitive_Number);
|
||||
case ToPrimitiveHint::kString:
|
||||
return NonPrimitiveToPrimitive_String();
|
||||
return builtin_handle(kNonPrimitiveToPrimitive_String);
|
||||
}
|
||||
UNREACHABLE();
|
||||
}
|
||||
@ -136,9 +136,9 @@ Handle<Code> Builtins::NonPrimitiveToPrimitive(ToPrimitiveHint hint) {
|
||||
Handle<Code> Builtins::OrdinaryToPrimitive(OrdinaryToPrimitiveHint hint) {
|
||||
switch (hint) {
|
||||
case OrdinaryToPrimitiveHint::kNumber:
|
||||
return OrdinaryToPrimitive_Number();
|
||||
return builtin_handle(kOrdinaryToPrimitive_Number);
|
||||
case OrdinaryToPrimitiveHint::kString:
|
||||
return OrdinaryToPrimitive_String();
|
||||
return builtin_handle(kOrdinaryToPrimitive_String);
|
||||
}
|
||||
UNREACHABLE();
|
||||
}
|
||||
@ -173,27 +173,27 @@ Callable Builtins::CallableFor(Isolate* isolate, Name name) {
|
||||
return Callable(code, BuiltinDescriptor(isolate));
|
||||
}
|
||||
case kArrayForEach: {
|
||||
Handle<Code> code = isolate->builtins()->ArrayForEach();
|
||||
Handle<Code> code = BUILTIN_CODE(isolate, ArrayForEach);
|
||||
return Callable(code, BuiltinDescriptor(isolate));
|
||||
}
|
||||
case kArrayForEachLoopEagerDeoptContinuation: {
|
||||
Handle<Code> code =
|
||||
isolate->builtins()->ArrayForEachLoopEagerDeoptContinuation();
|
||||
BUILTIN_CODE(isolate, ArrayForEachLoopEagerDeoptContinuation);
|
||||
return Callable(code, BuiltinDescriptor(isolate));
|
||||
}
|
||||
case kArrayForEachLoopLazyDeoptContinuation: {
|
||||
Handle<Code> code =
|
||||
isolate->builtins()->ArrayForEachLoopLazyDeoptContinuation();
|
||||
BUILTIN_CODE(isolate, ArrayForEachLoopLazyDeoptContinuation);
|
||||
return Callable(code, BuiltinDescriptor(isolate));
|
||||
}
|
||||
case kArrayMapLoopEagerDeoptContinuation: {
|
||||
Handle<Code> code =
|
||||
isolate->builtins()->ArrayMapLoopEagerDeoptContinuation();
|
||||
BUILTIN_CODE(isolate, ArrayMapLoopEagerDeoptContinuation);
|
||||
return Callable(code, BuiltinDescriptor(isolate));
|
||||
}
|
||||
case kArrayMapLoopLazyDeoptContinuation: {
|
||||
Handle<Code> code =
|
||||
isolate->builtins()->ArrayMapLoopLazyDeoptContinuation();
|
||||
BUILTIN_CODE(isolate, ArrayMapLoopLazyDeoptContinuation);
|
||||
return Callable(code, BuiltinDescriptor(isolate));
|
||||
}
|
||||
default:
|
||||
@ -248,19 +248,10 @@ bool Builtins::HasCppImplementation(int index) {
|
||||
return (kind == CPP || kind == API);
|
||||
}
|
||||
|
||||
// TODO(jgruber): Replace with a CodeFor(name) accessor to emit less code.
|
||||
#define DEFINE_BUILTIN_ACCESSOR(Name, ...) \
|
||||
Handle<Code> Builtins::Name() { \
|
||||
Code** code_address = reinterpret_cast<Code**>(builtin_address(k##Name)); \
|
||||
return Handle<Code>(code_address); \
|
||||
}
|
||||
BUILTIN_LIST_ALL(DEFINE_BUILTIN_ACCESSOR)
|
||||
#undef DEFINE_BUILTIN_ACCESSOR
|
||||
|
||||
Handle<Code> Builtins::JSConstructStubGeneric() {
|
||||
return FLAG_harmony_restrict_constructor_return
|
||||
? JSConstructStubGenericRestrictedReturn()
|
||||
: JSConstructStubGenericUnrestrictedReturn();
|
||||
? builtin_handle(kJSConstructStubGenericRestrictedReturn)
|
||||
: builtin_handle(kJSConstructStubGenericUnrestrictedReturn);
|
||||
}
|
||||
|
||||
// static
|
||||
|
@ -25,6 +25,10 @@ namespace compiler {
|
||||
class CodeAssemblerState;
|
||||
}
|
||||
|
||||
// Convenience macro to avoid generating named accessors for all builtins.
|
||||
#define BUILTIN_CODE(isolate, name) \
|
||||
(isolate)->builtins()->builtin_handle(Builtins::k##name)
|
||||
|
||||
class Builtins {
|
||||
public:
|
||||
~Builtins();
|
||||
@ -50,11 +54,6 @@ class Builtins {
|
||||
static BailoutId GetContinuationBailoutId(Name name);
|
||||
static Name GetBuiltinFromBailoutId(BailoutId);
|
||||
|
||||
#define DECLARE_BUILTIN_ACCESSOR(Name, ...) \
|
||||
V8_EXPORT_PRIVATE Handle<Code> Name();
|
||||
BUILTIN_LIST_ALL(DECLARE_BUILTIN_ACCESSOR)
|
||||
#undef DECLARE_BUILTIN_ACCESSOR
|
||||
|
||||
// Convenience wrappers.
|
||||
Handle<Code> CallFunction(ConvertReceiverMode = ConvertReceiverMode::kAny);
|
||||
Handle<Code> Call(ConvertReceiverMode = ConvertReceiverMode::kAny);
|
||||
@ -78,7 +77,7 @@ class Builtins {
|
||||
return reinterpret_cast<Address>(&builtins_[name]);
|
||||
}
|
||||
|
||||
Handle<Code> builtin_handle(Name name);
|
||||
V8_EXPORT_PRIVATE Handle<Code> builtin_handle(Name name);
|
||||
|
||||
V8_EXPORT_PRIVATE static Callable CallableFor(Isolate* isolate, Name name);
|
||||
|
||||
|
@ -198,7 +198,7 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm,
|
||||
|
||||
// If not derived class constructor: Allocate the new receiver object.
|
||||
__ IncrementCounter(masm->isolate()->counters()->constructed_objects(), 1);
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ jmp(&post_instantiation_deopt_entry, Label::kNear);
|
||||
|
||||
@ -447,7 +447,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
||||
|
||||
// Invoke the code.
|
||||
Handle<Code> builtin = is_construct
|
||||
? masm->isolate()->builtins()->Construct()
|
||||
? BUILTIN_CODE(masm->isolate(), Construct)
|
||||
: masm->isolate()->builtins()->Call();
|
||||
__ Call(builtin, RelocInfo::CODE_TARGET);
|
||||
|
||||
@ -1003,7 +1003,7 @@ void Builtins::Generate_InterpreterPushArgsThenCallImpl(
|
||||
masm->isolate()->builtins()->CallFunction(ConvertReceiverMode::kAny),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
__ Jump(masm->isolate()->builtins()->CallWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
__ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny),
|
||||
@ -1157,12 +1157,12 @@ void Builtins::Generate_InterpreterPushArgsThenConstructImpl(
|
||||
__ jmp(ecx);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
// Call the constructor with unmodified eax, edi, edx values.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
DCHECK_EQ(InterpreterPushArgsMode::kOther, mode);
|
||||
// Call the constructor with unmodified eax, edi, edx values.
|
||||
__ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
__ bind(&stack_overflow);
|
||||
@ -1227,7 +1227,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
|
||||
Smi* interpreter_entry_return_pc_offset(
|
||||
masm->isolate()->heap()->interpreter_entry_return_pc_offset());
|
||||
DCHECK_NE(interpreter_entry_return_pc_offset, Smi::kZero);
|
||||
__ Move(ebx, masm->isolate()->builtins()->InterpreterEntryTrampoline());
|
||||
__ Move(ebx, BUILTIN_CODE(masm->isolate(), InterpreterEntryTrampoline));
|
||||
__ add(ebx, Immediate(interpreter_entry_return_pc_offset->value() +
|
||||
Code::kHeaderSize - kHeapObjectTag));
|
||||
__ push(ebx);
|
||||
@ -1662,7 +1662,7 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
Label::kNear);
|
||||
|
||||
// 4a. Apply the receiver to the given argArray.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// 4b. The argArray is either null or undefined, so we tail call without any
|
||||
@ -1765,7 +1765,7 @@ void Builtins::Generate_ReflectApply(MacroAssembler* masm) {
|
||||
// will do.
|
||||
|
||||
// 3. Apply the target to the given argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -1821,7 +1821,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
|
||||
// builtins will do.
|
||||
|
||||
// 4. Construct the target with the given new.target and argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -1907,7 +1907,7 @@ void Builtins::Generate_NumberConstructor(MacroAssembler* masm) {
|
||||
__ SmiTag(eax);
|
||||
__ EnterBuiltinFrame(esi, edi, eax);
|
||||
__ mov(eax, ebx);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(esi, edi, ebx); // Argc popped to ebx.
|
||||
__ SmiUntag(ebx);
|
||||
}
|
||||
@ -1968,7 +1968,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ EnterBuiltinFrame(esi, edi, ecx);
|
||||
__ Push(edx);
|
||||
__ Move(eax, ebx);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ Move(ebx, eax);
|
||||
__ Pop(edx);
|
||||
__ LeaveBuiltinFrame(esi, edi, ecx);
|
||||
@ -1994,7 +1994,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ EnterBuiltinFrame(esi, edi, ecx);
|
||||
__ Push(ebx); // the first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(FieldOperand(eax, JSValue::kValueOffset));
|
||||
__ LeaveBuiltinFrame(esi, edi, ecx);
|
||||
@ -2056,7 +2056,7 @@ void Builtins::Generate_StringConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(ebx);
|
||||
__ EnterBuiltinFrame(esi, edi, ebx);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(esi, edi, ebx);
|
||||
__ SmiUntag(ebx);
|
||||
}
|
||||
@ -2123,7 +2123,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(ebx);
|
||||
__ EnterBuiltinFrame(esi, edi, ebx);
|
||||
__ Push(edx);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ Pop(edx);
|
||||
__ LeaveBuiltinFrame(esi, edi, ebx);
|
||||
__ SmiUntag(ebx);
|
||||
@ -2157,7 +2157,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(ebx);
|
||||
__ EnterBuiltinFrame(esi, edi, ebx);
|
||||
__ Push(eax); // the first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(FieldOperand(eax, JSValue::kValueOffset));
|
||||
__ LeaveBuiltinFrame(esi, edi, ebx);
|
||||
@ -2428,7 +2428,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
|
||||
__ Push(edi);
|
||||
__ mov(eax, ecx);
|
||||
__ Push(esi);
|
||||
__ Call(masm->isolate()->builtins()->ToObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(esi);
|
||||
__ mov(ecx, eax);
|
||||
@ -2587,7 +2587,7 @@ void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode) {
|
||||
__ j(equal, masm->isolate()->builtins()->CallFunction(mode),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ CmpInstanceType(ecx, JS_BOUND_FUNCTION_TYPE);
|
||||
__ j(equal, masm->isolate()->builtins()->CallBoundFunction(),
|
||||
__ j(equal, BUILTIN_CODE(masm->isolate(), CallBoundFunction),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// Check if target is a proxy and call CallProxy external builtin
|
||||
@ -2689,7 +2689,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
|
||||
// Dispatch based on instance type.
|
||||
__ CmpObjectType(edi, JS_FUNCTION_TYPE, ecx);
|
||||
__ j(equal, masm->isolate()->builtins()->ConstructFunction(),
|
||||
__ j(equal, BUILTIN_CODE(masm->isolate(), ConstructFunction),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// Check if target has a [[Construct]] internal method.
|
||||
@ -2700,7 +2700,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Only dispatch to bound functions after checking whether they are
|
||||
// constructors.
|
||||
__ CmpInstanceType(ecx, JS_BOUND_FUNCTION_TYPE);
|
||||
__ j(equal, masm->isolate()->builtins()->ConstructBoundFunction(),
|
||||
__ j(equal, BUILTIN_CODE(masm->isolate(), ConstructBoundFunction),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// Only dispatch to proxies after checking whether they are constructors.
|
||||
@ -2723,7 +2723,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Called Construct on an Object that doesn't have a [[Construct]] internal
|
||||
// method.
|
||||
__ bind(&non_constructor);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructedNonConstructable),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
@ -146,7 +146,7 @@ void Builtins::Generate_NumberConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
__ SmiUntag(t0);
|
||||
}
|
||||
@ -203,7 +203,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Push(a3);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ Move(a0, v0);
|
||||
__ Pop(a3);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
@ -227,7 +227,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Push(a0); // first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(a0);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
@ -290,7 +290,7 @@ void Builtins::Generate_StringConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
__ SmiUntag(t0);
|
||||
}
|
||||
@ -354,7 +354,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Push(a3);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ Move(a0, v0);
|
||||
__ Pop(a3);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
@ -378,7 +378,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Push(a0); // first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(a0);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
@ -527,7 +527,7 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm,
|
||||
// If not derived class constructor: Allocate the new receiver object.
|
||||
__ IncrementCounter(masm->isolate()->counters()->constructed_objects(), 1,
|
||||
t2, t3);
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Branch(&post_instantiation_deopt_entry);
|
||||
|
||||
@ -788,7 +788,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
||||
|
||||
// Invoke the code.
|
||||
Handle<Code> builtin = is_construct
|
||||
? masm->isolate()->builtins()->Construct()
|
||||
? BUILTIN_CODE(masm->isolate(), Construct)
|
||||
: masm->isolate()->builtins()->Call();
|
||||
__ Call(builtin, RelocInfo::CODE_TARGET);
|
||||
|
||||
@ -1302,7 +1302,7 @@ void Builtins::Generate_InterpreterPushArgsThenCallImpl(
|
||||
masm->isolate()->builtins()->CallFunction(ConvertReceiverMode::kAny),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
__ Jump(masm->isolate()->builtins()->CallWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
__ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny),
|
||||
@ -1354,12 +1354,12 @@ void Builtins::Generate_InterpreterPushArgsThenConstructImpl(
|
||||
__ Jump(at, t0, Code::kHeaderSize - kHeapObjectTag);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
// Call the constructor with a0, a1, and a3 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
DCHECK_EQ(InterpreterPushArgsMode::kOther, mode);
|
||||
// Call the constructor with a0, a1, and a3 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
__ bind(&stack_overflow);
|
||||
@ -1411,7 +1411,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
|
||||
Smi* interpreter_entry_return_pc_offset(
|
||||
masm->isolate()->heap()->interpreter_entry_return_pc_offset());
|
||||
DCHECK_NE(interpreter_entry_return_pc_offset, Smi::kZero);
|
||||
__ li(t0, Operand(masm->isolate()->builtins()->InterpreterEntryTrampoline()));
|
||||
__ li(t0, Operand(BUILTIN_CODE(masm->isolate(), InterpreterEntryTrampoline)));
|
||||
__ Addu(ra, t0, Operand(interpreter_entry_return_pc_offset->value() +
|
||||
Code::kHeaderSize - kHeapObjectTag));
|
||||
|
||||
@ -1891,7 +1891,7 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
__ JumpIfRoot(a2, Heap::kUndefinedValueRootIndex, &no_arguments);
|
||||
|
||||
// 4a. Apply the receiver to the given argArray.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// 4b. The argArray is either null or undefined, so we tail call without any
|
||||
@ -1992,7 +1992,7 @@ void Builtins::Generate_ReflectApply(MacroAssembler* masm) {
|
||||
// will do.
|
||||
|
||||
// 3. Apply the target to the given argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2048,7 +2048,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
|
||||
// builtins will do.
|
||||
|
||||
// 4. Construct the target with the given new.target and argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2257,7 +2257,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
|
||||
__ Push(a0, a1);
|
||||
__ mov(a0, a3);
|
||||
__ Push(cp);
|
||||
__ Call(masm->isolate()->builtins()->ToObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
__ mov(a3, v0);
|
||||
@ -2395,7 +2395,7 @@ void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode) {
|
||||
__ GetObjectType(a1, t1, t2);
|
||||
__ Jump(masm->isolate()->builtins()->CallFunction(mode),
|
||||
RelocInfo::CODE_TARGET, eq, t2, Operand(JS_FUNCTION_TYPE));
|
||||
__ Jump(masm->isolate()->builtins()->CallBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq, t2, Operand(JS_BOUND_FUNCTION_TYPE));
|
||||
|
||||
// Check if target has a [[Call]] internal method.
|
||||
@ -2556,7 +2556,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Dispatch based on instance type.
|
||||
__ lw(t1, FieldMemOperand(a1, HeapObject::kMapOffset));
|
||||
__ lbu(t2, FieldMemOperand(t1, Map::kInstanceTypeOffset));
|
||||
__ Jump(masm->isolate()->builtins()->ConstructFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructFunction),
|
||||
RelocInfo::CODE_TARGET, eq, t2, Operand(JS_FUNCTION_TYPE));
|
||||
|
||||
// Check if target has a [[Construct]] internal method.
|
||||
@ -2566,7 +2566,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
|
||||
// Only dispatch to bound functions after checking whether they are
|
||||
// constructors.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq, t2, Operand(JS_BOUND_FUNCTION_TYPE));
|
||||
|
||||
// Only dispatch to proxies after checking whether they are constructors.
|
||||
@ -2589,7 +2589,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Called Construct on an Object that doesn't have a [[Construct]] internal
|
||||
// method.
|
||||
__ bind(&non_constructor);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructedNonConstructable),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
@ -147,7 +147,7 @@ void Builtins::Generate_NumberConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
__ SmiUntag(t0);
|
||||
}
|
||||
@ -204,7 +204,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Push(a3);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ Move(a0, v0);
|
||||
__ Pop(a3);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
@ -228,7 +228,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Push(a0);
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(a0);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
@ -292,7 +292,7 @@ void Builtins::Generate_StringConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
__ SmiUntag(t0);
|
||||
}
|
||||
@ -356,7 +356,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Push(a3);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ Move(a0, v0);
|
||||
__ Pop(a3);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
@ -380,7 +380,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(t0);
|
||||
__ EnterBuiltinFrame(cp, a1, t0);
|
||||
__ Push(a0);
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(a0);
|
||||
__ LeaveBuiltinFrame(cp, a1, t0);
|
||||
@ -531,7 +531,7 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm,
|
||||
// If not derived class constructor: Allocate the new receiver object.
|
||||
__ IncrementCounter(masm->isolate()->counters()->constructed_objects(), 1,
|
||||
t2, t3);
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Branch(&post_instantiation_deopt_entry);
|
||||
|
||||
@ -905,7 +905,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
||||
|
||||
// Invoke the code.
|
||||
Handle<Code> builtin = is_construct
|
||||
? masm->isolate()->builtins()->Construct()
|
||||
? BUILTIN_CODE(masm->isolate(), Construct)
|
||||
: masm->isolate()->builtins()->Call();
|
||||
__ Call(builtin, RelocInfo::CODE_TARGET);
|
||||
|
||||
@ -1307,7 +1307,7 @@ void Builtins::Generate_InterpreterPushArgsThenCallImpl(
|
||||
masm->isolate()->builtins()->CallFunction(ConvertReceiverMode::kAny),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
__ Jump(masm->isolate()->builtins()->CallWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
__ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny),
|
||||
@ -1360,12 +1360,12 @@ void Builtins::Generate_InterpreterPushArgsThenConstructImpl(
|
||||
__ Jump(at);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
// Call the constructor with a0, a1, and a3 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
DCHECK_EQ(InterpreterPushArgsMode::kOther, mode);
|
||||
// Call the constructor with a0, a1, and a3 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
__ bind(&stack_overflow);
|
||||
@ -1417,7 +1417,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
|
||||
Smi* interpreter_entry_return_pc_offset(
|
||||
masm->isolate()->heap()->interpreter_entry_return_pc_offset());
|
||||
DCHECK_NE(interpreter_entry_return_pc_offset, Smi::kZero);
|
||||
__ li(t0, Operand(masm->isolate()->builtins()->InterpreterEntryTrampoline()));
|
||||
__ li(t0, Operand(BUILTIN_CODE(masm->isolate(), InterpreterEntryTrampoline)));
|
||||
__ Daddu(ra, t0, Operand(interpreter_entry_return_pc_offset->value() +
|
||||
Code::kHeaderSize - kHeapObjectTag));
|
||||
|
||||
@ -1903,7 +1903,7 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
__ Branch(&no_arguments, eq, arg_array, Operand(undefined_value));
|
||||
|
||||
// 4a. Apply the receiver to the given argArray.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// 4b. The argArray is either null or undefined, so we tail call without any
|
||||
@ -2010,7 +2010,7 @@ void Builtins::Generate_ReflectApply(MacroAssembler* masm) {
|
||||
// will do.
|
||||
|
||||
// 3. Apply the target to the given argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2069,7 +2069,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
|
||||
// builtins will do.
|
||||
|
||||
// 4. Construct the target with the given new.target and argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2287,7 +2287,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
|
||||
__ Push(a0, a1);
|
||||
__ mov(a0, a3);
|
||||
__ Push(cp);
|
||||
__ Call(masm->isolate()->builtins()->ToObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
__ mov(a3, v0);
|
||||
@ -2424,7 +2424,7 @@ void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode) {
|
||||
__ GetObjectType(a1, t1, t2);
|
||||
__ Jump(masm->isolate()->builtins()->CallFunction(mode),
|
||||
RelocInfo::CODE_TARGET, eq, t2, Operand(JS_FUNCTION_TYPE));
|
||||
__ Jump(masm->isolate()->builtins()->CallBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq, t2, Operand(JS_BOUND_FUNCTION_TYPE));
|
||||
|
||||
// Check if target has a [[Call]] internal method.
|
||||
@ -2584,7 +2584,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Dispatch based on instance type.
|
||||
__ Ld(t1, FieldMemOperand(a1, HeapObject::kMapOffset));
|
||||
__ Lbu(t2, FieldMemOperand(t1, Map::kInstanceTypeOffset));
|
||||
__ Jump(masm->isolate()->builtins()->ConstructFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructFunction),
|
||||
RelocInfo::CODE_TARGET, eq, t2, Operand(JS_FUNCTION_TYPE));
|
||||
|
||||
// Check if target has a [[Construct]] internal method.
|
||||
@ -2594,7 +2594,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
|
||||
// Only dispatch to bound functions after checking whether they are
|
||||
// constructors.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq, t2, Operand(JS_BOUND_FUNCTION_TYPE));
|
||||
|
||||
// Only dispatch to proxies after checking whether they are constructors.
|
||||
@ -2617,7 +2617,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Called Construct on an Object that doesn't have a [[Construct]] internal
|
||||
// method.
|
||||
__ bind(&non_constructor);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructedNonConstructable),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
@ -143,7 +143,7 @@ void Builtins::Generate_NumberConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(r5);
|
||||
__ EnterBuiltinFrame(cp, r4, r5);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, r4, r5);
|
||||
__ SmiUntag(r5);
|
||||
}
|
||||
@ -202,7 +202,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ EnterBuiltinFrame(cp, r4, r9);
|
||||
__ Push(r6);
|
||||
__ mr(r3, r5);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ mr(r5, r3);
|
||||
__ Pop(r6);
|
||||
__ LeaveBuiltinFrame(cp, r4, r9);
|
||||
@ -227,7 +227,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(r9);
|
||||
__ EnterBuiltinFrame(cp, r4, r9);
|
||||
__ Push(r5); // first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(r5);
|
||||
__ LeaveBuiltinFrame(cp, r4, r9);
|
||||
@ -289,7 +289,7 @@ void Builtins::Generate_StringConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(r5);
|
||||
__ EnterBuiltinFrame(cp, r4, r5);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, r4, r5);
|
||||
__ SmiUntag(r5);
|
||||
}
|
||||
@ -354,7 +354,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ EnterBuiltinFrame(cp, r4, r9);
|
||||
__ Push(r6);
|
||||
__ mr(r3, r5);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ mr(r5, r3);
|
||||
__ Pop(r6);
|
||||
__ LeaveBuiltinFrame(cp, r4, r9);
|
||||
@ -379,7 +379,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(r9);
|
||||
__ EnterBuiltinFrame(cp, r4, r9);
|
||||
__ Push(r5); // first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(r5);
|
||||
__ LeaveBuiltinFrame(cp, r4, r9);
|
||||
@ -540,7 +540,7 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm,
|
||||
// If not derived class constructor: Allocate the new receiver object.
|
||||
__ IncrementCounter(masm->isolate()->counters()->constructed_objects(), 1,
|
||||
r7, r8);
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ b(&post_instantiation_deopt_entry);
|
||||
|
||||
@ -923,7 +923,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
||||
|
||||
// Invoke the code.
|
||||
Handle<Code> builtin = is_construct
|
||||
? masm->isolate()->builtins()->Construct()
|
||||
? BUILTIN_CODE(masm->isolate(), Construct)
|
||||
: masm->isolate()->builtins()->Call();
|
||||
__ Call(builtin, RelocInfo::CODE_TARGET);
|
||||
|
||||
@ -1344,7 +1344,7 @@ void Builtins::Generate_InterpreterPushArgsThenCallImpl(
|
||||
masm->isolate()->builtins()->CallFunction(ConvertReceiverMode::kAny),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
__ Jump(masm->isolate()->builtins()->CallWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
__ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny),
|
||||
@ -1401,12 +1401,12 @@ void Builtins::Generate_InterpreterPushArgsThenConstructImpl(
|
||||
__ Jump(ip);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
// Call the constructor with r3, r4, and r6 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
DCHECK_EQ(InterpreterPushArgsMode::kOther, mode);
|
||||
// Call the constructor with r3, r4, and r6 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
__ bind(&stack_overflow);
|
||||
@ -1457,7 +1457,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
|
||||
Smi* interpreter_entry_return_pc_offset(
|
||||
masm->isolate()->heap()->interpreter_entry_return_pc_offset());
|
||||
DCHECK_NE(interpreter_entry_return_pc_offset, Smi::kZero);
|
||||
__ Move(r5, masm->isolate()->builtins()->InterpreterEntryTrampoline());
|
||||
__ Move(r5, BUILTIN_CODE(masm->isolate(), InterpreterEntryTrampoline));
|
||||
__ addi(r0, r5, Operand(interpreter_entry_return_pc_offset->value() +
|
||||
Code::kHeaderSize - kHeapObjectTag));
|
||||
__ mtlr(r0);
|
||||
@ -1964,7 +1964,7 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
__ JumpIfRoot(r5, Heap::kUndefinedValueRootIndex, &no_arguments);
|
||||
|
||||
// 4a. Apply the receiver to the given argArray.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// 4b. The argArray is either null or undefined, so we tail call without any
|
||||
@ -2066,7 +2066,7 @@ void Builtins::Generate_ReflectApply(MacroAssembler* masm) {
|
||||
// will do.
|
||||
|
||||
// 3. Apply the target to the given argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2122,7 +2122,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
|
||||
// builtins will do.
|
||||
|
||||
// 4. Construct the target with the given new.target and argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2341,7 +2341,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
|
||||
__ Push(r3, r4);
|
||||
__ mr(r3, r6);
|
||||
__ Push(cp);
|
||||
__ Call(masm->isolate()->builtins()->ToObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
__ mr(r6, r3);
|
||||
@ -2500,7 +2500,7 @@ void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode) {
|
||||
__ Jump(masm->isolate()->builtins()->CallFunction(mode),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
__ cmpi(r8, Operand(JS_BOUND_FUNCTION_TYPE));
|
||||
__ Jump(masm->isolate()->builtins()->CallBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Check if target has a [[Call]] internal method.
|
||||
@ -2603,7 +2603,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
|
||||
// Dispatch based on instance type.
|
||||
__ CompareObjectType(r4, r7, r8, JS_FUNCTION_TYPE);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Check if target has a [[Construct]] internal method.
|
||||
@ -2614,7 +2614,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Only dispatch to bound functions after checking whether they are
|
||||
// constructors.
|
||||
__ cmpi(r8, Operand(JS_BOUND_FUNCTION_TYPE));
|
||||
__ Jump(masm->isolate()->builtins()->ConstructBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Only dispatch to proxies after checking whether they are constructors.
|
||||
@ -2638,7 +2638,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Called Construct on an Object that doesn't have a [[Construct]] internal
|
||||
// method.
|
||||
__ bind(&non_constructor);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructedNonConstructable),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
@ -143,7 +143,7 @@ void Builtins::Generate_NumberConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(r4);
|
||||
__ EnterBuiltinFrame(cp, r3, r4);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, r3, r4);
|
||||
__ SmiUntag(r4);
|
||||
}
|
||||
@ -201,7 +201,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ EnterBuiltinFrame(cp, r3, r8);
|
||||
__ Push(r5);
|
||||
__ LoadRR(r2, r4);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ LoadRR(r4, r2);
|
||||
__ Pop(r5);
|
||||
__ LeaveBuiltinFrame(cp, r3, r8);
|
||||
@ -226,7 +226,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(r8);
|
||||
__ EnterBuiltinFrame(cp, r3, r8);
|
||||
__ Push(r4); // first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(r4);
|
||||
__ LeaveBuiltinFrame(cp, r3, r8);
|
||||
@ -287,7 +287,7 @@ void Builtins::Generate_StringConstructor(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ SmiTag(r4);
|
||||
__ EnterBuiltinFrame(cp, r3, r4);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(cp, r3, r4);
|
||||
__ SmiUntag(r4);
|
||||
}
|
||||
@ -351,7 +351,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ EnterBuiltinFrame(cp, r3, r8);
|
||||
__ Push(r5);
|
||||
__ LoadRR(r2, r4);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ LoadRR(r4, r2);
|
||||
__ Pop(r5);
|
||||
__ LeaveBuiltinFrame(cp, r3, r8);
|
||||
@ -376,7 +376,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ SmiTag(r8);
|
||||
__ EnterBuiltinFrame(cp, r3, r8);
|
||||
__ Push(r4); // first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(r4);
|
||||
__ LeaveBuiltinFrame(cp, r3, r8);
|
||||
@ -532,7 +532,7 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm,
|
||||
// If not derived class constructor: Allocate the new receiver object.
|
||||
__ IncrementCounter(masm->isolate()->counters()->constructed_objects(), 1,
|
||||
r6, r7);
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ b(&post_instantiation_deopt_entry);
|
||||
|
||||
@ -922,7 +922,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
||||
|
||||
// Invoke the code.
|
||||
Handle<Code> builtin = is_construct
|
||||
? masm->isolate()->builtins()->Construct()
|
||||
? BUILTIN_CODE(masm->isolate(), Construct)
|
||||
: masm->isolate()->builtins()->Call();
|
||||
__ Call(builtin, RelocInfo::CODE_TARGET);
|
||||
|
||||
@ -1338,7 +1338,7 @@ void Builtins::Generate_InterpreterPushArgsThenCallImpl(
|
||||
masm->isolate()->builtins()->CallFunction(ConvertReceiverMode::kAny),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
__ Jump(masm->isolate()->builtins()->CallWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
__ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny),
|
||||
@ -1395,12 +1395,12 @@ void Builtins::Generate_InterpreterPushArgsThenConstructImpl(
|
||||
__ Jump(ip);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
// Call the constructor with r2, r3, and r5 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
DCHECK_EQ(InterpreterPushArgsMode::kOther, mode);
|
||||
// Call the constructor with r2, r3, and r5 unmodified.
|
||||
__ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
__ bind(&stack_overflow);
|
||||
@ -1451,7 +1451,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
|
||||
Smi* interpreter_entry_return_pc_offset(
|
||||
masm->isolate()->heap()->interpreter_entry_return_pc_offset());
|
||||
DCHECK_NE(interpreter_entry_return_pc_offset, Smi::kZero);
|
||||
__ Move(r4, masm->isolate()->builtins()->InterpreterEntryTrampoline());
|
||||
__ Move(r4, BUILTIN_CODE(masm->isolate(), InterpreterEntryTrampoline));
|
||||
__ AddP(r14, r4, Operand(interpreter_entry_return_pc_offset->value() +
|
||||
Code::kHeaderSize - kHeapObjectTag));
|
||||
|
||||
@ -1954,7 +1954,7 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
__ JumpIfRoot(r4, Heap::kUndefinedValueRootIndex, &no_arguments);
|
||||
|
||||
// 4a. Apply the receiver to the given argArray.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// 4b. The argArray is either null or undefined, so we tail call without any
|
||||
@ -2056,7 +2056,7 @@ void Builtins::Generate_ReflectApply(MacroAssembler* masm) {
|
||||
// will do.
|
||||
|
||||
// 3 Apply the target to the given argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2112,7 +2112,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
|
||||
// builtins will do.
|
||||
|
||||
// 4. Construct the target with the given new.target and argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -2340,7 +2340,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
|
||||
__ Push(r2, r3);
|
||||
__ LoadRR(r2, r5);
|
||||
__ Push(cp);
|
||||
__ Call(masm->isolate()->builtins()->ToObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
__ LoadRR(r5, r2);
|
||||
@ -2501,7 +2501,7 @@ void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode) {
|
||||
__ Jump(masm->isolate()->builtins()->CallFunction(mode),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
__ CmpP(r7, Operand(JS_BOUND_FUNCTION_TYPE));
|
||||
__ Jump(masm->isolate()->builtins()->CallBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Check if target has a [[Call]] internal method.
|
||||
@ -2604,7 +2604,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
|
||||
// Dispatch based on instance type.
|
||||
__ CompareObjectType(r3, r6, r7, JS_FUNCTION_TYPE);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Check if target has a [[Construct]] internal method.
|
||||
@ -2615,7 +2615,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Only dispatch to bound functions after checking whether they are
|
||||
// constructors.
|
||||
__ CmpP(r7, Operand(JS_BOUND_FUNCTION_TYPE));
|
||||
__ Jump(masm->isolate()->builtins()->ConstructBoundFunction(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructBoundFunction),
|
||||
RelocInfo::CODE_TARGET, eq);
|
||||
|
||||
// Only dispatch to proxies after checking whether they are constructors.
|
||||
@ -2639,7 +2639,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Called Construct on an Object that doesn't have a [[Construct]] internal
|
||||
// method.
|
||||
__ bind(&non_constructor);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructedNonConstructable),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
@ -204,7 +204,7 @@ void Generate_JSConstructStubGeneric(MacroAssembler* masm,
|
||||
|
||||
// If not derived class constructor: Allocate the new receiver object.
|
||||
__ IncrementCounter(masm->isolate()->counters()->constructed_objects(), 1);
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ jmp(&post_instantiation_deopt_entry, Label::kNear);
|
||||
|
||||
@ -522,7 +522,7 @@ static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm,
|
||||
|
||||
// Invoke the builtin code.
|
||||
Handle<Code> builtin = is_construct
|
||||
? masm->isolate()->builtins()->Construct()
|
||||
? BUILTIN_CODE(masm->isolate(), Construct)
|
||||
: masm->isolate()->builtins()->Call();
|
||||
__ Call(builtin, RelocInfo::CODE_TARGET);
|
||||
|
||||
@ -1065,7 +1065,7 @@ void Builtins::Generate_InterpreterPushArgsThenCallImpl(
|
||||
__ Jump(masm->isolate()->builtins()->CallFunction(receiver_mode),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
__ Jump(masm->isolate()->builtins()->CallWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
__ Jump(masm->isolate()->builtins()->Call(receiver_mode),
|
||||
@ -1131,12 +1131,12 @@ void Builtins::Generate_InterpreterPushArgsThenConstructImpl(
|
||||
__ jmp(rcx);
|
||||
} else if (mode == InterpreterPushArgsMode::kWithFinalSpread) {
|
||||
// Call the constructor (rax, rdx, rdi passed on).
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithSpread(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithSpread),
|
||||
RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
DCHECK_EQ(InterpreterPushArgsMode::kOther, mode);
|
||||
// Call the constructor (rax, rdx, rdi passed on).
|
||||
__ Jump(masm->isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
// Throw stack overflow exception.
|
||||
@ -1200,7 +1200,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
|
||||
Smi* interpreter_entry_return_pc_offset(
|
||||
masm->isolate()->heap()->interpreter_entry_return_pc_offset());
|
||||
DCHECK_NE(interpreter_entry_return_pc_offset, Smi::kZero);
|
||||
__ Move(rbx, masm->isolate()->builtins()->InterpreterEntryTrampoline());
|
||||
__ Move(rbx, BUILTIN_CODE(masm->isolate(), InterpreterEntryTrampoline));
|
||||
__ addp(rbx, Immediate(interpreter_entry_return_pc_offset->value() +
|
||||
Code::kHeaderSize - kHeapObjectTag));
|
||||
__ Push(rbx);
|
||||
@ -1635,7 +1635,7 @@ void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) {
|
||||
Label::kNear);
|
||||
|
||||
// 4a. Apply the receiver to the given argArray.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// 4b. The argArray is either null or undefined, so we tail call without any
|
||||
@ -1746,7 +1746,7 @@ void Builtins::Generate_ReflectApply(MacroAssembler* masm) {
|
||||
// will do.
|
||||
|
||||
// 3. Apply the target to the given argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->CallWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -1803,7 +1803,7 @@ void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) {
|
||||
// builtins will do.
|
||||
|
||||
// 4. Construct the target with the given new.target and argumentsList.
|
||||
__ Jump(masm->isolate()->builtins()->ConstructWithArrayLike(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithArrayLike),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -1892,7 +1892,7 @@ void Builtins::Generate_NumberConstructor(MacroAssembler* masm) {
|
||||
__ Integer32ToSmi(rax, rax);
|
||||
__ EnterBuiltinFrame(rsi, rdi, rax);
|
||||
__ movp(rax, rbx);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(rsi, rdi, rbx); // Argc popped to rbx.
|
||||
__ SmiToInteger32(rbx, rbx);
|
||||
}
|
||||
@ -1953,7 +1953,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ EnterBuiltinFrame(rsi, rdi, r8);
|
||||
__ Push(rdx);
|
||||
__ Move(rax, rbx);
|
||||
__ Call(masm->isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
__ Move(rbx, rax);
|
||||
__ Pop(rdx);
|
||||
__ LeaveBuiltinFrame(rsi, rdi, r8);
|
||||
@ -1976,7 +1976,7 @@ void Builtins::Generate_NumberConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ EnterBuiltinFrame(rsi, rdi, r8);
|
||||
__ Push(rbx); // the first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(FieldOperand(rax, JSValue::kValueOffset));
|
||||
__ LeaveBuiltinFrame(rsi, rdi, r8);
|
||||
@ -2038,7 +2038,7 @@ void Builtins::Generate_StringConstructor(MacroAssembler* masm) {
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ EnterBuiltinFrame(rsi, rdi, r8);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ LeaveBuiltinFrame(rsi, rdi, r8);
|
||||
}
|
||||
__ jmp(&drop_frame_and_ret, Label::kNear);
|
||||
@ -2108,7 +2108,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
__ EnterBuiltinFrame(rsi, rdi, r8);
|
||||
__ Push(rdx);
|
||||
__ Move(rax, rbx);
|
||||
__ Call(masm->isolate()->builtins()->ToString(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToString), RelocInfo::CODE_TARGET);
|
||||
__ Move(rbx, rax);
|
||||
__ Pop(rdx);
|
||||
__ LeaveBuiltinFrame(rsi, rdi, r8);
|
||||
@ -2131,7 +2131,7 @@ void Builtins::Generate_StringConstructor_ConstructStub(MacroAssembler* masm) {
|
||||
FrameScope scope(masm, StackFrame::MANUAL);
|
||||
__ EnterBuiltinFrame(rsi, rdi, r8);
|
||||
__ Push(rbx); // the first argument
|
||||
__ Call(masm->isolate()->builtins()->FastNewObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), FastNewObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(FieldOperand(rax, JSValue::kValueOffset));
|
||||
__ LeaveBuiltinFrame(rsi, rdi, r8);
|
||||
@ -2523,7 +2523,7 @@ void Builtins::Generate_CallFunction(MacroAssembler* masm,
|
||||
__ Push(rdi);
|
||||
__ movp(rax, rcx);
|
||||
__ Push(rsi);
|
||||
__ Call(masm->isolate()->builtins()->ToObject(),
|
||||
__ Call(BUILTIN_CODE(masm->isolate(), ToObject),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(rsi);
|
||||
__ movp(rcx, rax);
|
||||
@ -2684,7 +2684,7 @@ void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode) {
|
||||
__ j(equal, masm->isolate()->builtins()->CallFunction(mode),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ CmpInstanceType(rcx, JS_BOUND_FUNCTION_TYPE);
|
||||
__ j(equal, masm->isolate()->builtins()->CallBoundFunction(),
|
||||
__ j(equal, BUILTIN_CODE(masm->isolate(), CallBoundFunction),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// Check if target has a [[Call]] internal method.
|
||||
@ -2786,7 +2786,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
|
||||
// Dispatch based on instance type.
|
||||
__ CmpObjectType(rdi, JS_FUNCTION_TYPE, rcx);
|
||||
__ j(equal, masm->isolate()->builtins()->ConstructFunction(),
|
||||
__ j(equal, BUILTIN_CODE(masm->isolate(), ConstructFunction),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// Check if target has a [[Construct]] internal method.
|
||||
@ -2797,7 +2797,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Only dispatch to bound functions after checking whether they are
|
||||
// constructors.
|
||||
__ CmpInstanceType(rcx, JS_BOUND_FUNCTION_TYPE);
|
||||
__ j(equal, masm->isolate()->builtins()->ConstructBoundFunction(),
|
||||
__ j(equal, BUILTIN_CODE(masm->isolate(), ConstructBoundFunction),
|
||||
RelocInfo::CODE_TARGET);
|
||||
|
||||
// Only dispatch to proxies after checking whether they are constructors.
|
||||
@ -2820,7 +2820,7 @@ void Builtins::Generate_Construct(MacroAssembler* masm) {
|
||||
// Called Construct on an Object that doesn't have a [[Construct]] internal
|
||||
// method.
|
||||
__ bind(&non_constructor);
|
||||
__ Jump(masm->isolate()->builtins()->ConstructedNonConstructable(),
|
||||
__ Jump(BUILTIN_CODE(masm->isolate(), ConstructedNonConstructable),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
@ -34,8 +34,8 @@ Callable CodeFactory::LoadICProtoArray(Isolate* isolate,
|
||||
bool throw_if_nonexistent) {
|
||||
return Callable(
|
||||
throw_if_nonexistent
|
||||
? isolate->builtins()->LoadICProtoArrayThrowIfNonexistent()
|
||||
: isolate->builtins()->LoadICProtoArray(),
|
||||
? BUILTIN_CODE(isolate, LoadICProtoArrayThrowIfNonexistent)
|
||||
: BUILTIN_CODE(isolate, LoadICProtoArray),
|
||||
LoadICProtoArrayDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -49,8 +49,8 @@ Callable CodeFactory::ApiGetter(Isolate* isolate) {
|
||||
Callable CodeFactory::LoadGlobalIC(Isolate* isolate, TypeofMode typeof_mode) {
|
||||
return Callable(
|
||||
typeof_mode == NOT_INSIDE_TYPEOF
|
||||
? isolate->builtins()->LoadGlobalICTrampoline()
|
||||
: isolate->builtins()->LoadGlobalICInsideTypeofTrampoline(),
|
||||
? BUILTIN_CODE(isolate, LoadGlobalICTrampoline)
|
||||
: BUILTIN_CODE(isolate, LoadGlobalICInsideTypeofTrampoline),
|
||||
LoadGlobalDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -58,8 +58,8 @@ Callable CodeFactory::LoadGlobalIC(Isolate* isolate, TypeofMode typeof_mode) {
|
||||
Callable CodeFactory::LoadGlobalICInOptimizedCode(Isolate* isolate,
|
||||
TypeofMode typeof_mode) {
|
||||
return Callable(typeof_mode == NOT_INSIDE_TYPEOF
|
||||
? isolate->builtins()->LoadGlobalIC()
|
||||
: isolate->builtins()->LoadGlobalICInsideTypeof(),
|
||||
? BUILTIN_CODE(isolate, LoadGlobalIC)
|
||||
: BUILTIN_CODE(isolate, LoadGlobalICInsideTypeof),
|
||||
LoadGlobalWithVectorDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -79,16 +79,16 @@ Callable CodeFactory::CallICTrampoline(Isolate* isolate,
|
||||
// static
|
||||
Callable CodeFactory::StoreIC(Isolate* isolate, LanguageMode language_mode) {
|
||||
return Callable(language_mode == STRICT
|
||||
? isolate->builtins()->StoreICStrictTrampoline()
|
||||
: isolate->builtins()->StoreICTrampoline(),
|
||||
? BUILTIN_CODE(isolate, StoreICStrictTrampoline)
|
||||
: BUILTIN_CODE(isolate, StoreICTrampoline),
|
||||
StoreDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::StoreICInOptimizedCode(Isolate* isolate,
|
||||
LanguageMode language_mode) {
|
||||
return Callable(language_mode == STRICT ? isolate->builtins()->StoreICStrict()
|
||||
: isolate->builtins()->StoreIC(),
|
||||
return Callable(language_mode == STRICT ? BUILTIN_CODE(isolate, StoreICStrict)
|
||||
: BUILTIN_CODE(isolate, StoreIC),
|
||||
StoreWithVectorDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -96,22 +96,22 @@ Callable CodeFactory::StoreICInOptimizedCode(Isolate* isolate,
|
||||
Callable CodeFactory::StoreIC_Uninitialized(Isolate* isolate,
|
||||
LanguageMode language_mode) {
|
||||
return Callable(language_mode == STRICT
|
||||
? isolate->builtins()->StoreICStrict_Uninitialized()
|
||||
: isolate->builtins()->StoreIC_Uninitialized(),
|
||||
? BUILTIN_CODE(isolate, StoreICStrict_Uninitialized)
|
||||
: BUILTIN_CODE(isolate, StoreIC_Uninitialized),
|
||||
StoreWithVectorDescriptor(isolate));
|
||||
}
|
||||
|
||||
Callable CodeFactory::StoreOwnIC(Isolate* isolate) {
|
||||
// TODO(ishell): Currently we use StoreOwnIC only for storing properties that
|
||||
// already exist in the boilerplate therefore we can use StoreIC.
|
||||
return Callable(isolate->builtins()->StoreICStrictTrampoline(),
|
||||
return Callable(BUILTIN_CODE(isolate, StoreICStrictTrampoline),
|
||||
StoreDescriptor(isolate));
|
||||
}
|
||||
|
||||
Callable CodeFactory::StoreOwnICInOptimizedCode(Isolate* isolate) {
|
||||
// TODO(ishell): Currently we use StoreOwnIC only for storing properties that
|
||||
// already exist in the boilerplate therefore we can use StoreIC.
|
||||
return Callable(isolate->builtins()->StoreICStrict(),
|
||||
return Callable(BUILTIN_CODE(isolate, StoreICStrict),
|
||||
StoreWithVectorDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -120,8 +120,8 @@ Callable CodeFactory::StoreGlobalIC(Isolate* isolate,
|
||||
LanguageMode language_mode) {
|
||||
// TODO(ishell): Use StoreGlobalIC[Strict]Trampoline when it's ready.
|
||||
return Callable(language_mode == STRICT
|
||||
? isolate->builtins()->StoreICStrictTrampoline()
|
||||
: isolate->builtins()->StoreICTrampoline(),
|
||||
? BUILTIN_CODE(isolate, StoreICStrictTrampoline)
|
||||
: BUILTIN_CODE(isolate, StoreICTrampoline),
|
||||
StoreDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -129,8 +129,8 @@ Callable CodeFactory::StoreGlobalIC(Isolate* isolate,
|
||||
Callable CodeFactory::StoreGlobalICInOptimizedCode(Isolate* isolate,
|
||||
LanguageMode language_mode) {
|
||||
// TODO(ishell): Use StoreGlobalIC[Strict] when it's ready.
|
||||
return Callable(language_mode == STRICT ? isolate->builtins()->StoreICStrict()
|
||||
: isolate->builtins()->StoreIC(),
|
||||
return Callable(language_mode == STRICT ? BUILTIN_CODE(isolate, StoreICStrict)
|
||||
: BUILTIN_CODE(isolate, StoreIC),
|
||||
StoreWithVectorDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -138,8 +138,8 @@ Callable CodeFactory::StoreGlobalICInOptimizedCode(Isolate* isolate,
|
||||
Callable CodeFactory::KeyedStoreIC(Isolate* isolate,
|
||||
LanguageMode language_mode) {
|
||||
return Callable(language_mode == STRICT
|
||||
? isolate->builtins()->KeyedStoreICStrictTrampoline()
|
||||
: isolate->builtins()->KeyedStoreICTrampoline(),
|
||||
? BUILTIN_CODE(isolate, KeyedStoreICStrictTrampoline)
|
||||
: BUILTIN_CODE(isolate, KeyedStoreICTrampoline),
|
||||
StoreDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -147,8 +147,8 @@ Callable CodeFactory::KeyedStoreIC(Isolate* isolate,
|
||||
Callable CodeFactory::KeyedStoreICInOptimizedCode(Isolate* isolate,
|
||||
LanguageMode language_mode) {
|
||||
return Callable(language_mode == STRICT
|
||||
? isolate->builtins()->KeyedStoreICStrict()
|
||||
: isolate->builtins()->KeyedStoreIC(),
|
||||
? BUILTIN_CODE(isolate, KeyedStoreICStrict)
|
||||
: BUILTIN_CODE(isolate, KeyedStoreIC),
|
||||
StoreWithVectorDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -156,8 +156,8 @@ Callable CodeFactory::KeyedStoreICInOptimizedCode(Isolate* isolate,
|
||||
Callable CodeFactory::KeyedStoreIC_Megamorphic(Isolate* isolate,
|
||||
LanguageMode language_mode) {
|
||||
return Callable(language_mode == STRICT
|
||||
? isolate->builtins()->KeyedStoreIC_Megamorphic_Strict()
|
||||
: isolate->builtins()->KeyedStoreIC_Megamorphic(),
|
||||
? BUILTIN_CODE(isolate, KeyedStoreIC_Megamorphic_Strict)
|
||||
: BUILTIN_CODE(isolate, KeyedStoreIC_Megamorphic),
|
||||
StoreWithVectorDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -260,19 +260,19 @@ Callable CodeFactory::SubString(Isolate* isolate) {
|
||||
|
||||
// static
|
||||
Callable CodeFactory::ResumeGenerator(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->ResumeGeneratorTrampoline(),
|
||||
return Callable(BUILTIN_CODE(isolate, ResumeGeneratorTrampoline),
|
||||
ResumeGeneratorDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::FrameDropperTrampoline(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->FrameDropperTrampoline(),
|
||||
return Callable(BUILTIN_CODE(isolate, FrameDropperTrampoline),
|
||||
FrameDropperTrampolineDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::HandleDebuggerStatement(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->HandleDebuggerStatement(),
|
||||
return Callable(BUILTIN_CODE(isolate, HandleDebuggerStatement),
|
||||
ContextOnlyDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -298,7 +298,7 @@ Callable CodeFactory::AllocateHeapNumber(Isolate* isolate) {
|
||||
|
||||
// static
|
||||
Callable CodeFactory::ArgumentAdaptor(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->ArgumentsAdaptorTrampoline(),
|
||||
return Callable(BUILTIN_CODE(isolate, ArgumentsAdaptorTrampoline),
|
||||
ArgumentAdaptorDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -310,13 +310,13 @@ Callable CodeFactory::Call(Isolate* isolate, ConvertReceiverMode mode) {
|
||||
|
||||
// static
|
||||
Callable CodeFactory::CallWithArrayLike(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->CallWithArrayLike(),
|
||||
return Callable(BUILTIN_CODE(isolate, CallWithArrayLike),
|
||||
CallWithArrayLikeDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::CallWithSpread(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->CallWithSpread(),
|
||||
return Callable(BUILTIN_CODE(isolate, CallWithSpread),
|
||||
CallWithSpreadDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -328,55 +328,55 @@ Callable CodeFactory::CallFunction(Isolate* isolate, ConvertReceiverMode mode) {
|
||||
|
||||
// static
|
||||
Callable CodeFactory::CallVarargs(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->CallVarargs(),
|
||||
return Callable(BUILTIN_CODE(isolate, CallVarargs),
|
||||
CallVarargsDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::CallForwardVarargs(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->CallForwardVarargs(),
|
||||
return Callable(BUILTIN_CODE(isolate, CallForwardVarargs),
|
||||
CallForwardVarargsDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::CallFunctionForwardVarargs(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->CallFunctionForwardVarargs(),
|
||||
return Callable(BUILTIN_CODE(isolate, CallFunctionForwardVarargs),
|
||||
CallForwardVarargsDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::Construct(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->Construct(),
|
||||
return Callable(BUILTIN_CODE(isolate, Construct),
|
||||
ConstructTrampolineDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::ConstructWithSpread(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->ConstructWithSpread(),
|
||||
return Callable(BUILTIN_CODE(isolate, ConstructWithSpread),
|
||||
ConstructWithSpreadDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::ConstructFunction(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->ConstructFunction(),
|
||||
return Callable(BUILTIN_CODE(isolate, ConstructFunction),
|
||||
ConstructTrampolineDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::ConstructVarargs(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->ConstructVarargs(),
|
||||
return Callable(BUILTIN_CODE(isolate, ConstructVarargs),
|
||||
ConstructVarargsDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::ConstructForwardVarargs(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->ConstructForwardVarargs(),
|
||||
return Callable(BUILTIN_CODE(isolate, ConstructForwardVarargs),
|
||||
ConstructForwardVarargsDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::ConstructFunctionForwardVarargs(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->ConstructFunctionForwardVarargs(),
|
||||
return Callable(BUILTIN_CODE(isolate, ConstructFunctionForwardVarargs),
|
||||
ConstructForwardVarargsDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -398,7 +398,7 @@ Callable CodeFactory::InterpreterPushArgsThenConstruct(
|
||||
|
||||
// static
|
||||
Callable CodeFactory::InterpreterPushArgsThenConstructArray(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->InterpreterPushArgsThenConstructArray(),
|
||||
return Callable(BUILTIN_CODE(isolate, InterpreterPushArgsThenConstructArray),
|
||||
InterpreterPushArgsThenConstructArrayDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -412,7 +412,7 @@ Callable CodeFactory::InterpreterCEntry(Isolate* isolate, int result_size) {
|
||||
|
||||
// static
|
||||
Callable CodeFactory::InterpreterOnStackReplacement(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->InterpreterOnStackReplacement(),
|
||||
return Callable(BUILTIN_CODE(isolate, InterpreterOnStackReplacement),
|
||||
ContextOnlyDescriptor(isolate));
|
||||
}
|
||||
|
||||
@ -424,23 +424,23 @@ Callable CodeFactory::ArrayConstructor(Isolate* isolate) {
|
||||
|
||||
// static
|
||||
Callable CodeFactory::ArrayPop(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->ArrayPop(), BuiltinDescriptor(isolate));
|
||||
return Callable(BUILTIN_CODE(isolate, ArrayPop), BuiltinDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::ArrayShift(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->ArrayShift(),
|
||||
return Callable(BUILTIN_CODE(isolate, ArrayShift),
|
||||
BuiltinDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::ArrayPush(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->ArrayPush(), BuiltinDescriptor(isolate));
|
||||
return Callable(BUILTIN_CODE(isolate, ArrayPush), BuiltinDescriptor(isolate));
|
||||
}
|
||||
|
||||
// static
|
||||
Callable CodeFactory::FunctionPrototypeBind(Isolate* isolate) {
|
||||
return Callable(isolate->builtins()->FunctionPrototypeBind(),
|
||||
return Callable(BUILTIN_CODE(isolate, FunctionPrototypeBind),
|
||||
BuiltinDescriptor(isolate));
|
||||
}
|
||||
|
||||
|
@ -9013,7 +9013,7 @@ Node* CodeStubAssembler::InstanceOf(Node* object, Node* callable,
|
||||
&if_otherhandler);
|
||||
{
|
||||
// Call to Function.prototype[@@hasInstance] directly.
|
||||
Callable builtin(isolate()->builtins()->FunctionPrototypeHasInstance(),
|
||||
Callable builtin(BUILTIN_CODE(isolate(), FunctionPrototypeHasInstance),
|
||||
CallTrampolineDescriptor(isolate()));
|
||||
Node* result = CallJS(builtin, context, inst_of_handler, callable, object);
|
||||
var_result.Bind(result);
|
||||
|
@ -209,7 +209,7 @@ void RecordFunctionCompilation(CodeEventListener::LogEventsAndTags tag,
|
||||
? Handle<AbstractCode>::cast(info->bytecode_array())
|
||||
: Handle<AbstractCode>::cast(info->code());
|
||||
if (abstract_code.is_identical_to(
|
||||
info->isolate()->builtins()->CompileLazy())) {
|
||||
BUILTIN_CODE(info->isolate(), CompileLazy))) {
|
||||
return;
|
||||
}
|
||||
int line_num = Script::GetLineNumber(script, shared->start_position()) + 1;
|
||||
@ -804,9 +804,9 @@ MaybeHandle<Code> GetOptimizedCode(Handle<JSFunction> function,
|
||||
// Set the optimization marker and return a code object which checks it.
|
||||
function->SetOptimizationMarker(OptimizationMarker::kInOptimizationQueue);
|
||||
if (function->IsInterpreted()) {
|
||||
return isolate->builtins()->InterpreterEntryTrampoline();
|
||||
return BUILTIN_CODE(isolate, InterpreterEntryTrampoline);
|
||||
} else {
|
||||
return isolate->builtins()->CheckOptimizationMarker();
|
||||
return BUILTIN_CODE(isolate, CheckOptimizationMarker);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -18,12 +18,12 @@ namespace compiler {
|
||||
|
||||
Node* JSGraph::AllocateInNewSpaceStubConstant() {
|
||||
return CACHED(kAllocateInNewSpaceStubConstant,
|
||||
HeapConstant(isolate()->builtins()->AllocateInNewSpace()));
|
||||
HeapConstant(BUILTIN_CODE(isolate(), AllocateInNewSpace)));
|
||||
}
|
||||
|
||||
Node* JSGraph::AllocateInOldSpaceStubConstant() {
|
||||
return CACHED(kAllocateInOldSpaceStubConstant,
|
||||
HeapConstant(isolate()->builtins()->AllocateInOldSpace()));
|
||||
HeapConstant(BUILTIN_CODE(isolate(), AllocateInOldSpace)));
|
||||
}
|
||||
|
||||
Node* JSGraph::ArrayConstructorStubConstant() {
|
||||
@ -33,7 +33,7 @@ Node* JSGraph::ArrayConstructorStubConstant() {
|
||||
|
||||
Node* JSGraph::ToNumberBuiltinConstant() {
|
||||
return CACHED(kToNumberBuiltinConstant,
|
||||
HeapConstant(isolate()->builtins()->ToNumber()));
|
||||
HeapConstant(BUILTIN_CODE(isolate(), ToNumber)));
|
||||
}
|
||||
|
||||
Node* JSGraph::CEntryStubConstant(int result_size, SaveFPRegsMode save_doubles,
|
||||
|
@ -316,7 +316,7 @@ bool IsNonConstructible(Handle<SharedFunctionInfo> shared_info) {
|
||||
DisallowHeapAllocation no_gc;
|
||||
Isolate* const isolate = shared_info->GetIsolate();
|
||||
Code* const construct_stub = shared_info->construct_stub();
|
||||
return construct_stub == *isolate->builtins()->ConstructedNonConstructable();
|
||||
return construct_stub == *BUILTIN_CODE(isolate, ConstructedNonConstructable);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
@ -215,7 +215,7 @@ void WasmGraphBuilder::StackCheck(wasm::WasmCodePosition position,
|
||||
Diamond stack_check(graph(), jsgraph()->common(), check, BranchHint::kTrue);
|
||||
stack_check.Chain(*control);
|
||||
|
||||
Handle<Code> code = jsgraph()->isolate()->builtins()->WasmStackGuard();
|
||||
Handle<Code> code = BUILTIN_CODE(jsgraph()->isolate(), WasmStackGuard);
|
||||
CallInterfaceDescriptor idesc =
|
||||
WasmRuntimeCallDescriptor(jsgraph()->isolate());
|
||||
CallDescriptor* desc = Linkage::GetStubCallDescriptor(
|
||||
@ -2271,7 +2271,7 @@ Node* WasmGraphBuilder::CallDirect(uint32_t index, Node** args, Node*** rets,
|
||||
// TODO(wasm): Always use the illegal builtin, except for testing.
|
||||
Handle<Code> code = module_->instance
|
||||
? module_->GetFunctionCode(index)
|
||||
: jsgraph()->isolate()->builtins()->Illegal();
|
||||
: BUILTIN_CODE(jsgraph()->isolate(), Illegal);
|
||||
DCHECK(!code.is_null());
|
||||
args[0] = HeapConstant(code);
|
||||
wasm::FunctionSig* sig = module_->GetFunctionSignature(index);
|
||||
|
@ -244,10 +244,9 @@ int CodeBreakIterator::code_offset() {
|
||||
void CodeBreakIterator::SetDebugBreak() {
|
||||
DebugBreakType debug_break_type = GetDebugBreakType();
|
||||
DCHECK(debug_break_type >= DEBUG_BREAK_SLOT);
|
||||
Builtins* builtins = isolate()->builtins();
|
||||
Handle<Code> target = debug_break_type == DEBUG_BREAK_SLOT_AT_RETURN
|
||||
? builtins->Return_DebugBreak()
|
||||
: builtins->Slot_DebugBreak();
|
||||
? BUILTIN_CODE(isolate(), Return_DebugBreak)
|
||||
: BUILTIN_CODE(isolate(), Slot_DebugBreak);
|
||||
DebugCodegen::PatchDebugBreakSlot(isolate(), rinfo()->pc(), target);
|
||||
}
|
||||
|
||||
|
@ -901,7 +901,7 @@ void LiveEdit::ReplaceFunctionCode(
|
||||
// Start using new bytecode everywhere.
|
||||
shared_info->set_bytecode_array(new_shared_info->bytecode_array());
|
||||
ReplaceCodeObject(old_code,
|
||||
isolate->builtins()->InterpreterEntryTrampoline());
|
||||
BUILTIN_CODE(isolate, InterpreterEntryTrampoline));
|
||||
} else {
|
||||
// Start using new FCG code everywhere.
|
||||
// Rely on self-healing for places that used to run bytecode.
|
||||
|
@ -2483,7 +2483,7 @@ Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo(
|
||||
|
||||
Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfoForLiteral(
|
||||
FunctionLiteral* literal, Handle<Script> script) {
|
||||
Handle<Code> code = isolate()->builtins()->CompileLazy();
|
||||
Handle<Code> code = BUILTIN_CODE(isolate(), CompileLazy);
|
||||
Handle<ScopeInfo> scope_info(ScopeInfo::Empty(isolate()));
|
||||
Handle<SharedFunctionInfo> result =
|
||||
NewSharedFunctionInfo(literal->name(), literal->kind(), code, scope_info);
|
||||
@ -2533,14 +2533,14 @@ Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo(
|
||||
share->set_function_data(*undefined_value(), SKIP_WRITE_BARRIER);
|
||||
Handle<Code> code;
|
||||
if (!maybe_code.ToHandle(&code)) {
|
||||
code = isolate()->builtins()->Illegal();
|
||||
code = BUILTIN_CODE(isolate(), Illegal);
|
||||
}
|
||||
share->set_code(*code);
|
||||
share->set_scope_info(ScopeInfo::Empty(isolate()));
|
||||
share->set_outer_scope_info(*the_hole_value());
|
||||
Handle<Code> construct_stub =
|
||||
is_constructor ? isolate()->builtins()->JSConstructStubGeneric()
|
||||
: isolate()->builtins()->ConstructedNonConstructable();
|
||||
: BUILTIN_CODE(isolate(), ConstructedNonConstructable);
|
||||
share->SetConstructStub(*construct_stub);
|
||||
share->set_instance_class_name(*Object_string());
|
||||
share->set_script(*undefined_value(), SKIP_WRITE_BARRIER);
|
||||
|
@ -302,7 +302,7 @@ void FullCodeGenerator::Generate() {
|
||||
Label ok;
|
||||
__ CompareRoot(sp, Heap::kStackLimitRootIndex);
|
||||
__ b(hs, &ok);
|
||||
Handle<Code> stack_check = isolate()->builtins()->StackCheck();
|
||||
Handle<Code> stack_check = BUILTIN_CODE(isolate(), StackCheck);
|
||||
masm_->MaybeCheckConstPool();
|
||||
PredictableCodeSizeScope predictable(masm_);
|
||||
predictable.ExpectSize(
|
||||
@ -383,7 +383,7 @@ void FullCodeGenerator::EmitBackEdgeBookkeeping(IterationStatement* stmt,
|
||||
Max(1, distance / kCodeSizeMultiplier));
|
||||
EmitProfilingCounterDecrement(weight);
|
||||
__ b(pl, &ok);
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
|
||||
// Record a mapping of this PC offset to the OSR id. This is used to find
|
||||
// the AST id from the unoptimized code in order to use it as a key into
|
||||
@ -412,7 +412,7 @@ void FullCodeGenerator::EmitProfilingCounterHandlingForReturnSequence(
|
||||
if (!is_tail_call) {
|
||||
__ push(r0);
|
||||
}
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
if (!is_tail_call) {
|
||||
__ pop(r0);
|
||||
}
|
||||
@ -943,7 +943,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
__ CompareRoot(r0, Heap::kUndefinedValueRootIndex);
|
||||
__ b(eq, &exit);
|
||||
__ bind(&convert);
|
||||
__ Call(isolate()->builtins()->ToObject(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToObject), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ bind(&done_convert);
|
||||
__ push(r0);
|
||||
@ -1043,7 +1043,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
// r0 contains the key. The receiver in r1 is the second argument to the
|
||||
// ForInFilter. ForInFilter returns undefined if the receiver doesn't
|
||||
// have the key or returns the name-converted key.
|
||||
__ Call(isolate()->builtins()->ForInFilter(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ForInFilter), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ CompareRoot(result_register(), Heap::kUndefinedValueRootIndex);
|
||||
__ b(eq, loop_statement.continue_label());
|
||||
@ -2074,7 +2074,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
||||
VisitForTypeofValue(expr->expression());
|
||||
}
|
||||
__ mov(r3, r0);
|
||||
__ Call(isolate()->builtins()->Typeof(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), Typeof), RelocInfo::CODE_TARGET);
|
||||
context()->Plug(r0);
|
||||
break;
|
||||
}
|
||||
@ -2133,7 +2133,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
||||
}
|
||||
|
||||
// Convert old value into a number.
|
||||
__ Call(isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
|
||||
// Save result for postfix expressions.
|
||||
@ -2326,7 +2326,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
|
||||
VisitForAccumulatorValue(expr->right());
|
||||
SetExpressionPosition(expr);
|
||||
PopOperand(r1);
|
||||
__ Call(isolate()->builtins()->InstanceOf(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InstanceOf), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ CompareRoot(r0, Heap::kTrueValueRootIndex);
|
||||
Split(eq, if_true, if_false, fall_through);
|
||||
@ -2531,15 +2531,14 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
#endif
|
||||
|
||||
if (Assembler::IsBranch(Assembler::instr_at(branch_address))) {
|
||||
DCHECK(interrupt_address ==
|
||||
isolate->builtins()->InterruptCheck()->entry());
|
||||
DCHECK(interrupt_address == BUILTIN_CODE(isolate, InterruptCheck)->entry());
|
||||
return INTERRUPT;
|
||||
}
|
||||
|
||||
DCHECK(Assembler::IsNop(Assembler::instr_at(branch_address)));
|
||||
|
||||
DCHECK(interrupt_address ==
|
||||
isolate->builtins()->OnStackReplacement()->entry());
|
||||
BUILTIN_CODE(isolate, OnStackReplacement)->entry());
|
||||
return ON_STACK_REPLACEMENT;
|
||||
}
|
||||
|
||||
|
@ -306,7 +306,7 @@ void FullCodeGenerator::Generate() {
|
||||
__ B(hs, &ok);
|
||||
PredictableCodeSizeScope predictable(masm_,
|
||||
Assembler::kCallSizeWithRelocation);
|
||||
__ Call(isolate()->builtins()->StackCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), StackCheck), RelocInfo::CODE_TARGET);
|
||||
__ Bind(&ok);
|
||||
}
|
||||
|
||||
@ -368,7 +368,7 @@ void FullCodeGenerator::EmitBackEdgeBookkeeping(IterationStatement* stmt,
|
||||
Max(1, distance / kCodeSizeMultiplier));
|
||||
EmitProfilingCounterDecrement(weight);
|
||||
__ B(pl, &ok);
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
|
||||
// Record a mapping of this PC offset to the OSR id. This is used to find
|
||||
// the AST id from the unoptimized code in order to use it as a key into
|
||||
@ -397,7 +397,7 @@ void FullCodeGenerator::EmitProfilingCounterHandlingForReturnSequence(
|
||||
if (!is_tail_call) {
|
||||
__ Push(x0);
|
||||
}
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
if (!is_tail_call) {
|
||||
__ Pop(x0);
|
||||
}
|
||||
@ -936,7 +936,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
__ JumpIfRoot(x0, Heap::kNullValueRootIndex, &exit);
|
||||
__ JumpIfRoot(x0, Heap::kUndefinedValueRootIndex, &exit);
|
||||
__ Bind(&convert);
|
||||
__ Call(isolate()->builtins()->ToObject(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToObject), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ Bind(&done_convert);
|
||||
__ Push(x0);
|
||||
@ -1031,7 +1031,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
// x0 contains the key. The receiver in x1 is the second argument to the
|
||||
// ForInFilter. ForInFilter returns undefined if the receiver doesn't
|
||||
// have the key or returns the name-converted key.
|
||||
__ Call(isolate()->builtins()->ForInFilter(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ForInFilter), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ CompareRoot(result_register(), Heap::kUndefinedValueRootIndex);
|
||||
__ B(eq, loop_statement.continue_label());
|
||||
@ -2038,7 +2038,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
||||
VisitForTypeofValue(expr->expression());
|
||||
}
|
||||
__ Mov(x3, x0);
|
||||
__ Call(isolate()->builtins()->Typeof(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), Typeof), RelocInfo::CODE_TARGET);
|
||||
context()->Plug(x0);
|
||||
break;
|
||||
}
|
||||
@ -2092,7 +2092,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
||||
}
|
||||
|
||||
// Convert old value into a number.
|
||||
__ Call(isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
|
||||
// Save result for postfix expressions.
|
||||
@ -2293,7 +2293,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
|
||||
VisitForAccumulatorValue(expr->right());
|
||||
SetExpressionPosition(expr);
|
||||
PopOperand(x1);
|
||||
__ Call(isolate()->builtins()->InstanceOf(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InstanceOf), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ CompareRoot(x0, Heap::kTrueValueRootIndex);
|
||||
Split(eq, if_true, if_false, fall_through);
|
||||
@ -2489,13 +2489,13 @@ void BackEdgeTable::PatchAt(Code* unoptimized_code,
|
||||
reinterpret_cast<Address>(load) + load->ImmPCOffset();
|
||||
DCHECK((Memory::uint64_at(interrupt_address_pointer) ==
|
||||
reinterpret_cast<uint64_t>(
|
||||
isolate->builtins()->OnStackReplacement()->entry())) ||
|
||||
BUILTIN_CODE(isolate, OnStackReplacement)->entry())) ||
|
||||
(Memory::uint64_at(interrupt_address_pointer) ==
|
||||
reinterpret_cast<uint64_t>(
|
||||
isolate->builtins()->InterruptCheck()->entry())) ||
|
||||
BUILTIN_CODE(isolate, InterruptCheck)->entry())) ||
|
||||
(Memory::uint64_at(interrupt_address_pointer) ==
|
||||
reinterpret_cast<uint64_t>(
|
||||
isolate->builtins()->OnStackReplacement()->entry())));
|
||||
BUILTIN_CODE(isolate, OnStackReplacement)->entry())));
|
||||
Memory::uint64_at(interrupt_address_pointer) =
|
||||
reinterpret_cast<uint64_t>(replacement_code->entry());
|
||||
|
||||
@ -2518,7 +2518,7 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
uint64_t entry = Memory::uint64_at(reinterpret_cast<Address>(load) +
|
||||
load->ImmPCOffset());
|
||||
if (entry == reinterpret_cast<uint64_t>(
|
||||
isolate->builtins()->OnStackReplacement()->entry())) {
|
||||
BUILTIN_CODE(isolate, OnStackReplacement)->entry())) {
|
||||
return ON_STACK_REPLACEMENT;
|
||||
} else {
|
||||
UNREACHABLE();
|
||||
|
@ -184,7 +184,7 @@ void FullCodeGenerator::CallLoadIC(FeedbackSlot slot, Handle<Object> name) {
|
||||
|
||||
EmitLoadSlot(LoadDescriptor::SlotRegister(), slot);
|
||||
|
||||
Handle<Code> code = isolate()->builtins()->LoadICTrampoline();
|
||||
Handle<Code> code = BUILTIN_CODE(isolate(), LoadICTrampoline);
|
||||
__ Call(code, RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
}
|
||||
@ -984,7 +984,7 @@ void FullCodeGenerator::EmitKeyedPropertyLoad(Property* prop) {
|
||||
|
||||
EmitLoadSlot(LoadDescriptor::SlotRegister(), prop->PropertyFeedbackSlot());
|
||||
|
||||
Handle<Code> code = isolate()->builtins()->KeyedLoadICTrampoline();
|
||||
Handle<Code> code = BUILTIN_CODE(isolate(), KeyedLoadICTrampoline);
|
||||
__ Call(code, RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
}
|
||||
|
@ -251,14 +251,14 @@ void FullCodeGenerator::Generate() {
|
||||
__ mov(edi, Operand(ebp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
}
|
||||
if (is_strict(language_mode()) || !has_simple_parameters()) {
|
||||
__ call(isolate()->builtins()->FastNewStrictArguments(),
|
||||
__ call(BUILTIN_CODE(isolate(), FastNewStrictArguments),
|
||||
RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
} else if (literal()->has_duplicate_parameters()) {
|
||||
__ Push(edi);
|
||||
__ CallRuntime(Runtime::kNewSloppyArguments_Generic);
|
||||
} else {
|
||||
__ call(isolate()->builtins()->FastNewSloppyArguments(),
|
||||
__ call(BUILTIN_CODE(isolate(), FastNewSloppyArguments),
|
||||
RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
}
|
||||
@ -288,7 +288,7 @@ void FullCodeGenerator::Generate() {
|
||||
ExternalReference::address_of_stack_limit(isolate());
|
||||
__ cmp(esp, Operand::StaticVariable(stack_limit));
|
||||
__ j(above_equal, &ok, Label::kNear);
|
||||
__ call(isolate()->builtins()->StackCheck(), RelocInfo::CODE_TARGET);
|
||||
__ call(BUILTIN_CODE(isolate(), StackCheck), RelocInfo::CODE_TARGET);
|
||||
__ bind(&ok);
|
||||
}
|
||||
|
||||
@ -339,7 +339,7 @@ void FullCodeGenerator::EmitBackEdgeBookkeeping(IterationStatement* stmt,
|
||||
Max(1, distance / kCodeSizeMultiplier));
|
||||
EmitProfilingCounterDecrement(weight);
|
||||
__ j(positive, &ok, Label::kNear);
|
||||
__ call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
|
||||
// Record a mapping of this PC offset to the OSR id. This is used to find
|
||||
// the AST id from the unoptimized code in order to use it as a key into
|
||||
@ -368,7 +368,7 @@ void FullCodeGenerator::EmitProfilingCounterHandlingForReturnSequence(
|
||||
if (!is_tail_call) {
|
||||
__ push(eax);
|
||||
}
|
||||
__ call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
if (!is_tail_call) {
|
||||
__ pop(eax);
|
||||
}
|
||||
@ -871,7 +871,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
__ cmp(eax, isolate()->factory()->null_value());
|
||||
__ j(equal, &exit);
|
||||
__ bind(&convert);
|
||||
__ Call(isolate()->builtins()->ToObject(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToObject), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ bind(&done_convert);
|
||||
__ push(eax);
|
||||
@ -960,7 +960,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
// eax contains the key. The receiver in ebx is the second argument to the
|
||||
// ForInFilter. ForInFilter returns undefined if the receiver doesn't
|
||||
// have the key or returns the name-converted key.
|
||||
__ Call(isolate()->builtins()->ForInFilter(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ForInFilter), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ JumpIfRoot(result_register(), Heap::kUndefinedValueRootIndex,
|
||||
loop_statement.continue_label());
|
||||
@ -1970,7 +1970,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
||||
VisitForTypeofValue(expr->expression());
|
||||
}
|
||||
__ mov(ebx, eax);
|
||||
__ Call(isolate()->builtins()->Typeof(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), Typeof), RelocInfo::CODE_TARGET);
|
||||
context()->Plug(eax);
|
||||
break;
|
||||
}
|
||||
@ -2026,7 +2026,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
||||
}
|
||||
|
||||
// Convert old value into a number.
|
||||
__ Call(isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
|
||||
// Save result for postfix expressions.
|
||||
@ -2220,7 +2220,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
|
||||
VisitForAccumulatorValue(expr->right());
|
||||
SetExpressionPosition(expr);
|
||||
PopOperand(edx);
|
||||
__ Call(isolate()->builtins()->InstanceOf(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InstanceOf), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ cmp(eax, isolate()->factory()->true_value());
|
||||
Split(equal, if_true, if_false, fall_through);
|
||||
@ -2393,9 +2393,9 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
|
||||
if (*jns_instr_address == kJnsInstruction) {
|
||||
DCHECK_EQ(kJnsOffset, *(call_target_address - 2));
|
||||
DCHECK_EQ(isolate->builtins()->InterruptCheck()->entry(),
|
||||
Assembler::target_address_at(call_target_address,
|
||||
unoptimized_code));
|
||||
DCHECK_EQ(
|
||||
BUILTIN_CODE(isolate, InterruptCheck)->entry(),
|
||||
Assembler::target_address_at(call_target_address, unoptimized_code));
|
||||
return INTERRUPT;
|
||||
}
|
||||
|
||||
@ -2403,7 +2403,7 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
DCHECK_EQ(kNopByteTwo, *(call_target_address - 2));
|
||||
|
||||
DCHECK_EQ(
|
||||
isolate->builtins()->OnStackReplacement()->entry(),
|
||||
BUILTIN_CODE(isolate, OnStackReplacement)->entry(),
|
||||
Assembler::target_address_at(call_target_address, unoptimized_code));
|
||||
return ON_STACK_REPLACEMENT;
|
||||
}
|
||||
|
@ -306,7 +306,7 @@ void FullCodeGenerator::Generate() {
|
||||
Label ok;
|
||||
__ LoadRoot(at, Heap::kStackLimitRootIndex);
|
||||
__ Branch(&ok, hs, sp, Operand(at));
|
||||
Handle<Code> stack_check = isolate()->builtins()->StackCheck();
|
||||
Handle<Code> stack_check = BUILTIN_CODE(isolate(), StackCheck);
|
||||
PredictableCodeSizeScope predictable(
|
||||
masm_, masm_->CallSize(stack_check, RelocInfo::CODE_TARGET));
|
||||
__ Call(stack_check, RelocInfo::CODE_TARGET);
|
||||
@ -373,7 +373,7 @@ void FullCodeGenerator::EmitBackEdgeBookkeeping(IterationStatement* stmt,
|
||||
__ slt(at, a3, zero_reg);
|
||||
__ beq(at, zero_reg, &ok);
|
||||
// Call will emit a li t9 first, so it is safe to use the delay slot.
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
// Record a mapping of this PC offset to the OSR id. This is used to find
|
||||
// the AST id from the unoptimized code in order to use it as a key into
|
||||
// the deoptimization input data found in the optimized code.
|
||||
@ -400,7 +400,7 @@ void FullCodeGenerator::EmitProfilingCounterHandlingForReturnSequence(
|
||||
if (!is_tail_call) {
|
||||
__ push(v0);
|
||||
}
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
if (!is_tail_call) {
|
||||
__ pop(v0);
|
||||
}
|
||||
@ -933,7 +933,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
__ LoadRoot(at, Heap::kUndefinedValueRootIndex); // In delay slot.
|
||||
__ Branch(&exit, eq, a0, Operand(at));
|
||||
__ bind(&convert);
|
||||
__ Call(isolate()->builtins()->ToObject(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToObject), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ mov(a0, v0);
|
||||
__ bind(&done_convert);
|
||||
@ -1033,7 +1033,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
// a0 contains the key. The receiver in a1 is the second argument to the
|
||||
// ForInFilter. ForInFilter returns undefined if the receiver doesn't
|
||||
// have the key or returns the name-converted key.
|
||||
__ Call(isolate()->builtins()->ForInFilter(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ForInFilter), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ LoadRoot(at, Heap::kUndefinedValueRootIndex);
|
||||
__ Branch(loop_statement.continue_label(), eq, result_register(),
|
||||
@ -2077,7 +2077,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
||||
VisitForTypeofValue(expr->expression());
|
||||
}
|
||||
__ mov(a3, v0);
|
||||
__ Call(isolate()->builtins()->Typeof(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), Typeof), RelocInfo::CODE_TARGET);
|
||||
context()->Plug(v0);
|
||||
break;
|
||||
}
|
||||
@ -2136,7 +2136,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
||||
__ mov(a0, v0);
|
||||
|
||||
// Convert old value into a number.
|
||||
__ Call(isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
|
||||
// Save result for postfix expressions.
|
||||
@ -2333,7 +2333,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
|
||||
SetExpressionPosition(expr);
|
||||
__ mov(a0, result_register());
|
||||
PopOperand(a1);
|
||||
__ Call(isolate()->builtins()->InstanceOf(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InstanceOf), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ LoadRoot(at, Heap::kTrueValueRootIndex);
|
||||
Split(eq, v0, Operand(at), if_true, if_false, fall_through);
|
||||
@ -2502,9 +2502,9 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
DCHECK(Assembler::IsBeq(Assembler::instr_at(branch_address + kInstrSize)));
|
||||
if (!Assembler::IsAddImmediate(Assembler::instr_at(branch_address))) {
|
||||
DCHECK(reinterpret_cast<uint32_t>(
|
||||
Assembler::target_address_at(pc_immediate_load_address)) ==
|
||||
Assembler::target_address_at(pc_immediate_load_address)) ==
|
||||
reinterpret_cast<uint32_t>(
|
||||
isolate->builtins()->InterruptCheck()->entry()));
|
||||
BUILTIN_CODE(isolate, InterruptCheck)->entry()));
|
||||
return INTERRUPT;
|
||||
}
|
||||
|
||||
@ -2513,7 +2513,7 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
DCHECK(reinterpret_cast<uint32_t>(
|
||||
Assembler::target_address_at(pc_immediate_load_address)) ==
|
||||
reinterpret_cast<uint32_t>(
|
||||
isolate->builtins()->OnStackReplacement()->entry()));
|
||||
BUILTIN_CODE(isolate, OnStackReplacement)->entry()));
|
||||
return ON_STACK_REPLACEMENT;
|
||||
}
|
||||
|
||||
|
@ -304,7 +304,7 @@ void FullCodeGenerator::Generate() {
|
||||
Label ok;
|
||||
__ LoadRoot(at, Heap::kStackLimitRootIndex);
|
||||
__ Branch(&ok, hs, sp, Operand(at));
|
||||
Handle<Code> stack_check = isolate()->builtins()->StackCheck();
|
||||
Handle<Code> stack_check = BUILTIN_CODE(isolate(), StackCheck);
|
||||
PredictableCodeSizeScope predictable(
|
||||
masm_, masm_->CallSize(stack_check, RelocInfo::CODE_TARGET));
|
||||
__ Call(stack_check, RelocInfo::CODE_TARGET);
|
||||
@ -373,7 +373,7 @@ void FullCodeGenerator::EmitBackEdgeBookkeeping(IterationStatement* stmt,
|
||||
__ slt(at, a3, zero_reg);
|
||||
__ beq(at, zero_reg, &ok);
|
||||
// Call will emit a li t9 first, so it is safe to use the delay slot.
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
// Record a mapping of this PC offset to the OSR id. This is used to find
|
||||
// the AST id from the unoptimized code in order to use it as a key into
|
||||
// the deoptimization input data found in the optimized code.
|
||||
@ -400,7 +400,7 @@ void FullCodeGenerator::EmitProfilingCounterHandlingForReturnSequence(
|
||||
if (!is_tail_call) {
|
||||
__ push(v0);
|
||||
}
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
if (!is_tail_call) {
|
||||
__ pop(v0);
|
||||
}
|
||||
@ -934,7 +934,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
__ LoadRoot(at, Heap::kUndefinedValueRootIndex); // In delay slot.
|
||||
__ Branch(&exit, eq, a0, Operand(at));
|
||||
__ bind(&convert);
|
||||
__ Call(isolate()->builtins()->ToObject(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToObject), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ mov(a0, v0);
|
||||
__ bind(&done_convert);
|
||||
@ -1035,7 +1035,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
// a0 contains the key. The receiver in a1 is the second argument to the
|
||||
// ForInFilter. ForInFilter returns undefined if the receiver doesn't
|
||||
// have the key or returns the name-converted key.
|
||||
__ Call(isolate()->builtins()->ForInFilter(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ForInFilter), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ LoadRoot(at, Heap::kUndefinedValueRootIndex);
|
||||
__ Branch(loop_statement.continue_label(), eq, result_register(),
|
||||
@ -2079,7 +2079,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
||||
VisitForTypeofValue(expr->expression());
|
||||
}
|
||||
__ mov(a3, v0);
|
||||
__ Call(isolate()->builtins()->Typeof(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), Typeof), RelocInfo::CODE_TARGET);
|
||||
context()->Plug(v0);
|
||||
break;
|
||||
}
|
||||
@ -2138,7 +2138,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
||||
__ mov(a0, v0);
|
||||
|
||||
// Convert old value into a number.
|
||||
__ Call(isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
|
||||
// Save result for postfix expressions.
|
||||
@ -2335,7 +2335,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
|
||||
SetExpressionPosition(expr);
|
||||
__ mov(a0, result_register());
|
||||
PopOperand(a1);
|
||||
__ Call(isolate()->builtins()->InstanceOf(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InstanceOf), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ LoadRoot(a4, Heap::kTrueValueRootIndex);
|
||||
Split(eq, v0, Operand(a4), if_true, if_false, fall_through);
|
||||
@ -2512,9 +2512,9 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
DCHECK(Assembler::IsBeq(Assembler::instr_at(branch_address + kInstrSize)));
|
||||
if (!Assembler::IsAddImmediate(Assembler::instr_at(branch_address))) {
|
||||
DCHECK(reinterpret_cast<uint64_t>(
|
||||
Assembler::target_address_at(pc_immediate_load_address)) ==
|
||||
Assembler::target_address_at(pc_immediate_load_address)) ==
|
||||
reinterpret_cast<uint64_t>(
|
||||
isolate->builtins()->InterruptCheck()->entry()));
|
||||
BUILTIN_CODE(isolate, InterruptCheck)->entry()));
|
||||
return INTERRUPT;
|
||||
}
|
||||
|
||||
@ -2523,7 +2523,7 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
DCHECK(reinterpret_cast<uint64_t>(
|
||||
Assembler::target_address_at(pc_immediate_load_address)) ==
|
||||
reinterpret_cast<uint64_t>(
|
||||
isolate->builtins()->OnStackReplacement()->entry()));
|
||||
BUILTIN_CODE(isolate, OnStackReplacement)->entry()));
|
||||
return ON_STACK_REPLACEMENT;
|
||||
}
|
||||
|
||||
|
@ -303,7 +303,7 @@ void FullCodeGenerator::Generate() {
|
||||
__ LoadRoot(ip, Heap::kStackLimitRootIndex);
|
||||
__ cmpl(sp, ip);
|
||||
__ bc_short(ge, &ok);
|
||||
__ Call(isolate()->builtins()->StackCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), StackCheck), RelocInfo::CODE_TARGET);
|
||||
__ bind(&ok);
|
||||
}
|
||||
|
||||
@ -365,7 +365,7 @@ void FullCodeGenerator::EmitBackEdgeBookkeeping(IterationStatement* stmt,
|
||||
// BackEdgeTable::PatchAt manipulates this sequence.
|
||||
__ cmpi(r6, Operand::Zero());
|
||||
__ bc_short(ge, &ok);
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
|
||||
// Record a mapping of this PC offset to the OSR id. This is used to find
|
||||
// the AST id from the unoptimized code in order to use it as a key into
|
||||
@ -395,7 +395,7 @@ void FullCodeGenerator::EmitProfilingCounterHandlingForReturnSequence(
|
||||
if (!is_tail_call) {
|
||||
__ push(r3);
|
||||
}
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
if (!is_tail_call) {
|
||||
__ pop(r3);
|
||||
}
|
||||
@ -901,7 +901,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
__ CompareRoot(r3, Heap::kUndefinedValueRootIndex);
|
||||
__ beq(&exit);
|
||||
__ bind(&convert);
|
||||
__ Call(isolate()->builtins()->ToObject(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToObject), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ bind(&done_convert);
|
||||
__ push(r3);
|
||||
@ -2036,7 +2036,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
||||
VisitForTypeofValue(expr->expression());
|
||||
}
|
||||
__ mr(r6, r3);
|
||||
__ Call(isolate()->builtins()->Typeof(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), Typeof), RelocInfo::CODE_TARGET);
|
||||
context()->Plug(r3);
|
||||
break;
|
||||
}
|
||||
@ -2093,7 +2093,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
||||
}
|
||||
|
||||
// Convert old value into a number.
|
||||
__ Call(isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
|
||||
// Save result for postfix expressions.
|
||||
@ -2290,7 +2290,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
|
||||
VisitForAccumulatorValue(expr->right());
|
||||
SetExpressionPosition(expr);
|
||||
PopOperand(r4);
|
||||
__ Call(isolate()->builtins()->InstanceOf(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InstanceOf), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ CompareRoot(r3, Heap::kTrueValueRootIndex);
|
||||
Split(eq, if_true, if_false, fall_through);
|
||||
@ -2458,14 +2458,14 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
#endif
|
||||
|
||||
if (Assembler::IsCmpImmediate(Assembler::instr_at(cmp_address))) {
|
||||
DCHECK(interrupt_address == isolate->builtins()->InterruptCheck()->entry());
|
||||
DCHECK(interrupt_address == BUILTIN_CODE(isolate, InterruptCheck)->entry());
|
||||
return INTERRUPT;
|
||||
}
|
||||
|
||||
DCHECK(Assembler::IsCrSet(Assembler::instr_at(cmp_address)));
|
||||
|
||||
DCHECK(interrupt_address ==
|
||||
isolate->builtins()->OnStackReplacement()->entry());
|
||||
BUILTIN_CODE(isolate, OnStackReplacement)->entry());
|
||||
return ON_STACK_REPLACEMENT;
|
||||
}
|
||||
} // namespace internal
|
||||
|
@ -307,7 +307,7 @@ void FullCodeGenerator::Generate() {
|
||||
__ LoadRoot(ip, Heap::kStackLimitRootIndex);
|
||||
__ CmpLogicalP(sp, ip);
|
||||
__ bge(&ok, Label::kNear);
|
||||
__ Call(isolate()->builtins()->StackCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), StackCheck), RelocInfo::CODE_TARGET);
|
||||
__ bind(&ok);
|
||||
}
|
||||
|
||||
@ -364,7 +364,7 @@ void FullCodeGenerator::EmitBackEdgeBookkeeping(IterationStatement* stmt,
|
||||
{
|
||||
// BackEdgeTable::PatchAt manipulates this sequence.
|
||||
__ bge(&ok, Label::kNear);
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
|
||||
// Record a mapping of this PC offset to the OSR id. This is used to find
|
||||
// the AST id from the unoptimized code in order to use it as a key into
|
||||
@ -394,7 +394,7 @@ void FullCodeGenerator::EmitProfilingCounterHandlingForReturnSequence(
|
||||
if (!is_tail_call) {
|
||||
__ push(r2);
|
||||
}
|
||||
__ Call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
if (!is_tail_call) {
|
||||
__ pop(r2);
|
||||
}
|
||||
@ -871,7 +871,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
__ CompareRoot(r2, Heap::kUndefinedValueRootIndex);
|
||||
__ beq(&exit);
|
||||
__ bind(&convert);
|
||||
__ Call(isolate()->builtins()->ToObject(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToObject), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ bind(&done_convert);
|
||||
__ push(r2);
|
||||
@ -1985,7 +1985,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
||||
VisitForTypeofValue(expr->expression());
|
||||
}
|
||||
__ LoadRR(r5, r2);
|
||||
__ Call(isolate()->builtins()->Typeof(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), Typeof), RelocInfo::CODE_TARGET);
|
||||
context()->Plug(r2);
|
||||
break;
|
||||
}
|
||||
@ -2041,7 +2041,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
||||
}
|
||||
|
||||
// Convert old value into a number.
|
||||
__ Call(isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
|
||||
// Save result for postfix expressions.
|
||||
@ -2233,7 +2233,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
|
||||
VisitForAccumulatorValue(expr->right());
|
||||
SetExpressionPosition(expr);
|
||||
PopOperand(r3);
|
||||
__ Call(isolate()->builtins()->InstanceOf(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InstanceOf), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ CompareRoot(r2, Heap::kTrueValueRootIndex);
|
||||
Split(eq, if_true, if_false, fall_through);
|
||||
@ -2398,7 +2398,7 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
FourByteInstr br_instr = Instruction::InstructionBits(
|
||||
reinterpret_cast<const byte*>(branch_address));
|
||||
if (kInterruptBranchInstruction == br_instr) {
|
||||
DCHECK(interrupt_address == isolate->builtins()->InterruptCheck()->entry());
|
||||
DCHECK(interrupt_address == BUILTIN_CODE(isolate, InterruptCheck)->entry());
|
||||
return INTERRUPT;
|
||||
}
|
||||
|
||||
@ -2408,7 +2408,7 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
DCHECK(kOSRBranchInstruction == br_instr);
|
||||
|
||||
DCHECK(interrupt_address ==
|
||||
isolate->builtins()->OnStackReplacement()->entry());
|
||||
BUILTIN_CODE(isolate, OnStackReplacement)->entry());
|
||||
return ON_STACK_REPLACEMENT;
|
||||
}
|
||||
} // namespace internal
|
||||
|
@ -251,14 +251,14 @@ void FullCodeGenerator::Generate() {
|
||||
__ movp(rdi, Operand(rbp, JavaScriptFrameConstants::kFunctionOffset));
|
||||
}
|
||||
if (is_strict(language_mode()) || !has_simple_parameters()) {
|
||||
__ call(isolate()->builtins()->FastNewStrictArguments(),
|
||||
__ call(BUILTIN_CODE(isolate(), FastNewStrictArguments),
|
||||
RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
} else if (literal()->has_duplicate_parameters()) {
|
||||
__ Push(rdi);
|
||||
__ CallRuntime(Runtime::kNewSloppyArguments_Generic);
|
||||
} else {
|
||||
__ call(isolate()->builtins()->FastNewSloppyArguments(),
|
||||
__ call(BUILTIN_CODE(isolate(), FastNewSloppyArguments),
|
||||
RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
}
|
||||
@ -287,7 +287,7 @@ void FullCodeGenerator::Generate() {
|
||||
Label ok;
|
||||
__ CompareRoot(rsp, Heap::kStackLimitRootIndex);
|
||||
__ j(above_equal, &ok, Label::kNear);
|
||||
__ call(isolate()->builtins()->StackCheck(), RelocInfo::CODE_TARGET);
|
||||
__ call(BUILTIN_CODE(isolate(), StackCheck), RelocInfo::CODE_TARGET);
|
||||
__ bind(&ok);
|
||||
}
|
||||
|
||||
@ -345,7 +345,7 @@ void FullCodeGenerator::EmitBackEdgeBookkeeping(IterationStatement* stmt,
|
||||
{
|
||||
PredictableCodeSizeScope predictible_code_size_scope(masm_, kJnsOffset);
|
||||
DontEmitDebugCodeScope dont_emit_debug_code_scope(masm_);
|
||||
__ call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
|
||||
// Record a mapping of this PC offset to the OSR id. This is used to find
|
||||
// the AST id from the unoptimized code in order to use it as a key into
|
||||
@ -374,7 +374,7 @@ void FullCodeGenerator::EmitProfilingCounterHandlingForReturnSequence(
|
||||
if (!is_tail_call) {
|
||||
__ Push(rax);
|
||||
}
|
||||
__ call(isolate()->builtins()->InterruptCheck(), RelocInfo::CODE_TARGET);
|
||||
__ call(BUILTIN_CODE(isolate(), InterruptCheck), RelocInfo::CODE_TARGET);
|
||||
if (!is_tail_call) {
|
||||
__ Pop(rax);
|
||||
}
|
||||
@ -886,7 +886,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
__ CompareRoot(rax, Heap::kUndefinedValueRootIndex);
|
||||
__ j(equal, &exit);
|
||||
__ bind(&convert);
|
||||
__ Call(isolate()->builtins()->ToObject(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToObject), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ bind(&done_convert);
|
||||
__ Push(rax);
|
||||
@ -986,7 +986,7 @@ void FullCodeGenerator::VisitForInStatement(ForInStatement* stmt) {
|
||||
// rax contains the key. The receiver in rbx is the second argument to
|
||||
// ForInFilter. ForInFilter returns undefined if the receiver doesn't
|
||||
// have the key or returns the name-converted key.
|
||||
__ Call(isolate()->builtins()->ForInFilter(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ForInFilter), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ JumpIfRoot(result_register(), Heap::kUndefinedValueRootIndex,
|
||||
loop_statement.continue_label());
|
||||
@ -1994,7 +1994,7 @@ void FullCodeGenerator::VisitUnaryOperation(UnaryOperation* expr) {
|
||||
VisitForTypeofValue(expr->expression());
|
||||
}
|
||||
__ movp(rbx, rax);
|
||||
__ Call(isolate()->builtins()->Typeof(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), Typeof), RelocInfo::CODE_TARGET);
|
||||
context()->Plug(rax);
|
||||
break;
|
||||
}
|
||||
@ -2050,7 +2050,7 @@ void FullCodeGenerator::VisitCountOperation(CountOperation* expr) {
|
||||
}
|
||||
|
||||
// Convert old value into a number.
|
||||
__ Call(isolate()->builtins()->ToNumber(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), ToNumber), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
|
||||
// Save result for postfix expressions.
|
||||
@ -2244,7 +2244,7 @@ void FullCodeGenerator::VisitCompareOperation(CompareOperation* expr) {
|
||||
VisitForAccumulatorValue(expr->right());
|
||||
SetExpressionPosition(expr);
|
||||
PopOperand(rdx);
|
||||
__ Call(isolate()->builtins()->InstanceOf(), RelocInfo::CODE_TARGET);
|
||||
__ Call(BUILTIN_CODE(isolate(), InstanceOf), RelocInfo::CODE_TARGET);
|
||||
RestoreContext();
|
||||
__ CompareRoot(rax, Heap::kTrueValueRootIndex);
|
||||
Split(equal, if_true, if_false, fall_through);
|
||||
@ -2415,9 +2415,9 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
|
||||
if (*jns_instr_address == kJnsInstruction) {
|
||||
DCHECK_EQ(kJnsOffset, *(call_target_address - 2));
|
||||
DCHECK_EQ(isolate->builtins()->InterruptCheck()->entry(),
|
||||
Assembler::target_address_at(call_target_address,
|
||||
unoptimized_code));
|
||||
DCHECK_EQ(
|
||||
BUILTIN_CODE(isolate, InterruptCheck)->entry(),
|
||||
Assembler::target_address_at(call_target_address, unoptimized_code));
|
||||
return INTERRUPT;
|
||||
}
|
||||
|
||||
@ -2425,7 +2425,7 @@ BackEdgeTable::BackEdgeState BackEdgeTable::GetBackEdgeState(
|
||||
DCHECK_EQ(kNopByteTwo, *(call_target_address - 2));
|
||||
|
||||
DCHECK_EQ(
|
||||
isolate->builtins()->OnStackReplacement()->entry(),
|
||||
BUILTIN_CODE(isolate, OnStackReplacement)->entry(),
|
||||
Assembler::target_address_at(call_target_address, unoptimized_code));
|
||||
return ON_STACK_REPLACEMENT;
|
||||
}
|
||||
|
@ -732,8 +732,8 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
__ Push(esi);
|
||||
__ Call(strict() ? isolate()->builtins()->StrictEqual()
|
||||
: isolate()->builtins()->Equal(),
|
||||
__ Call(strict() ? BUILTIN_CODE(isolate(), StrictEqual)
|
||||
: BUILTIN_CODE(isolate(), Equal),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(esi);
|
||||
}
|
||||
@ -913,7 +913,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
|
||||
__ bind(&non_function);
|
||||
__ mov(edx, edi);
|
||||
__ Jump(isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
bool CEntryStub::NeedsImmovableCode() {
|
||||
|
@ -486,7 +486,7 @@ void MacroAssembler::MaybeDropFrames() {
|
||||
ExternalReference::debug_restart_fp_address(isolate());
|
||||
mov(ebx, Operand::StaticVariable(restart_fp));
|
||||
test(ebx, ebx);
|
||||
j(not_zero, isolate()->builtins()->FrameDropperTrampoline(),
|
||||
j(not_zero, BUILTIN_CODE(isolate(), FrameDropperTrampoline),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -754,7 +754,7 @@ void TurboAssembler::Prologue(bool code_pre_aging) {
|
||||
kNoCodeAgeSequenceLength);
|
||||
if (code_pre_aging) {
|
||||
// Pre-age the code.
|
||||
call(isolate()->builtins()->MarkCodeAsExecutedOnce(),
|
||||
call(BUILTIN_CODE(isolate(), MarkCodeAsExecutedOnce),
|
||||
RelocInfo::CODE_AGE_SEQUENCE);
|
||||
Nop(kNoCodeAgeSequenceLength - Assembler::kCallInstructionLength);
|
||||
} else {
|
||||
@ -1523,7 +1523,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
|
||||
}
|
||||
|
||||
if (!definitely_matches) {
|
||||
Handle<Code> adaptor = isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
||||
Handle<Code> adaptor = BUILTIN_CODE(isolate(), ArgumentsAdaptorTrampoline);
|
||||
if (flag == CALL_FUNCTION) {
|
||||
call(adaptor, RelocInfo::CODE_TARGET);
|
||||
if (!*definitely_mismatches) {
|
||||
@ -2133,9 +2133,9 @@ void TurboAssembler::Abort(BailoutReason reason) {
|
||||
// We don't actually want to generate a pile of code for this, so just
|
||||
// claim there is a stack frame, without generating one.
|
||||
FrameScope scope(this, StackFrame::NONE);
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
// will not return here
|
||||
int3();
|
||||
|
@ -1098,7 +1098,7 @@ Handle<Object> LoadIC::GetMapIndependentHandler(LookupIterator* lookup) {
|
||||
->has_non_instance_prototype()) {
|
||||
Handle<Code> stub;
|
||||
TRACE_HANDLER_STATS(isolate(), LoadIC_FunctionPrototypeStub);
|
||||
return isolate()->builtins()->LoadIC_FunctionPrototype();
|
||||
return BUILTIN_CODE(isolate(), LoadIC_FunctionPrototype);
|
||||
}
|
||||
|
||||
Handle<Map> map = receiver_map();
|
||||
@ -1395,12 +1395,12 @@ Handle<Object> KeyedLoadIC::LoadElementHandler(Handle<Map> receiver_map) {
|
||||
}
|
||||
if (receiver_map->IsStringMap()) {
|
||||
TRACE_HANDLER_STATS(isolate(), KeyedLoadIC_LoadIndexedStringStub);
|
||||
return isolate()->builtins()->KeyedLoadIC_IndexedString();
|
||||
return BUILTIN_CODE(isolate(), KeyedLoadIC_IndexedString);
|
||||
}
|
||||
InstanceType instance_type = receiver_map->instance_type();
|
||||
if (instance_type < FIRST_JS_RECEIVER_TYPE) {
|
||||
TRACE_HANDLER_STATS(isolate(), KeyedLoadIC_SlowStub);
|
||||
return isolate()->builtins()->KeyedLoadIC_Slow();
|
||||
return BUILTIN_CODE(isolate(), KeyedLoadIC_Slow);
|
||||
}
|
||||
|
||||
ElementsKind elements_kind = receiver_map->elements_kind();
|
||||
@ -2126,7 +2126,7 @@ void KeyedStoreIC::StoreElementPolymorphicHandlers(
|
||||
// TODO(mvstanton): Consider embedding store_mode in the state of the slow
|
||||
// keyed store ic for uniformity.
|
||||
TRACE_HANDLER_STATS(isolate(), KeyedStoreIC_SlowStub);
|
||||
handler = isolate()->builtins()->KeyedStoreIC_Slow();
|
||||
handler = BUILTIN_CODE(isolate(), KeyedStoreIC_Slow);
|
||||
|
||||
} else {
|
||||
{
|
||||
|
@ -264,7 +264,7 @@ class LoadIC : public IC {
|
||||
|
||||
protected:
|
||||
virtual Handle<Code> slow_stub() const {
|
||||
return isolate()->builtins()->LoadIC_Slow();
|
||||
return BUILTIN_CODE(isolate(), LoadIC_Slow);
|
||||
}
|
||||
|
||||
// Update the inline cache and the global stub cache based on the
|
||||
@ -305,7 +305,7 @@ class LoadGlobalIC : public LoadIC {
|
||||
|
||||
protected:
|
||||
Handle<Code> slow_stub() const override {
|
||||
return isolate()->builtins()->LoadGlobalIC_Slow();
|
||||
return BUILTIN_CODE(isolate(), LoadGlobalIC_Slow);
|
||||
}
|
||||
};
|
||||
|
||||
@ -356,7 +356,7 @@ class StoreIC : public IC {
|
||||
// Stub accessors.
|
||||
Handle<Code> slow_stub() const {
|
||||
// All StoreICs share the same slow stub.
|
||||
return isolate()->builtins()->KeyedStoreIC_Slow();
|
||||
return BUILTIN_CODE(isolate(), KeyedStoreIC_Slow);
|
||||
}
|
||||
|
||||
// Update the inline cache and the global stub cache based on the
|
||||
|
@ -196,7 +196,7 @@ InterpreterCompilationJob::Status InterpreterCompilationJob::FinalizeJobImpl() {
|
||||
}
|
||||
|
||||
info()->SetBytecodeArray(bytecodes);
|
||||
info()->SetCode(info()->isolate()->builtins()->InterpreterEntryTrampoline());
|
||||
info()->SetCode(BUILTIN_CODE(info()->isolate(), InterpreterEntryTrampoline));
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
|
@ -1322,7 +1322,8 @@ Object* Isolate::UnwindAndFindHandler() {
|
||||
Context::cast(js_frame->ReadInterpreterRegister(context_reg));
|
||||
js_frame->PatchBytecodeOffset(static_cast<int>(offset));
|
||||
|
||||
Code* code = *builtins()->InterpreterEnterBytecodeDispatch();
|
||||
Code* code =
|
||||
builtins()->builtin(Builtins::kInterpreterEnterBytecodeDispatch);
|
||||
return FoundHandler(context, code, 0, return_sp, frame->fp());
|
||||
}
|
||||
|
||||
|
@ -1769,7 +1769,7 @@ void Logger::LogCompiledFunctions() {
|
||||
// During iteration, there can be heap allocation due to
|
||||
// GetScriptLineNumber call.
|
||||
for (int i = 0; i < compiled_funcs_count; ++i) {
|
||||
if (code_objects[i].is_identical_to(isolate_->builtins()->CompileLazy()))
|
||||
if (code_objects[i].is_identical_to(BUILTIN_CODE(isolate_, CompileLazy)))
|
||||
continue;
|
||||
LogExistingFunction(sfis[i], code_objects[i]);
|
||||
}
|
||||
|
@ -644,8 +644,8 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
__ Push(cp);
|
||||
__ Call(strict() ? isolate()->builtins()->StrictEqual()
|
||||
: isolate()->builtins()->Equal(),
|
||||
__ Call(strict() ? BUILTIN_CODE(isolate(), StrictEqual)
|
||||
: BUILTIN_CODE(isolate(), Equal),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
}
|
||||
@ -1396,7 +1396,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
|
||||
__ bind(&non_function);
|
||||
__ mov(a3, a1);
|
||||
__ Jump(isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
// StringCharCodeAtGenerator.
|
||||
|
@ -3846,7 +3846,7 @@ void MacroAssembler::MaybeDropFrames() {
|
||||
ExternalReference::debug_restart_fp_address(isolate());
|
||||
li(a1, Operand(restart_fp));
|
||||
lw(a1, MemOperand(a1));
|
||||
Jump(isolate()->builtins()->FrameDropperTrampoline(), RelocInfo::CODE_TARGET,
|
||||
Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
|
||||
ne, a1, Operand(zero_reg));
|
||||
}
|
||||
|
||||
@ -4387,8 +4387,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
|
||||
}
|
||||
|
||||
if (!definitely_matches) {
|
||||
Handle<Code> adaptor =
|
||||
isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
||||
Handle<Code> adaptor = BUILTIN_CODE(isolate(), ArgumentsAdaptorTrampoline);
|
||||
if (flag == CALL_FUNCTION) {
|
||||
Call(adaptor);
|
||||
if (!*definitely_mismatches) {
|
||||
@ -5032,9 +5031,9 @@ void TurboAssembler::Abort(BailoutReason reason) {
|
||||
// We don't actually want to generate a pile of code for this, so just
|
||||
// claim there is a stack frame, without generating one.
|
||||
FrameScope scope(this, StackFrame::NONE);
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
// Will not return here.
|
||||
if (is_trampoline_pool_blocked()) {
|
||||
|
@ -641,8 +641,8 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
__ Push(cp);
|
||||
__ Call(strict() ? isolate()->builtins()->StrictEqual()
|
||||
: isolate()->builtins()->Equal(),
|
||||
__ Call(strict() ? BUILTIN_CODE(isolate(), StrictEqual)
|
||||
: BUILTIN_CODE(isolate(), Equal),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
}
|
||||
@ -1399,7 +1399,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
|
||||
__ bind(&non_function);
|
||||
__ mov(a3, a1);
|
||||
__ Jump(isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
||||
|
@ -4122,7 +4122,7 @@ void MacroAssembler::MaybeDropFrames() {
|
||||
ExternalReference::debug_restart_fp_address(isolate());
|
||||
li(a1, Operand(restart_fp));
|
||||
Ld(a1, MemOperand(a1));
|
||||
Jump(isolate()->builtins()->FrameDropperTrampoline(), RelocInfo::CODE_TARGET,
|
||||
Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
|
||||
ne, a1, Operand(zero_reg));
|
||||
}
|
||||
|
||||
@ -4726,8 +4726,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
|
||||
}
|
||||
|
||||
if (!definitely_matches) {
|
||||
Handle<Code> adaptor =
|
||||
isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
||||
Handle<Code> adaptor = BUILTIN_CODE(isolate(), ArgumentsAdaptorTrampoline);
|
||||
if (flag == CALL_FUNCTION) {
|
||||
Call(adaptor);
|
||||
if (!*definitely_mismatches) {
|
||||
@ -5528,9 +5527,9 @@ void TurboAssembler::Abort(BailoutReason reason) {
|
||||
// We don't actually want to generate a pile of code for this, so just
|
||||
// claim there is a stack frame, without generating one.
|
||||
FrameScope scope(this, StackFrame::NONE);
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
// Will not return here.
|
||||
if (is_trampoline_pool_blocked()) {
|
||||
|
@ -3690,16 +3690,17 @@ inline bool Code::is_hydrogen_stub() const {
|
||||
|
||||
inline bool Code::is_interpreter_trampoline_builtin() const {
|
||||
Builtins* builtins = GetIsolate()->builtins();
|
||||
return this == *builtins->InterpreterEntryTrampoline() ||
|
||||
this == *builtins->InterpreterEnterBytecodeAdvance() ||
|
||||
this == *builtins->InterpreterEnterBytecodeDispatch();
|
||||
return this == builtins->builtin(Builtins::kInterpreterEntryTrampoline) ||
|
||||
this ==
|
||||
builtins->builtin(Builtins::kInterpreterEnterBytecodeAdvance) ||
|
||||
this == builtins->builtin(Builtins::kInterpreterEnterBytecodeDispatch);
|
||||
}
|
||||
|
||||
inline bool Code::checks_optimization_marker() const {
|
||||
Builtins* builtins = GetIsolate()->builtins();
|
||||
return this == *builtins->CompileLazy() ||
|
||||
this == *builtins->InterpreterEntryTrampoline() ||
|
||||
this == *builtins->CheckOptimizationMarker();
|
||||
return this == builtins->builtin(Builtins::kCompileLazy) ||
|
||||
this == builtins->builtin(Builtins::kInterpreterEntryTrampoline) ||
|
||||
this == builtins->builtin(Builtins::kCheckOptimizationMarker);
|
||||
}
|
||||
|
||||
inline bool Code::has_unwinding_info() const {
|
||||
|
@ -1207,12 +1207,12 @@ Handle<SharedFunctionInfo> FunctionTemplateInfo::GetOrCreateSharedFunctionInfo(
|
||||
name_string = class_name->IsString() ? Handle<String>::cast(class_name)
|
||||
: isolate->factory()->empty_string();
|
||||
}
|
||||
Handle<Code> code = isolate->builtins()->HandleApiCall();
|
||||
Handle<Code> code = BUILTIN_CODE(isolate, HandleApiCall);
|
||||
bool is_constructor = !info->remove_prototype();
|
||||
Handle<SharedFunctionInfo> result = isolate->factory()->NewSharedFunctionInfo(
|
||||
name_string, code, is_constructor);
|
||||
if (is_constructor) {
|
||||
result->SetConstructStub(*isolate->builtins()->JSConstructStubApi());
|
||||
result->SetConstructStub(*BUILTIN_CODE(isolate, JSConstructStubApi));
|
||||
}
|
||||
|
||||
result->set_length(info->length());
|
||||
@ -13788,7 +13788,7 @@ void SharedFunctionInfo::InitFromFunctionLiteral(
|
||||
DCHECK(lit->kind() == shared_info->kind());
|
||||
if (!IsConstructable(lit->kind())) {
|
||||
shared_info->SetConstructStub(
|
||||
*shared_info->GetIsolate()->builtins()->ConstructedNonConstructable());
|
||||
*BUILTIN_CODE(shared_info->GetIsolate(), ConstructedNonConstructable));
|
||||
}
|
||||
shared_info->set_needs_home_object(lit->scope()->NeedsHomeObject());
|
||||
shared_info->set_asm_function(lit->scope()->asm_function());
|
||||
@ -14262,42 +14262,40 @@ Code::Age Code::GetAge() {
|
||||
|
||||
Code::Age Code::GetAgeOfCodeAgeStub(Code* code) {
|
||||
Isolate* isolate = code->GetIsolate();
|
||||
Builtins* builtins = isolate->builtins();
|
||||
#define HANDLE_CODE_AGE(AGE) \
|
||||
if (code == *builtins->Make##AGE##CodeYoungAgain()) { \
|
||||
return k##AGE##CodeAge; \
|
||||
#define HANDLE_CODE_AGE(AGE) \
|
||||
if (code == *BUILTIN_CODE(isolate, Make##AGE##CodeYoungAgain)) { \
|
||||
return k##AGE##CodeAge; \
|
||||
}
|
||||
CODE_AGE_LIST(HANDLE_CODE_AGE)
|
||||
#undef HANDLE_CODE_AGE
|
||||
if (code == *builtins->MarkCodeAsExecutedOnce()) {
|
||||
if (code == *BUILTIN_CODE(isolate, MarkCodeAsExecutedOnce)) {
|
||||
return kNotExecutedCodeAge;
|
||||
}
|
||||
if (code == *builtins->MarkCodeAsExecutedTwice()) {
|
||||
if (code == *BUILTIN_CODE(isolate, MarkCodeAsExecutedTwice)) {
|
||||
return kExecutedOnceCodeAge;
|
||||
}
|
||||
if (code == *builtins->MarkCodeAsToBeExecutedOnce()) {
|
||||
if (code == *BUILTIN_CODE(isolate, MarkCodeAsToBeExecutedOnce)) {
|
||||
return kToBeExecutedOnceCodeAge;
|
||||
}
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
||||
Code* Code::GetCodeAgeStub(Isolate* isolate, Age age) {
|
||||
Builtins* builtins = isolate->builtins();
|
||||
switch (age) {
|
||||
#define HANDLE_CODE_AGE(AGE) \
|
||||
case k##AGE##CodeAge: { \
|
||||
return *builtins->Make##AGE##CodeYoungAgain(); \
|
||||
#define HANDLE_CODE_AGE(AGE) \
|
||||
case k##AGE##CodeAge: { \
|
||||
return *BUILTIN_CODE(isolate, Make##AGE##CodeYoungAgain); \
|
||||
}
|
||||
CODE_AGE_LIST(HANDLE_CODE_AGE)
|
||||
#undef HANDLE_CODE_AGE
|
||||
case kNotExecutedCodeAge: {
|
||||
return *builtins->MarkCodeAsExecutedOnce();
|
||||
return *BUILTIN_CODE(isolate, MarkCodeAsExecutedOnce);
|
||||
}
|
||||
case kExecutedOnceCodeAge: {
|
||||
return *builtins->MarkCodeAsExecutedTwice();
|
||||
return *BUILTIN_CODE(isolate, MarkCodeAsExecutedTwice);
|
||||
}
|
||||
case kToBeExecutedOnceCodeAge: {
|
||||
return *builtins->MarkCodeAsToBeExecutedOnce();
|
||||
return *BUILTIN_CODE(isolate, MarkCodeAsToBeExecutedOnce);
|
||||
}
|
||||
default:
|
||||
UNREACHABLE();
|
||||
|
@ -626,8 +626,8 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
||||
{
|
||||
FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL);
|
||||
__ Push(cp);
|
||||
__ Call(strict() ? isolate()->builtins()->StrictEqual()
|
||||
: isolate()->builtins()->Equal(),
|
||||
__ Call(strict() ? BUILTIN_CODE(isolate(), StrictEqual)
|
||||
: BUILTIN_CODE(isolate(), Equal),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
}
|
||||
@ -1360,7 +1360,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
|
||||
__ bind(&non_function);
|
||||
__ mr(r6, r4);
|
||||
__ Jump(isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1274,7 +1274,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
|
||||
}
|
||||
|
||||
if (!definitely_matches) {
|
||||
Handle<Code> adaptor = isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
||||
Handle<Code> adaptor = BUILTIN_CODE(isolate(), ArgumentsAdaptorTrampoline);
|
||||
if (flag == CALL_FUNCTION) {
|
||||
Call(adaptor);
|
||||
if (!*definitely_mismatches) {
|
||||
@ -1423,7 +1423,7 @@ void MacroAssembler::MaybeDropFrames() {
|
||||
mov(r4, Operand(restart_fp));
|
||||
LoadP(r4, MemOperand(r4));
|
||||
cmpi(r4, Operand::Zero());
|
||||
Jump(isolate()->builtins()->FrameDropperTrampoline(), RelocInfo::CODE_TARGET,
|
||||
Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
|
||||
ne);
|
||||
}
|
||||
|
||||
@ -2111,9 +2111,9 @@ void TurboAssembler::Abort(BailoutReason reason) {
|
||||
// We don't actually want to generate a pile of code for this, so just
|
||||
// claim there is a stack frame, without generating one.
|
||||
FrameScope scope(this, StackFrame::NONE);
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
// will not return here
|
||||
}
|
||||
|
@ -601,8 +601,8 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
||||
{
|
||||
FrameAndConstantPoolScope scope(masm, StackFrame::INTERNAL);
|
||||
__ Push(cp);
|
||||
__ Call(strict() ? isolate()->builtins()->StrictEqual()
|
||||
: isolate()->builtins()->Equal(),
|
||||
__ Call(strict() ? BUILTIN_CODE(isolate(), StrictEqual)
|
||||
: BUILTIN_CODE(isolate(), Equal),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(cp);
|
||||
}
|
||||
@ -1344,7 +1344,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
|
||||
__ bind(&non_function);
|
||||
__ LoadRR(r5, r3);
|
||||
__ Jump(isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
// StringCharCodeAtGenerator
|
||||
|
@ -1238,7 +1238,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
|
||||
}
|
||||
|
||||
if (!definitely_matches) {
|
||||
Handle<Code> adaptor = isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
||||
Handle<Code> adaptor = BUILTIN_CODE(isolate(), ArgumentsAdaptorTrampoline);
|
||||
if (flag == CALL_FUNCTION) {
|
||||
Call(adaptor);
|
||||
if (!*definitely_mismatches) {
|
||||
@ -1386,7 +1386,7 @@ void MacroAssembler::MaybeDropFrames() {
|
||||
mov(r3, Operand(restart_fp));
|
||||
LoadP(r3, MemOperand(r3));
|
||||
CmpP(r3, Operand::Zero());
|
||||
Jump(isolate()->builtins()->FrameDropperTrampoline(), RelocInfo::CODE_TARGET,
|
||||
Jump(BUILTIN_CODE(isolate(), FrameDropperTrampoline), RelocInfo::CODE_TARGET,
|
||||
ne);
|
||||
}
|
||||
|
||||
@ -1925,9 +1925,9 @@ void TurboAssembler::Abort(BailoutReason reason) {
|
||||
// We don't actually want to generate a pile of code for this, so just
|
||||
// claim there is a stack frame, without generating one.
|
||||
FrameScope scope(this, StackFrame::NONE);
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
// will not return here
|
||||
}
|
||||
|
@ -572,8 +572,8 @@ MaybeHandle<WasmModuleObject> ModuleCompiler::CompileToModuleObjectInternal(
|
||||
// Otherwise: Initialize with the illegal builtin. All call sites will be
|
||||
// patched at instantiation.
|
||||
Handle<Code> init_builtin = lazy_compile
|
||||
? isolate_->builtins()->WasmCompileLazy()
|
||||
: isolate_->builtins()->Illegal();
|
||||
? BUILTIN_CODE(isolate_, WasmCompileLazy)
|
||||
: BUILTIN_CODE(isolate_, Illegal);
|
||||
for (int i = 0, e = static_cast<int>(module_->functions.size()); i < e; ++i) {
|
||||
code_table->set(i, *init_builtin);
|
||||
temp_instance->function_code[i] = init_builtin;
|
||||
@ -2085,7 +2085,7 @@ class AsyncCompileJob::PrepareAndStartCompile : public CompileStep {
|
||||
|
||||
// Initialize {code_table_} with the illegal builtin. All call sites
|
||||
// will be patched at instantiation.
|
||||
Handle<Code> illegal_builtin = job_->isolate_->builtins()->Illegal();
|
||||
Handle<Code> illegal_builtin = BUILTIN_CODE(job_->isolate_, Illegal);
|
||||
// TODO(wasm): Fix this for lazy compilation.
|
||||
for (uint32_t i = 0; i < module_->functions.size(); ++i) {
|
||||
job_->code_table_->set(static_cast<int>(i), *illegal_builtin);
|
||||
|
@ -621,8 +621,8 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) {
|
||||
{
|
||||
FrameScope scope(masm, StackFrame::INTERNAL);
|
||||
__ Push(rsi);
|
||||
__ Call(strict() ? isolate()->builtins()->StrictEqual()
|
||||
: isolate()->builtins()->Equal(),
|
||||
__ Call(strict() ? BUILTIN_CODE(isolate(), StrictEqual)
|
||||
: BUILTIN_CODE(isolate(), Equal),
|
||||
RelocInfo::CODE_TARGET);
|
||||
__ Pop(rsi);
|
||||
}
|
||||
@ -800,7 +800,7 @@ void CallConstructStub::Generate(MacroAssembler* masm) {
|
||||
|
||||
__ bind(&non_function);
|
||||
__ movp(rdx, rdi);
|
||||
__ Jump(isolate()->builtins()->Construct(), RelocInfo::CODE_TARGET);
|
||||
__ Jump(BUILTIN_CODE(isolate(), Construct), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
bool CEntryStub::NeedsImmovableCode() {
|
||||
|
@ -483,9 +483,9 @@ void TurboAssembler::Abort(BailoutReason reason) {
|
||||
// We don't actually want to generate a pile of code for this, so just
|
||||
// claim there is a stack frame, without generating one.
|
||||
FrameScope scope(this, StackFrame::NONE);
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
} else {
|
||||
Call(isolate()->builtins()->Abort(), RelocInfo::CODE_TARGET);
|
||||
Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET);
|
||||
}
|
||||
// Control will not return here.
|
||||
int3();
|
||||
@ -3586,7 +3586,7 @@ void MacroAssembler::MaybeDropFrames() {
|
||||
ExternalReference::debug_restart_fp_address(isolate());
|
||||
Load(rbx, restart_fp);
|
||||
testp(rbx, rbx);
|
||||
j(not_zero, isolate()->builtins()->FrameDropperTrampoline(),
|
||||
j(not_zero, BUILTIN_CODE(isolate(), FrameDropperTrampoline),
|
||||
RelocInfo::CODE_TARGET);
|
||||
}
|
||||
|
||||
@ -3776,7 +3776,7 @@ void MacroAssembler::InvokePrologue(const ParameterCount& expected,
|
||||
}
|
||||
|
||||
if (!definitely_matches) {
|
||||
Handle<Code> adaptor = isolate()->builtins()->ArgumentsAdaptorTrampoline();
|
||||
Handle<Code> adaptor = BUILTIN_CODE(isolate(), ArgumentsAdaptorTrampoline);
|
||||
if (flag == CALL_FUNCTION) {
|
||||
Call(adaptor, RelocInfo::CODE_TARGET);
|
||||
if (!*definitely_mismatches) {
|
||||
@ -3842,7 +3842,7 @@ void TurboAssembler::Prologue(bool code_pre_aging) {
|
||||
kNoCodeAgeSequenceLength);
|
||||
if (code_pre_aging) {
|
||||
// Pre-age the code.
|
||||
Call(isolate()->builtins()->MarkCodeAsExecutedOnce(),
|
||||
Call(BUILTIN_CODE(isolate(), MarkCodeAsExecutedOnce),
|
||||
RelocInfo::CODE_AGE_SEQUENCE);
|
||||
Nop(kNoCodeAgeSequenceLength - Assembler::kShortCallInstructionLength);
|
||||
} else {
|
||||
|
@ -5509,8 +5509,8 @@ static void RemoveCodeAndGC(const v8::FunctionCallbackInfo<v8::Value>& args) {
|
||||
Handle<Object> obj = v8::Utils::OpenHandle(*args[0]);
|
||||
Handle<JSFunction> fun = Handle<JSFunction>::cast(obj);
|
||||
fun->shared()->ClearBytecodeArray(); // Bytecode is code too.
|
||||
fun->ReplaceCode(*isolate->builtins()->CompileLazy());
|
||||
fun->shared()->ReplaceCode(*isolate->builtins()->CompileLazy());
|
||||
fun->ReplaceCode(*BUILTIN_CODE(isolate, CompileLazy));
|
||||
fun->shared()->ReplaceCode(*BUILTIN_CODE(isolate, CompileLazy));
|
||||
CcTest::CollectAllAvailableGarbage();
|
||||
}
|
||||
|
||||
|
@ -110,7 +110,7 @@ class InterpreterTester {
|
||||
function = Handle<JSFunction>::cast(v8::Utils::OpenHandle(
|
||||
*v8::Local<v8::Function>::Cast(CompileRun(source.c_str()))));
|
||||
function->ReplaceCode(
|
||||
*isolate_->builtins()->InterpreterEntryTrampoline());
|
||||
*BUILTIN_CODE(isolate_, InterpreterEntryTrampoline));
|
||||
}
|
||||
|
||||
if (!bytecode_.is_null()) {
|
||||
|
@ -289,7 +289,7 @@ TEST(DisasmIa320) {
|
||||
__ bind(&L2);
|
||||
__ call(Operand(ebx, ecx, times_4, 10000));
|
||||
__ nop();
|
||||
Handle<Code> ic = isolate->builtins()->LoadIC();
|
||||
Handle<Code> ic = BUILTIN_CODE(isolate, LoadIC);
|
||||
__ call(ic, RelocInfo::CODE_TARGET);
|
||||
__ nop();
|
||||
__ call(FUNCTION_ADDR(DummyStaticFunction), RelocInfo::RUNTIME_ENTRY);
|
||||
|
@ -284,7 +284,7 @@ TEST(DisasmX64) {
|
||||
// TODO(mstarzinger): The following is protected.
|
||||
// __ call(Operand(rbx, rcx, times_4, 10000));
|
||||
__ nop();
|
||||
Handle<Code> ic = isolate->builtins()->LoadIC();
|
||||
Handle<Code> ic = BUILTIN_CODE(isolate, LoadIC);
|
||||
__ call(ic, RelocInfo::CODE_TARGET);
|
||||
__ nop();
|
||||
__ nop();
|
||||
|
@ -47,7 +47,7 @@ Handle<SharedFunctionInfo> CreateSharedFunctionInfo(
|
||||
script->set_shared_function_infos(*infos);
|
||||
Handle<SharedFunctionInfo> shared = isolate->factory()->NewSharedFunctionInfo(
|
||||
isolate->factory()->NewStringFromAsciiChecked("f"),
|
||||
isolate->builtins()->CompileLazy(), false);
|
||||
BUILTIN_CODE(isolate, CompileLazy), false);
|
||||
shared->set_end_position(source->length());
|
||||
shared->set_outer_scope_info(ScopeInfo::Empty(isolate));
|
||||
shared->set_function_literal_id(1);
|
||||
|
Loading…
Reference in New Issue
Block a user