[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:
jgruber 2017-07-31 13:03:44 +02:00 committed by Commit Bot
parent e47d175738
commit 2f79e03560
63 changed files with 501 additions and 514 deletions

View File

@ -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);

View File

@ -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

View File

@ -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()) {

View File

@ -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) {

View File

@ -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.

View File

@ -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());

View File

@ -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);

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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();
}

View File

@ -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) {

View File

@ -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();
}

View File

@ -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

View File

@ -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);

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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));
}

View File

@ -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);

View File

@ -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 {

View File

@ -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,

View File

@ -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

View File

@ -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);

View File

@ -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);
}

View File

@ -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.

View File

@ -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);

View File

@ -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;
}

View File

@ -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();

View File

@ -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();
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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() {

View File

@ -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();

View File

@ -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 {
{

View File

@ -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

View File

@ -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;
}

View File

@ -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());
}

View File

@ -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]);
}

View File

@ -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.

View File

@ -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()) {

View File

@ -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);
}

View File

@ -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()) {

View File

@ -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 {

View File

@ -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();

View File

@ -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);
}

View File

@ -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
}

View File

@ -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

View File

@ -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
}

View File

@ -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);

View File

@ -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() {

View File

@ -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 {

View File

@ -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();
}

View File

@ -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()) {

View File

@ -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);

View File

@ -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();

View File

@ -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);