[cleanup] Avoid {Object::operator->}

This CL was generated by an automatic clang AST rewriter using this
matcher expression:

  callExpr(
    callee(
      cxxMethodDecl(
        hasName("operator->"),
        ofClass(isSameOrDerivedFrom("v8::internal::Object"))
      )
    ),
    argumentCountIs(1)
  )

The "->" at the expression location was then rewritten to ".".

R=jkummerow@chromium.org
TBR=mstarzinger@chromium.org,verwaest@chromium.org,yangguo@chromium.org

Bug: v8:9183, v8:3770
No-Try: true
No-Tree-Checks: true
Change-Id: I0a7ecabdeafe51d0cf427f5280af0c7cab96869e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624209
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61764}
This commit is contained in:
Clemens Hammacher 2019-05-23 09:47:44 +02:00 committed by Commit Bot
parent f1d016229c
commit 878ccb33bd
393 changed files with 9074 additions and 9171 deletions

View File

@ -18,7 +18,7 @@ RootIndexMap::RootIndexMap(Isolate* isolate) {
for (RootIndex root_index = RootIndex::kFirstStrongOrReadOnlyRoot;
root_index <= RootIndex::kLastStrongOrReadOnlyRoot; ++root_index) {
Object root = isolate->root(root_index);
if (!root->IsHeapObject()) continue;
if (!root.IsHeapObject()) continue;
// Omit root entries that can be written after initialization. They must
// not be referenced through the root list in the snapshot.
// Since we map the raw address of an root item to its root list index, the

View File

@ -39,7 +39,7 @@ void AllocationSiteUsageContext::ExitScope(Handle<AllocationSite> scope_site,
}
bool AllocationSiteUsageContext::ShouldCreateMemento(Handle<JSObject> object) {
if (activated_ && AllocationSite::CanTrack(object->map()->instance_type())) {
if (activated_ && AllocationSite::CanTrack(object->map().instance_type())) {
if (FLAG_allocation_site_pretenuring ||
AllocationSite::ShouldTrack(object->GetElementsKind())) {
if (FLAG_trace_creation_allocation_sites) {

View File

@ -30,7 +30,7 @@ class AllocationSiteContext {
protected:
void update_current_site(AllocationSite site) {
*(current_.location()) = site->ptr();
*(current_.location()) = site.ptr();
}
inline void InitializeTraversal(Handle<AllocationSite> site);

View File

@ -43,7 +43,7 @@ Handle<V> CustomArguments<T>::GetReturnValue(Isolate* isolate) {
// Check the ReturnValue.
FullObjectSlot slot = slot_at(kReturnValueOffset);
// Nothing was set, return empty handle as per previous behaviour.
if ((*slot)->IsTheHole(isolate)) return Handle<V>();
if ((*slot).IsTheHole(isolate)) return Handle<V>();
Handle<V> result = Handle<V>::cast(Handle<Object>(slot.location()));
result->VerifyApiCallResultType();
return result;
@ -144,7 +144,7 @@ Handle<Object> FunctionCallbackArguments::Call(CallHandlerInfo handler) {
LOG(isolate, ApiObjectAccess("call", holder()));
RuntimeCallTimerScope timer(isolate, RuntimeCallCounterId::kFunctionCallback);
v8::FunctionCallback f =
v8::ToCData<v8::FunctionCallback>(handler->callback());
v8::ToCData<v8::FunctionCallback>(handler.callback());
Handle<Object> receiver_check_unsupported;
if (isolate->debug_execution_mode() == DebugInfo::kSideEffects &&
!isolate->debug()->PerformSideEffectCheckForCallback(

View File

@ -28,8 +28,8 @@ PropertyCallbackArguments::PropertyCallbackArguments(
HeapObject the_hole = ReadOnlyRoots(isolate).the_hole_value();
slot_at(T::kReturnValueDefaultValueIndex).store(the_hole);
slot_at(T::kReturnValueIndex).store(the_hole);
DCHECK((*slot_at(T::kHolderIndex))->IsHeapObject());
DCHECK((*slot_at(T::kIsolateIndex))->IsSmi());
DCHECK((*slot_at(T::kHolderIndex)).IsHeapObject());
DCHECK((*slot_at(T::kIsolateIndex)).IsSmi());
}
FunctionCallbackArguments::FunctionCallbackArguments(
@ -46,8 +46,8 @@ FunctionCallbackArguments::FunctionCallbackArguments(
HeapObject the_hole = ReadOnlyRoots(isolate).the_hole_value();
slot_at(T::kReturnValueDefaultValueIndex).store(the_hole);
slot_at(T::kReturnValueIndex).store(the_hole);
DCHECK((*slot_at(T::kHolderIndex))->IsHeapObject());
DCHECK((*slot_at(T::kIsolateIndex))->IsSmi());
DCHECK((*slot_at(T::kHolderIndex)).IsHeapObject());
DCHECK((*slot_at(T::kIsolateIndex)).IsSmi());
}
} // namespace internal

View File

@ -18,13 +18,13 @@ inline T ToCData(v8::internal::Object obj) {
STATIC_ASSERT(sizeof(T) == sizeof(v8::internal::Address));
if (obj == v8::internal::Smi::kZero) return nullptr;
return reinterpret_cast<T>(
v8::internal::Foreign::cast(obj)->foreign_address());
v8::internal::Foreign::cast(obj).foreign_address());
}
template <>
inline v8::internal::Address ToCData(v8::internal::Object obj) {
if (obj == v8::internal::Smi::kZero) return v8::internal::kNullAddress;
return v8::internal::Foreign::cast(obj)->foreign_address();
return v8::internal::Foreign::cast(obj).foreign_address();
}
template <typename T>
@ -117,7 +117,7 @@ MAKE_TO_LOCAL(ScriptOrModuleToLocal, Script, ScriptOrModule)
DCHECK(that == nullptr || \
v8::internal::Object( \
*reinterpret_cast<const v8::internal::Address*>(that)) \
->Is##To()); \
.Is##To()); \
return v8::internal::Handle<v8::internal::To>( \
reinterpret_cast<v8::internal::Address*>( \
const_cast<v8::From*>(that))); \

View File

@ -65,12 +65,12 @@ MaybeHandle<Object> DefineAccessorProperty(
Handle<Object> getter, Handle<Object> setter, PropertyAttributes attributes,
bool force_instantiate) {
DCHECK(!getter->IsFunctionTemplateInfo() ||
!FunctionTemplateInfo::cast(*getter)->do_not_cache());
!FunctionTemplateInfo::cast(*getter).do_not_cache());
DCHECK(!setter->IsFunctionTemplateInfo() ||
!FunctionTemplateInfo::cast(*setter)->do_not_cache());
!FunctionTemplateInfo::cast(*setter).do_not_cache());
if (getter->IsFunctionTemplateInfo()) {
if (force_instantiate ||
FunctionTemplateInfo::cast(*getter)->BreakAtEntry()) {
FunctionTemplateInfo::cast(*getter).BreakAtEntry()) {
ASSIGN_RETURN_ON_EXCEPTION(
isolate, getter,
InstantiateFunction(isolate,
@ -80,7 +80,7 @@ MaybeHandle<Object> DefineAccessorProperty(
}
if (setter->IsFunctionTemplateInfo()) {
if (force_instantiate ||
FunctionTemplateInfo::cast(*setter)->BreakAtEntry()) {
FunctionTemplateInfo::cast(*setter).BreakAtEntry()) {
ASSIGN_RETURN_ON_EXCEPTION(
isolate, setter,
InstantiateFunction(isolate,
@ -145,7 +145,7 @@ class AccessCheckDisableScope {
public:
AccessCheckDisableScope(Isolate* isolate, Handle<JSObject> obj)
: isolate_(isolate),
disabled_(obj->map()->is_access_check_needed()),
disabled_(obj->map().is_access_check_needed()),
obj_(obj) {
if (disabled_) {
DisableAccessChecks(isolate_, obj_);
@ -188,11 +188,11 @@ MaybeHandle<JSObject> ConfigureInstance(Isolate* isolate, Handle<JSObject> obj,
int max_number_of_properties = 0;
TemplateInfoT info = *data;
while (!info.is_null()) {
Object props = info->property_accessors();
if (!props->IsUndefined(isolate)) {
max_number_of_properties += TemplateList::cast(props)->length();
Object props = info.property_accessors();
if (!props.IsUndefined(isolate)) {
max_number_of_properties += TemplateList::cast(props).length();
}
info = info->GetParent(isolate);
info = info.GetParent(isolate);
}
if (max_number_of_properties > 0) {
@ -205,7 +205,7 @@ MaybeHandle<JSObject> ConfigureInstance(Isolate* isolate, Handle<JSObject> obj,
temp = handle(temp->GetParent(isolate), isolate)) {
// Accumulate accessors.
Object maybe_properties = temp->property_accessors();
if (!maybe_properties->IsUndefined(isolate)) {
if (!maybe_properties.IsUndefined(isolate)) {
valid_descriptors = AccessorInfo::AppendUnique(
isolate, handle(maybe_properties, isolate), array,
valid_descriptors);
@ -223,7 +223,7 @@ MaybeHandle<JSObject> ConfigureInstance(Isolate* isolate, Handle<JSObject> obj,
}
Object maybe_property_list = data->property_list();
if (maybe_property_list->IsUndefined(isolate)) return obj;
if (maybe_property_list.IsUndefined(isolate)) return obj;
Handle<TemplateList> properties(TemplateList::cast(maybe_property_list),
isolate);
if (properties->length() == 0) return obj;
@ -232,7 +232,7 @@ MaybeHandle<JSObject> ConfigureInstance(Isolate* isolate, Handle<JSObject> obj,
for (int c = 0; c < data->number_of_properties(); c++) {
auto name = handle(Name::cast(properties->get(i++)), isolate);
Object bit = properties->get(i++);
if (bit->IsSmi()) {
if (bit.IsSmi()) {
PropertyDetails details(Smi::cast(bit));
PropertyAttributes attributes = details.attributes();
PropertyKind kind = details.kind();
@ -336,7 +336,7 @@ void UncacheTemplateInstantiation(Isolate* isolate, int serial_number,
if (serial_number <= TemplateInfo::kFastTemplateInstantiationsCacheSize) {
Handle<FixedArray> fast_cache =
isolate->fast_template_instantiations_cache();
DCHECK(!fast_cache->get(serial_number - 1)->IsUndefined(isolate));
DCHECK(!fast_cache->get(serial_number - 1).IsUndefined(isolate));
fast_cache->set_undefined(serial_number - 1);
} else if (caching_mode == CachingMode::kUnlimited ||
(serial_number <=
@ -354,11 +354,11 @@ bool IsSimpleInstantiation(Isolate* isolate, ObjectTemplateInfo info,
JSReceiver new_target) {
DisallowHeapAllocation no_gc;
if (!new_target->IsJSFunction()) return false;
if (!new_target.IsJSFunction()) return false;
JSFunction fun = JSFunction::cast(new_target);
if (fun->shared()->function_data() != info->constructor()) return false;
if (info->immutable_proto()) return false;
return fun->context()->native_context() == isolate->raw_native_context();
if (fun.shared().function_data() != info.constructor()) return false;
if (info.immutable_proto()) return false;
return fun.context().native_context() == isolate->raw_native_context();
}
MaybeHandle<JSObject> InstantiateObject(Isolate* isolate,
@ -387,7 +387,7 @@ MaybeHandle<JSObject> InstantiateObject(Isolate* isolate,
if (constructor.is_null()) {
Object maybe_constructor_info = info->constructor();
if (maybe_constructor_info->IsUndefined(isolate)) {
if (maybe_constructor_info.IsUndefined(isolate)) {
constructor = isolate->object_function();
} else {
// Enter a new scope. Recursion could otherwise create a lot of handles.
@ -471,9 +471,9 @@ MaybeHandle<JSFunction> InstantiateFunction(Isolate* isolate,
Handle<Object> prototype;
if (!data->remove_prototype()) {
Object prototype_templ = data->GetPrototypeTemplate();
if (prototype_templ->IsUndefined(isolate)) {
if (prototype_templ.IsUndefined(isolate)) {
Object protoype_provider_templ = data->GetPrototypeProviderTemplate();
if (protoype_provider_templ->IsUndefined(isolate)) {
if (protoype_provider_templ.IsUndefined(isolate)) {
prototype = isolate->factory()->NewJSObject(isolate->object_function());
} else {
ASSIGN_RETURN_ON_EXCEPTION(
@ -490,7 +490,7 @@ MaybeHandle<JSFunction> InstantiateFunction(Isolate* isolate,
JSFunction);
}
Object parent = data->GetParentTemplate();
if (!parent->IsUndefined(isolate)) {
if (!parent.IsUndefined(isolate)) {
Handle<Object> parent_prototype;
ASSIGN_RETURN_ON_EXCEPTION(isolate, parent_prototype,
GetInstancePrototype(isolate, parent),
@ -502,8 +502,8 @@ MaybeHandle<JSFunction> InstantiateFunction(Isolate* isolate,
}
InstanceType function_type =
(!data->needs_access_check() &&
data->GetNamedPropertyHandler()->IsUndefined(isolate) &&
data->GetIndexedPropertyHandler()->IsUndefined(isolate))
data->GetNamedPropertyHandler().IsUndefined(isolate) &&
data->GetIndexedPropertyHandler().IsUndefined(isolate))
? JS_API_OBJECT_TYPE
: JS_SPECIAL_API_OBJECT_TYPE;
@ -531,7 +531,7 @@ void AddPropertyToPropertyList(Isolate* isolate, Handle<TemplateInfo> templ,
int length, Handle<Object>* data) {
Object maybe_list = templ->property_list();
Handle<TemplateList> list;
if (maybe_list->IsUndefined(isolate)) {
if (maybe_list.IsUndefined(isolate)) {
list = TemplateList::New(isolate, length);
} else {
list = handle(TemplateList::cast(maybe_list), isolate);
@ -623,7 +623,7 @@ void ApiNatives::AddNativeDataProperty(Isolate* isolate,
Handle<AccessorInfo> property) {
Object maybe_list = info->property_accessors();
Handle<TemplateList> list;
if (maybe_list->IsUndefined(isolate)) {
if (maybe_list.IsUndefined(isolate)) {
list = TemplateList::New(isolate, 1);
} else {
list = handle(TemplateList::cast(maybe_list), isolate);
@ -647,7 +647,7 @@ Handle<JSFunction> ApiNatives::CreateApiFunction(
if (obj->remove_prototype()) {
DCHECK(prototype.is_null());
DCHECK(result->shared()->IsApiFunction());
DCHECK(result->shared().IsApiFunction());
DCHECK(!result->IsConstructor());
DCHECK(!result->has_prototype_slot());
return result;
@ -663,7 +663,7 @@ Handle<JSFunction> ApiNatives::CreateApiFunction(
if (prototype->IsTheHole(isolate)) {
prototype = isolate->factory()->NewFunctionPrototype(result);
} else if (obj->GetPrototypeProviderTemplate()->IsUndefined(isolate)) {
} else if (obj->GetPrototypeProviderTemplate().IsUndefined(isolate)) {
JSObject::AddProperty(isolate, Handle<JSObject>::cast(prototype),
isolate->factory()->constructor_string(), result,
DONT_ENUM);
@ -671,7 +671,7 @@ Handle<JSFunction> ApiNatives::CreateApiFunction(
int embedder_field_count = 0;
bool immutable_proto = false;
if (!obj->GetInstanceTemplate()->IsUndefined(isolate)) {
if (!obj->GetInstanceTemplate().IsUndefined(isolate)) {
Handle<ObjectTemplateInfo> GetInstanceTemplate = Handle<ObjectTemplateInfo>(
ObjectTemplateInfo::cast(obj->GetInstanceTemplate()), isolate);
embedder_field_count = GetInstanceTemplate->embedder_field_count();
@ -694,7 +694,7 @@ Handle<JSFunction> ApiNatives::CreateApiFunction(
// undetectable and callable. If we ever see the need to have an object
// that is undetectable but not callable, we need to update the types.h
// to allow encoding this.
CHECK(!obj->GetInstanceCallHandler()->IsUndefined(isolate));
CHECK(!obj->GetInstanceCallHandler().IsUndefined(isolate));
map->set_is_undetectable(true);
}
@ -705,16 +705,16 @@ Handle<JSFunction> ApiNatives::CreateApiFunction(
}
// Set interceptor information in the map.
if (!obj->GetNamedPropertyHandler()->IsUndefined(isolate)) {
if (!obj->GetNamedPropertyHandler().IsUndefined(isolate)) {
map->set_has_named_interceptor(true);
map->set_may_have_interesting_symbols(true);
}
if (!obj->GetIndexedPropertyHandler()->IsUndefined(isolate)) {
if (!obj->GetIndexedPropertyHandler().IsUndefined(isolate)) {
map->set_has_indexed_interceptor(true);
}
// Mark instance as callable in the map.
if (!obj->GetInstanceCallHandler()->IsUndefined(isolate)) {
if (!obj->GetInstanceCallHandler().IsUndefined(isolate)) {
map->set_is_callable(true);
map->set_is_constructor(!obj->undetectable());
}

File diff suppressed because it is too large Load Diff

View File

@ -122,7 +122,7 @@ void RelocInfo::set_target_object(Heap* heap, HeapObject target,
WriteBarrierMode write_barrier_mode,
ICacheFlushMode icache_flush_mode) {
DCHECK(IsCodeTarget(rmode_) || rmode_ == FULL_EMBEDDED_OBJECT);
Assembler::set_target_address_at(pc_, constant_pool_, target->ptr(),
Assembler::set_target_address_at(pc_, constant_pool_, target.ptr(),
icache_flush_mode);
if (write_barrier_mode == UPDATE_WRITE_BARRIER && !host().is_null()) {
WriteBarrierForCode(host(), this, target);

View File

@ -290,7 +290,7 @@ void ArmDebugger::Debug() {
Object obj(value);
os << arg1 << ": \n";
#ifdef DEBUG
obj->Print(os);
obj.Print(os);
os << "\n";
#else
os << Brief(obj) << "\n";
@ -339,7 +339,7 @@ void ArmDebugger::Debug() {
if (obj.IsSmi()) {
PrintF("smi %d", Smi::ToInt(obj));
} else {
obj->ShortPrint();
obj.ShortPrint();
}
PrintF(")");
}

View File

@ -702,7 +702,7 @@ void RelocInfo::set_target_object(Heap* heap, HeapObject target,
WriteBarrierMode write_barrier_mode,
ICacheFlushMode icache_flush_mode) {
DCHECK(IsCodeTarget(rmode_) || IsFullEmbeddedObject(rmode_));
Assembler::set_target_address_at(pc_, constant_pool_, target->ptr(),
Assembler::set_target_address_at(pc_, constant_pool_, target.ptr(),
icache_flush_mode);
if (write_barrier_mode == UPDATE_WRITE_BARRIER && !host().is_null()) {
WriteBarrierForCode(host(), this, target);

View File

@ -3296,7 +3296,7 @@ void Simulator::Debug() {
if (obj.IsSmi()) {
PrintF("smi %" PRId32, Smi::ToInt(obj));
} else {
obj->ShortPrint();
obj.ShortPrint();
}
PrintF(")");
}

View File

@ -73,11 +73,11 @@ bool AreStdlibMembersValid(Isolate* isolate, Handle<JSReceiver> stdlib,
Handle<Object> value = StdlibMathMember(isolate, stdlib, name); \
if (!value->IsJSFunction()) return false; \
SharedFunctionInfo shared = Handle<JSFunction>::cast(value)->shared(); \
if (!shared->HasBuiltinId() || \
shared->builtin_id() != Builtins::kMath##FName) { \
if (!shared.HasBuiltinId() || \
shared.builtin_id() != Builtins::kMath##FName) { \
return false; \
} \
DCHECK_EQ(shared->GetCode(), \
DCHECK_EQ(shared.GetCode(), \
isolate->builtins()->builtin(Builtins::kMath##FName)); \
}
STDLIB_MATH_FUNCTION_LIST(STDLIB_MATH_FUNC)

View File

@ -310,8 +310,8 @@ Scope* Scope::DeserializeScopeChain(Isolate* isolate, Zone* zone,
Scope* innermost_scope = nullptr;
Scope* outer_scope = nullptr;
while (!scope_info.is_null()) {
if (scope_info->scope_type() == WITH_SCOPE) {
if (scope_info->IsDebugEvaluateScope()) {
if (scope_info.scope_type() == WITH_SCOPE) {
if (scope_info.IsDebugEvaluateScope()) {
outer_scope = new (zone)
DeclarationScope(zone, FUNCTION_SCOPE, handle(scope_info, isolate));
outer_scope->set_is_debug_evaluate_scope();
@ -321,46 +321,46 @@ Scope* Scope::DeserializeScopeChain(Isolate* isolate, Zone* zone,
new (zone) Scope(zone, WITH_SCOPE, handle(scope_info, isolate));
}
} else if (scope_info->scope_type() == SCRIPT_SCOPE) {
} else if (scope_info.scope_type() == SCRIPT_SCOPE) {
// If we reach a script scope, it's the outermost scope. Install the
// scope info of this script context onto the existing script scope to
// avoid nesting script scopes.
if (deserialization_mode == DeserializationMode::kIncludingVariables) {
script_scope->SetScriptScopeInfo(handle(scope_info, isolate));
}
DCHECK(!scope_info->HasOuterScopeInfo());
DCHECK(!scope_info.HasOuterScopeInfo());
break;
} else if (scope_info->scope_type() == FUNCTION_SCOPE) {
} else if (scope_info.scope_type() == FUNCTION_SCOPE) {
outer_scope = new (zone)
DeclarationScope(zone, FUNCTION_SCOPE, handle(scope_info, isolate));
if (scope_info->IsAsmModule()) {
if (scope_info.IsAsmModule()) {
outer_scope->AsDeclarationScope()->set_is_asm_module();
}
} else if (scope_info->scope_type() == EVAL_SCOPE) {
} else if (scope_info.scope_type() == EVAL_SCOPE) {
outer_scope = new (zone)
DeclarationScope(zone, EVAL_SCOPE, handle(scope_info, isolate));
} else if (scope_info->scope_type() == CLASS_SCOPE) {
} else if (scope_info.scope_type() == CLASS_SCOPE) {
outer_scope = new (zone)
ClassScope(zone, ast_value_factory, handle(scope_info, isolate));
} else if (scope_info->scope_type() == BLOCK_SCOPE) {
if (scope_info->is_declaration_scope()) {
} else if (scope_info.scope_type() == BLOCK_SCOPE) {
if (scope_info.is_declaration_scope()) {
outer_scope = new (zone)
DeclarationScope(zone, BLOCK_SCOPE, handle(scope_info, isolate));
} else {
outer_scope =
new (zone) Scope(zone, BLOCK_SCOPE, handle(scope_info, isolate));
}
} else if (scope_info->scope_type() == MODULE_SCOPE) {
} else if (scope_info.scope_type() == MODULE_SCOPE) {
outer_scope = new (zone)
ModuleScope(isolate, handle(scope_info, isolate), ast_value_factory);
} else {
DCHECK_EQ(scope_info->scope_type(), CATCH_SCOPE);
DCHECK_EQ(scope_info->ContextLocalCount(), 1);
DCHECK_EQ(scope_info->ContextLocalMode(0), VariableMode::kVar);
DCHECK_EQ(scope_info->ContextLocalInitFlag(0), kCreatedInitialized);
String name = scope_info->ContextLocalName(0);
DCHECK_EQ(scope_info.scope_type(), CATCH_SCOPE);
DCHECK_EQ(scope_info.ContextLocalCount(), 1);
DCHECK_EQ(scope_info.ContextLocalMode(0), VariableMode::kVar);
DCHECK_EQ(scope_info.ContextLocalInitFlag(0), kCreatedInitialized);
String name = scope_info.ContextLocalName(0);
MaybeAssignedFlag maybe_assigned =
scope_info->ContextLocalMaybeAssignedFlag(0);
scope_info.ContextLocalMaybeAssignedFlag(0);
outer_scope = new (zone)
Scope(zone, ast_value_factory->GetString(handle(name, isolate)),
maybe_assigned, handle(scope_info, isolate));
@ -373,8 +373,8 @@ Scope* Scope::DeserializeScopeChain(Isolate* isolate, Zone* zone,
}
current_scope = outer_scope;
if (innermost_scope == nullptr) innermost_scope = current_scope;
scope_info = scope_info->HasOuterScopeInfo() ? scope_info->OuterScopeInfo()
: ScopeInfo();
scope_info = scope_info.HasOuterScopeInfo() ? scope_info.OuterScopeInfo()
: ScopeInfo();
}
if (deserialization_mode == DeserializationMode::kIncludingVariables &&

View File

@ -152,7 +152,7 @@ void Accessors::ArrayLengthGetter(
DisallowHeapAllocation no_allocation;
HandleScope scope(isolate);
JSArray holder = JSArray::cast(*Utils::OpenHandle(*info.Holder()));
Object result = holder->length();
Object result = holder.length();
info.GetReturnValue().Set(Utils::ToLocal(Handle<Object>(result, isolate)));
}
@ -180,7 +180,7 @@ void Accessors::ArrayLengthSetter(
}
if (!was_readonly && V8_UNLIKELY(JSArray::HasReadOnlyLength(array)) &&
length != array->length()->Number()) {
length != array->length().Number()) {
// AnythingToArrayLength() may have called setter re-entrantly and modified
// its property descriptor. Don't perform this check if "length" was
// previously readonly, as this may have been called during
@ -200,7 +200,7 @@ void Accessors::ArrayLengthSetter(
JSArray::SetLength(array, length);
uint32_t actual_new_len = 0;
CHECK(array->length()->ToArrayLength(&actual_new_len));
CHECK(array->length().ToArrayLength(&actual_new_len));
// Fail if there were non-deletable elements.
if (actual_new_len != length) {
if (info.ShouldThrowOnError()) {
@ -233,8 +233,7 @@ void Accessors::ModuleNamespaceEntryGetter(
JSModuleNamespace holder =
JSModuleNamespace::cast(*Utils::OpenHandle(*info.Holder()));
Handle<Object> result;
if (!holder
->GetExport(isolate, Handle<String>::cast(Utils::OpenHandle(*name)))
if (!holder.GetExport(isolate, Handle<String>::cast(Utils::OpenHandle(*name)))
.ToHandle(&result)) {
isolate->OptionalRescheduleException(false);
} else {
@ -285,12 +284,12 @@ void Accessors::StringLengthGetter(
// in the hierarchy, in this case for String values.
Object value = *Utils::OpenHandle(*v8::Local<v8::Value>(info.This()));
if (!value->IsString()) {
if (!value.IsString()) {
// Not a string value. That means that we either got a String wrapper or
// a Value with a String wrapper in its prototype chain.
value = JSValue::cast(*Utils::OpenHandle(*info.Holder()))->value();
value = JSValue::cast(*Utils::OpenHandle(*info.Holder())).value();
}
Object result = Smi::FromInt(String::cast(value)->length());
Object result = Smi::FromInt(String::cast(value).length());
info.GetReturnValue().Set(Utils::ToLocal(Handle<Object>(result, isolate)));
}
@ -479,10 +478,10 @@ Handle<JSObject> GetFrameArguments(Isolate* isolate,
DCHECK(array->length() == length);
for (int i = 0; i < length; i++) {
Object value = frame->GetParameter(i);
if (value->IsTheHole(isolate)) {
if (value.IsTheHole(isolate)) {
// Generators currently use holes as dummy arguments when resuming. We
// must not leak those.
DCHECK(IsResumableFunction(function->shared()->kind()));
DCHECK(IsResumableFunction(function->shared().kind()));
value = ReadOnlyRoots(isolate).undefined_value();
}
array->set(i, value);
@ -516,7 +515,7 @@ void Accessors::FunctionArgumentsGetter(
Handle<JSFunction> function =
Handle<JSFunction>::cast(Utils::OpenHandle(*info.Holder()));
Handle<Object> result = isolate->factory()->null_value();
if (!function->shared()->native()) {
if (!function->shared().native()) {
// Find the top invocation of the function by traversing frames.
for (JavaScriptFrameIterator it(isolate); !it.done(); it.Advance()) {
JavaScriptFrame* frame = it.frame();
@ -541,7 +540,7 @@ Handle<AccessorInfo> Accessors::MakeFunctionArgumentsInfo(Isolate* isolate) {
static inline bool AllowAccessToFunction(Context current_context,
JSFunction function) {
return current_context->HasSameSecurityTokenAs(function->context());
return current_context.HasSameSecurityTokenAs(function.context());
}
class FrameFunctionIterator {
@ -565,7 +564,7 @@ class FrameFunctionIterator {
bool FindNextNonTopLevel() {
do {
if (!next().ToHandle(&function_)) return false;
} while (function_->shared()->is_toplevel());
} while (function_->shared().is_toplevel());
return true;
}
@ -574,8 +573,8 @@ class FrameFunctionIterator {
// unless directly exposed, in which case the native flag is set on them.
// Returns true if one is found, and false if the iterator ends before.
bool FindFirstNativeOrUserJavaScript() {
while (!function_->shared()->native() &&
!function_->shared()->IsUserJavaScript()) {
while (!function_->shared().native() &&
!function_->shared().IsUserJavaScript()) {
if (!next().ToHandle(&function_)) return false;
}
return true;
@ -646,7 +645,7 @@ class FrameFunctionIterator {
MaybeHandle<JSFunction> FindCaller(Isolate* isolate,
Handle<JSFunction> function) {
FrameFunctionIterator it(isolate);
if (function->shared()->native()) {
if (function->shared().native()) {
return MaybeHandle<JSFunction>();
}
// Find the function from the frames. Return null in case no frame
@ -673,7 +672,7 @@ MaybeHandle<JSFunction> FindCaller(Isolate* isolate,
// Censor if the caller is not a sloppy mode function.
// Change from ES5, which used to throw, see:
// https://bugs.ecmascript.org/show_bug.cgi?id=310
if (is_strict(caller->shared()->language_mode())) {
if (is_strict(caller->shared().language_mode())) {
return MaybeHandle<JSFunction>();
}
// Don't return caller from another security context.

View File

@ -1343,7 +1343,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ ldr(r2, MemOperand(r2));
__ bind(&trampoline_loaded);
__ add(lr, r2, Operand(interpreter_entry_return_pc_offset->value()));
__ add(lr, r2, Operand(interpreter_entry_return_pc_offset.value()));
// Initialize the dispatch table register.
__ Move(

View File

@ -1482,7 +1482,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ Ldr(x1, MemOperand(x1));
__ Bind(&trampoline_loaded);
__ Add(lr, x1, Operand(interpreter_entry_return_pc_offset->value()));
__ Add(lr, x1, Operand(interpreter_entry_return_pc_offset.value()));
// Initialize the dispatch table register.
__ Mov(

View File

@ -23,23 +23,23 @@ namespace {
// TODO(dcarney): CallOptimization duplicates this logic, merge.
JSReceiver GetCompatibleReceiver(Isolate* isolate, FunctionTemplateInfo info,
JSReceiver receiver) {
Object recv_type = info->signature();
Object recv_type = info.signature();
// No signature, return holder.
if (!recv_type->IsFunctionTemplateInfo()) return receiver;
if (!recv_type.IsFunctionTemplateInfo()) return receiver;
// A Proxy cannot have been created from the signature template.
if (!receiver->IsJSObject()) return JSReceiver();
if (!receiver.IsJSObject()) return JSReceiver();
JSObject js_obj_receiver = JSObject::cast(receiver);
FunctionTemplateInfo signature = FunctionTemplateInfo::cast(recv_type);
// Check the receiver. Fast path for receivers with no hidden prototypes.
if (signature->IsTemplateFor(js_obj_receiver)) return receiver;
if (!js_obj_receiver->map()->has_hidden_prototype()) return JSReceiver();
if (signature.IsTemplateFor(js_obj_receiver)) return receiver;
if (!js_obj_receiver.map().has_hidden_prototype()) return JSReceiver();
for (PrototypeIterator iter(isolate, js_obj_receiver, kStartAtPrototype,
PrototypeIterator::END_AT_NON_HIDDEN);
!iter.IsAtEnd(); iter.Advance()) {
JSObject current = iter.GetCurrent<JSObject>();
if (signature->IsTemplateFor(current)) return current;
if (signature.IsTemplateFor(current)) return current;
}
return JSReceiver();
}
@ -53,7 +53,7 @@ V8_WARN_UNUSED_RESULT MaybeHandle<Object> HandleApiCallHelper(
JSReceiver raw_holder;
if (is_construct) {
DCHECK(args.receiver()->IsTheHole(isolate));
if (fun_data->GetInstanceTemplate()->IsUndefined(isolate)) {
if (fun_data->GetInstanceTemplate().IsUndefined(isolate)) {
v8::Local<ObjectTemplate> templ =
ObjectTemplate::New(reinterpret_cast<v8::Isolate*>(isolate),
ToApiHandle<v8::FunctionTemplate>(fun_data));
@ -98,10 +98,10 @@ V8_WARN_UNUSED_RESULT MaybeHandle<Object> HandleApiCallHelper(
}
Object raw_call_data = fun_data->call_code();
if (!raw_call_data->IsUndefined(isolate)) {
DCHECK(raw_call_data->IsCallHandlerInfo());
if (!raw_call_data.IsUndefined(isolate)) {
DCHECK(raw_call_data.IsCallHandlerInfo());
CallHandlerInfo call_data = CallHandlerInfo::cast(raw_call_data);
Object data_obj = call_data->data();
Object data_obj = call_data.data();
FunctionCallbackArguments custom(isolate, data_obj, *function, raw_holder,
*new_target, args.address_of_arg_at(1),
@ -129,7 +129,7 @@ BUILTIN(HandleApiCall) {
Handle<JSFunction> function = args.target();
Handle<Object> receiver = args.receiver();
Handle<HeapObject> new_target = args.new_target();
Handle<FunctionTemplateInfo> fun_data(function->shared()->get_api_func_data(),
Handle<FunctionTemplateInfo> fun_data(function->shared().get_api_func_data(),
isolate);
if (new_target->IsJSReceiver()) {
RETURN_RESULT_OR_FAILURE(
@ -171,12 +171,12 @@ MaybeHandle<Object> Builtins::InvokeApiFunction(Isolate* isolate,
RuntimeCallCounterId::kInvokeApiFunction);
DCHECK(function->IsFunctionTemplateInfo() ||
(function->IsJSFunction() &&
JSFunction::cast(*function)->shared()->IsApiFunction()));
JSFunction::cast(*function).shared().IsApiFunction()));
// Do proper receiver conversion for non-strict mode api functions.
if (!is_construct && !receiver->IsJSReceiver()) {
if (function->IsFunctionTemplateInfo() ||
is_sloppy(JSFunction::cast(*function)->shared()->language_mode())) {
is_sloppy(JSFunction::cast(*function).shared().language_mode())) {
ASSIGN_RETURN_ON_EXCEPTION(isolate, receiver,
Object::ConvertReceiver(isolate, receiver),
Object);
@ -191,7 +191,7 @@ MaybeHandle<Object> Builtins::InvokeApiFunction(Isolate* isolate,
Handle<FunctionTemplateInfo> fun_data =
function->IsFunctionTemplateInfo()
? Handle<FunctionTemplateInfo>::cast(function)
: handle(JSFunction::cast(*function)->shared()->get_api_func_data(),
: handle(JSFunction::cast(*function).shared().get_api_func_data(),
isolate);
// Construct BuiltinArguments object:
// new target, function, arguments reversed, receiver.
@ -211,8 +211,8 @@ MaybeHandle<Object> Builtins::InvokeApiFunction(Isolate* isolate,
}
DCHECK_EQ(cursor, BuiltinArguments::kPaddingOffset);
argv[BuiltinArguments::kPaddingOffset] =
ReadOnlyRoots(isolate).the_hole_value()->ptr();
argv[BuiltinArguments::kArgcOffset] = Smi::FromInt(frame_argc)->ptr();
ReadOnlyRoots(isolate).the_hole_value().ptr();
argv[BuiltinArguments::kArgcOffset] = Smi::FromInt(frame_argc).ptr();
argv[BuiltinArguments::kTargetOffset] = function->ptr();
argv[BuiltinArguments::kNewTargetOffset] = new_target->ptr();
MaybeHandle<Object> result;
@ -254,12 +254,12 @@ V8_WARN_UNUSED_RESULT static Object HandleApiCallAsFunctionOrConstructor(
// Get the invocation callback from the function descriptor that was
// used to create the called object.
DCHECK(obj->map()->is_callable());
JSFunction constructor = JSFunction::cast(obj->map()->GetConstructor());
DCHECK(constructor->shared()->IsApiFunction());
DCHECK(obj.map().is_callable());
JSFunction constructor = JSFunction::cast(obj.map().GetConstructor());
DCHECK(constructor.shared().IsApiFunction());
Object handler =
constructor->shared()->get_api_func_data()->GetInstanceCallHandler();
DCHECK(!handler->IsUndefined(isolate));
constructor.shared().get_api_func_data().GetInstanceCallHandler();
DCHECK(!handler.IsUndefined(isolate));
CallHandlerInfo call_data = CallHandlerInfo::cast(handler);
// Get the data for the call and perform the callback.
@ -267,7 +267,7 @@ V8_WARN_UNUSED_RESULT static Object HandleApiCallAsFunctionOrConstructor(
{
HandleScope scope(isolate);
LOG(isolate, ApiObjectAccess("call non-function", obj));
FunctionCallbackArguments custom(isolate, call_data->data(), constructor,
FunctionCallbackArguments custom(isolate, call_data.data(), constructor,
obj, new_target, args.address_of_arg_at(1),
args.length() - 1);
Handle<Object> result_handle = custom.Call(call_data);

View File

@ -29,8 +29,8 @@ inline bool IsJSArrayFastElementMovingAllowed(Isolate* isolate,
}
inline bool HasSimpleElements(JSObject current) {
return !current->map()->IsCustomElementsReceiverMap() &&
!current->GetElementsAccessor()->HasAccessors(current);
return !current.map().IsCustomElementsReceiverMap() &&
!current.GetElementsAccessor()->HasAccessors(current);
}
inline bool HasOnlySimpleReceiverElements(Isolate* isolate, JSObject receiver) {
@ -43,7 +43,7 @@ inline bool HasOnlySimpleElements(Isolate* isolate, JSReceiver receiver) {
DisallowHeapAllocation no_gc;
PrototypeIterator iter(isolate, receiver, kStartAtReceiver);
for (; !iter.IsAtEnd(); iter.Advance()) {
if (iter.GetCurrent()->IsJSProxy()) return false;
if (iter.GetCurrent().IsJSProxy()) return false;
JSObject current = iter.GetCurrent<JSObject>();
if (!HasSimpleElements(current)) return false;
}
@ -70,8 +70,8 @@ void MatchArrayElementsKindToArguments(Isolate* isolate, Handle<JSArray> array,
int last_arg_index = std::min(first_arg_index + num_arguments, args_length);
for (int i = first_arg_index; i < last_arg_index; i++) {
Object arg = (*args)[i];
if (arg->IsHeapObject()) {
if (arg->IsHeapNumber()) {
if (arg.IsHeapObject()) {
if (arg.IsHeapNumber()) {
target_kind = PACKED_DOUBLE_ELEMENTS;
} else {
target_kind = PACKED_ELEMENTS;
@ -101,7 +101,7 @@ inline bool EnsureJSArrayWithWritableFastElements(Isolate* isolate,
Handle<JSArray> array = Handle<JSArray>::cast(receiver);
ElementsKind origin_kind = array->GetElementsKind();
if (IsDictionaryElementsKind(origin_kind)) return false;
if (!array->map()->is_extensible()) return false;
if (!array->map().is_extensible()) return false;
if (args == nullptr) return true;
// If there may be elements accessors in the prototype chain, the fast path
@ -148,7 +148,7 @@ V8_WARN_UNUSED_RESULT Maybe<double> GetLengthProperty(
Isolate* isolate, Handle<JSReceiver> receiver) {
if (receiver->IsJSArray()) {
Handle<JSArray> array = Handle<JSArray>::cast(receiver);
double length = array->length()->Number();
double length = array->length().Number();
DCHECK(0 <= length && length <= kMaxSafeInteger);
return Just(length);
@ -373,7 +373,7 @@ BUILTIN(ArrayPush) {
// Fast Elements Path
int to_add = args.length() - 1;
Handle<JSArray> array = Handle<JSArray>::cast(receiver);
uint32_t len = static_cast<uint32_t>(array->length()->Number());
uint32_t len = static_cast<uint32_t>(array->length().Number());
if (to_add == 0) return *isolate->factory()->NewNumberFromUint(len);
// Currently fixed arrays cannot grow too big, so we should never hit this.
@ -457,7 +457,7 @@ BUILTIN(ArrayPop) {
}
Handle<JSArray> array = Handle<JSArray>::cast(receiver);
uint32_t len = static_cast<uint32_t>(array->length()->Number());
uint32_t len = static_cast<uint32_t>(array->length().Number());
if (len == 0) return ReadOnlyRoots(isolate).undefined_value();
if (JSArray::HasReadOnlyLength(array)) {
@ -597,7 +597,7 @@ BUILTIN(ArrayUnshift) {
Handle<JSArray> array = Handle<JSArray>::cast(args.receiver());
// These are checked in the Torque builtin.
DCHECK(array->map()->is_extensible());
DCHECK(array->map().is_extensible());
DCHECK(!IsDictionaryElementsKind(array->GetElementsKind()));
DCHECK(IsJSArrayFastElementMovingAllowed(isolate, *array));
DCHECK(!isolate->IsAnyInitialArrayPrototype(array));
@ -644,7 +644,7 @@ class ArrayConcatVisitor {
IsFixedArrayField::encode(storage->IsFixedArray()) |
HasSimpleElementsField::encode(
storage->IsFixedArray() ||
!storage->map()->IsCustomElementsReceiverMap())) {
!storage->map().IsCustomElementsReceiverMap())) {
DCHECK(!(this->fast_elements() && !is_fixed_array()));
}
@ -708,7 +708,7 @@ class ArrayConcatVisitor {
// provided-for index range, go to dictionary mode now.
if (fast_elements() &&
index_offset_ >
static_cast<uint32_t>(FixedArrayBase::cast(*storage_)->length())) {
static_cast<uint32_t>(FixedArrayBase::cast(*storage_).length())) {
SetDictionaryMode();
}
}
@ -811,7 +811,7 @@ class ArrayConcatVisitor {
uint32_t EstimateElementCount(Isolate* isolate, Handle<JSArray> array) {
DisallowHeapAllocation no_gc;
uint32_t length = static_cast<uint32_t>(array->length()->Number());
uint32_t length = static_cast<uint32_t>(array->length().Number());
int element_count = 0;
switch (array->GetElementsKind()) {
case PACKED_SMI_ELEMENTS:
@ -828,7 +828,7 @@ uint32_t EstimateElementCount(Isolate* isolate, Handle<JSArray> array) {
int fast_length = static_cast<int>(length);
FixedArray elements = FixedArray::cast(array->elements());
for (int i = 0; i < fast_length; i++) {
if (!elements->get(i)->IsTheHole(isolate)) element_count++;
if (!elements.get(i).IsTheHole(isolate)) element_count++;
}
break;
}
@ -838,23 +838,23 @@ uint32_t EstimateElementCount(Isolate* isolate, Handle<JSArray> array) {
// a 32-bit signed integer.
DCHECK_GE(static_cast<int32_t>(FixedDoubleArray::kMaxLength), 0);
int fast_length = static_cast<int>(length);
if (array->elements()->IsFixedArray()) {
DCHECK_EQ(FixedArray::cast(array->elements())->length(), 0);
if (array->elements().IsFixedArray()) {
DCHECK_EQ(FixedArray::cast(array->elements()).length(), 0);
break;
}
FixedDoubleArray elements = FixedDoubleArray::cast(array->elements());
for (int i = 0; i < fast_length; i++) {
if (!elements->is_the_hole(i)) element_count++;
if (!elements.is_the_hole(i)) element_count++;
}
break;
}
case DICTIONARY_ELEMENTS: {
NumberDictionary dictionary = NumberDictionary::cast(array->elements());
int capacity = dictionary->Capacity();
int capacity = dictionary.Capacity();
ReadOnlyRoots roots(isolate);
for (int i = 0; i < capacity; i++) {
Object key = dictionary->KeyAt(i);
if (dictionary->IsKey(roots, key)) {
Object key = dictionary.KeyAt(i);
if (dictionary.IsKey(roots, key)) {
element_count++;
}
}
@ -893,10 +893,10 @@ void CollectElementIndices(Isolate* isolate, Handle<JSObject> object,
case HOLEY_ELEMENTS: {
DisallowHeapAllocation no_gc;
FixedArray elements = FixedArray::cast(object->elements());
uint32_t length = static_cast<uint32_t>(elements->length());
uint32_t length = static_cast<uint32_t>(elements.length());
if (range < length) length = range;
for (uint32_t i = 0; i < length; i++) {
if (!elements->get(i)->IsTheHole(isolate)) {
if (!elements.get(i).IsTheHole(isolate)) {
indices->push_back(i);
}
}
@ -904,8 +904,8 @@ void CollectElementIndices(Isolate* isolate, Handle<JSObject> object,
}
case HOLEY_DOUBLE_ELEMENTS:
case PACKED_DOUBLE_ELEMENTS: {
if (object->elements()->IsFixedArray()) {
DCHECK_EQ(object->elements()->length(), 0);
if (object->elements().IsFixedArray()) {
DCHECK_EQ(object->elements().length(), 0);
break;
}
Handle<FixedDoubleArray> elements(
@ -922,13 +922,13 @@ void CollectElementIndices(Isolate* isolate, Handle<JSObject> object,
case DICTIONARY_ELEMENTS: {
DisallowHeapAllocation no_gc;
NumberDictionary dict = NumberDictionary::cast(object->elements());
uint32_t capacity = dict->Capacity();
uint32_t capacity = dict.Capacity();
ReadOnlyRoots roots(isolate);
FOR_WITH_HANDLE_SCOPE(isolate, uint32_t, j = 0, j, j < capacity, j++, {
Object k = dict->KeyAt(j);
if (!dict->IsKey(roots, k)) continue;
DCHECK(k->IsNumber());
uint32_t index = static_cast<uint32_t>(k->Number());
Object k = dict.KeyAt(j);
if (!dict.IsKey(roots, k)) continue;
DCHECK(k.IsNumber());
uint32_t index = static_cast<uint32_t>(k.Number());
if (index < range) {
indices->push_back(index);
}
@ -972,7 +972,7 @@ void CollectElementIndices(Isolate* isolate, Handle<JSObject> object,
case SLOW_STRING_WRAPPER_ELEMENTS: {
DCHECK(object->IsJSValue());
Handle<JSValue> js_value = Handle<JSValue>::cast(object);
DCHECK(js_value->value()->IsString());
DCHECK(js_value->value().IsString());
Handle<String> string(String::cast(js_value->value()), isolate);
uint32_t length = static_cast<uint32_t>(string->length());
uint32_t i = 0;
@ -1033,7 +1033,7 @@ bool IterateElements(Isolate* isolate, Handle<JSReceiver> receiver,
if (receiver->IsJSArray()) {
Handle<JSArray> array = Handle<JSArray>::cast(receiver);
length = static_cast<uint32_t>(array->length()->Number());
length = static_cast<uint32_t>(array->length().Number());
} else {
Handle<Object> val;
ASSIGN_RETURN_ON_EXCEPTION_VALUE(
@ -1096,8 +1096,8 @@ bool IterateElements(Isolate* isolate, Handle<JSReceiver> receiver,
if (length == 0) break;
// Run through the elements FixedArray and use HasElement and GetElement
// to check the prototype for missing elements.
if (array->elements()->IsFixedArray()) {
DCHECK_EQ(array->elements()->length(), 0);
if (array->elements().IsFixedArray()) {
DCHECK_EQ(array->elements().length(), 0);
break;
}
Handle<FixedDoubleArray> elements(
@ -1197,7 +1197,7 @@ Object Slow_ArrayConcat(BuiltinArguments* args, Handle<Object> species,
Isolate* isolate) {
int argument_count = args->length();
bool is_array_species = *species == isolate->context()->array_function();
bool is_array_species = *species == isolate->context().array_function();
// Pass 1: estimate the length and number of elements of the result.
// The actual length can be larger if any of the arguments have getters
@ -1214,7 +1214,7 @@ Object Slow_ArrayConcat(BuiltinArguments* args, Handle<Object> species,
uint32_t element_estimate;
if (obj->IsJSArray()) {
Handle<JSArray> array(Handle<JSArray>::cast(obj));
length_estimate = static_cast<uint32_t>(array->length()->Number());
length_estimate = static_cast<uint32_t>(array->length().Number());
if (length_estimate != 0) {
ElementsKind array_kind =
GetPackedElementsKind(array->GetElementsKind());
@ -1271,16 +1271,16 @@ Object Slow_ArrayConcat(BuiltinArguments* args, Handle<Object> species,
} else {
DisallowHeapAllocation no_gc;
JSArray array = JSArray::cast(*obj);
uint32_t length = static_cast<uint32_t>(array->length()->Number());
switch (array->GetElementsKind()) {
uint32_t length = static_cast<uint32_t>(array.length().Number());
switch (array.GetElementsKind()) {
case HOLEY_DOUBLE_ELEMENTS:
case PACKED_DOUBLE_ELEMENTS: {
// Empty array is FixedArray but not FixedDoubleArray.
if (length == 0) break;
FixedDoubleArray elements =
FixedDoubleArray::cast(array->elements());
FixedDoubleArray::cast(array.elements());
for (uint32_t i = 0; i < length; i++) {
if (elements->is_the_hole(i)) {
if (elements.is_the_hole(i)) {
// TODO(jkummerow/verwaest): We could be a bit more clever
// here: Check if there are no elements/getters on the
// prototype chain, and if so, allow creation of a holey
@ -1289,7 +1289,7 @@ Object Slow_ArrayConcat(BuiltinArguments* args, Handle<Object> species,
failure = true;
break;
}
double double_value = elements->get_scalar(i);
double double_value = elements.get_scalar(i);
double_storage->set(j, double_value);
j++;
}
@ -1298,9 +1298,9 @@ Object Slow_ArrayConcat(BuiltinArguments* args, Handle<Object> species,
case HOLEY_SMI_ELEMENTS:
case PACKED_SMI_ELEMENTS: {
Object the_hole = ReadOnlyRoots(isolate).the_hole_value();
FixedArray elements(FixedArray::cast(array->elements()));
FixedArray elements(FixedArray::cast(array.elements()));
for (uint32_t i = 0; i < length; i++) {
Object element = elements->get(i);
Object element = elements.get(i);
if (element == the_hole) {
failure = true;
break;
@ -1385,9 +1385,8 @@ bool IsSimpleArray(Isolate* isolate, Handle<JSArray> obj) {
DisallowHeapAllocation no_gc;
Map map = obj->map();
// If there is only the 'length' property we are fine.
if (map->prototype() ==
isolate->native_context()->initial_array_prototype() &&
map->NumberOfOwnDescriptors() == 1) {
if (map.prototype() == isolate->native_context()->initial_array_prototype() &&
map.NumberOfOwnDescriptors() == 1) {
return true;
}
// TODO(cbruni): slower lookup for array subclasses and support slow
@ -1414,12 +1413,12 @@ MaybeHandle<JSArray> Fast_ArrayConcat(Isolate* isolate,
// and calculating total length.
for (int i = 0; i < n_arguments; i++) {
Object arg = (*args)[i];
if (!arg->IsJSArray()) return MaybeHandle<JSArray>();
if (!arg.IsJSArray()) return MaybeHandle<JSArray>();
if (!HasOnlySimpleReceiverElements(isolate, JSObject::cast(arg))) {
return MaybeHandle<JSArray>();
}
// TODO(cbruni): support fast concatenation of DICTIONARY_ELEMENTS.
if (!JSObject::cast(arg)->HasFastElements()) {
if (!JSObject::cast(arg).HasFastElements()) {
return MaybeHandle<JSArray>();
}
Handle<JSArray> array(JSArray::cast(arg), isolate);

View File

@ -43,7 +43,7 @@ Object ConstructBuffer(Isolate* isolate, Handle<JSFunction> target,
isolate, NewRangeError(MessageTemplate::kInvalidArrayBufferLength));
}
SharedFlag shared_flag =
(*target == target->native_context()->array_buffer_fun())
(*target == target->native_context().array_buffer_fun())
? SharedFlag::kNotShared
: SharedFlag::kShared;
if (!JSArrayBuffer::SetupAllocatingData(Handle<JSArrayBuffer>::cast(result),
@ -61,12 +61,12 @@ Object ConstructBuffer(Isolate* isolate, Handle<JSFunction> target,
BUILTIN(ArrayBufferConstructor) {
HandleScope scope(isolate);
Handle<JSFunction> target = args.target();
DCHECK(*target == target->native_context()->array_buffer_fun() ||
*target == target->native_context()->shared_array_buffer_fun());
DCHECK(*target == target->native_context().array_buffer_fun() ||
*target == target->native_context().shared_array_buffer_fun());
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewTypeError(MessageTemplate::kConstructorNotFunction,
handle(target->shared()->Name(), isolate)));
handle(target->shared().Name(), isolate)));
}
// [[Construct]]
Handle<JSReceiver> new_target = Handle<JSReceiver>::cast(args.new_target());
@ -120,7 +120,7 @@ BUILTIN(ArrayBufferIsView) {
SealHandleScope shs(isolate);
DCHECK_EQ(2, args.length());
Object arg = args[1];
return isolate->heap()->ToBoolean(arg->IsJSArrayBufferView());
return isolate->heap()->ToBoolean(arg.IsJSArrayBufferView());
}
static Object SliceHelper(BuiltinArguments args, Isolate* isolate,

View File

@ -83,8 +83,8 @@ MaybeHandle<BigInt> ThisBigIntValue(Isolate* isolate, Handle<Object> value,
if (value->IsJSValue()) {
// 2a. Assert: value.[[BigIntData]] is a BigInt value.
// 2b. Return value.[[BigIntData]].
Object data = JSValue::cast(*value)->value();
if (data->IsBigInt()) return handle(BigInt::cast(data), isolate);
Object data = JSValue::cast(*value).value();
if (data.IsBigInt()) return handle(BigInt::cast(data), isolate);
}
// 3. Throw a TypeError exception.
THROW_NEW_ERROR(

View File

@ -832,7 +832,7 @@ void CollectionsBuiltinsAssembler::SameValueZeroSmi(Node* key_smi,
void CollectionsBuiltinsAssembler::BranchIfMapIteratorProtectorValid(
Label* if_true, Label* if_false) {
Node* protector_cell = LoadRoot(RootIndex::kMapIteratorProtector);
DCHECK(isolate()->heap()->map_iterator_protector()->IsPropertyCell());
DCHECK(isolate()->heap()->map_iterator_protector().IsPropertyCell());
Branch(WordEqual(LoadObjectField(protector_cell, PropertyCell::kValueOffset),
SmiConstant(Isolate::kProtectorValid)),
if_true, if_false);
@ -889,7 +889,7 @@ void BranchIfIterableWithOriginalKeyOrValueMapIterator(
void CollectionsBuiltinsAssembler::BranchIfSetIteratorProtectorValid(
Label* if_true, Label* if_false) {
Node* const protector_cell = LoadRoot(RootIndex::kSetIteratorProtector);
DCHECK(isolate()->heap()->set_iterator_protector()->IsPropertyCell());
DCHECK(isolate()->heap()->set_iterator_protector().IsPropertyCell());
Branch(WordEqual(LoadObjectField(protector_cell, PropertyCell::kValueOffset),
SmiConstant(Isolate::kProtectorValid)),
if_true, if_false);

View File

@ -67,7 +67,7 @@ void LogTimerEvent(Isolate* isolate, BuiltinArguments args,
HandleScope scope(isolate);
std::unique_ptr<char[]> name;
const char* raw_name = "default";
if (args.length() > 1 && args[1]->IsString()) {
if (args.length() > 1 && args[1].IsString()) {
// Try converting the first argument to a string.
name = args.at<String>(1)->ToCString();
raw_name = name.get();
@ -119,9 +119,9 @@ void InstallContextFunction(Isolate* isolate, Handle<JSObject> target,
name_string, builtin_id, i::LanguageMode::kSloppy);
Handle<JSFunction> fun = factory->NewFunction(args);
fun->shared()->set_native(true);
fun->shared()->DontAdaptArguments();
fun->shared()->set_length(1);
fun->shared().set_native(true);
fun->shared().DontAdaptArguments();
fun->shared().set_length(1);
JSObject::AddProperty(isolate, fun, factory->console_context_id_symbol(),
handle(Smi::FromInt(context_id), isolate), NONE);

View File

@ -123,12 +123,12 @@ double ParseDateTimeString(Isolate* isolate, Handle<String> str) {
result = DateParser::Parse(isolate, str_content.ToUC16Vector(), *tmp);
}
if (!result) return std::numeric_limits<double>::quiet_NaN();
double const day = MakeDay(tmp->get(0)->Number(), tmp->get(1)->Number(),
tmp->get(2)->Number());
double const time = MakeTime(tmp->get(3)->Number(), tmp->get(4)->Number(),
tmp->get(5)->Number(), tmp->get(6)->Number());
double const day =
MakeDay(tmp->get(0).Number(), tmp->get(1).Number(), tmp->get(2).Number());
double const time = MakeTime(tmp->get(3).Number(), tmp->get(4).Number(),
tmp->get(5).Number(), tmp->get(6).Number());
double date = MakeDate(day, time);
if (tmp->get(7)->IsNull(isolate)) {
if (tmp->get(7).IsNull(isolate)) {
if (date >= -DateCache::kMaxTimeBeforeUTCInMs &&
date <= DateCache::kMaxTimeBeforeUTCInMs) {
date = isolate->date_cache()->ToUTC(static_cast<int64_t>(date));
@ -136,7 +136,7 @@ double ParseDateTimeString(Isolate* isolate, Handle<String> str) {
return std::numeric_limits<double>::quiet_NaN();
}
} else {
date -= tmp->get(7)->Number() * 1000.0;
date -= tmp->get(7).Number() * 1000.0;
}
return DateCache::TimeClip(date);
}
@ -222,7 +222,7 @@ BUILTIN(DateConstructor) {
} else if (argc == 1) {
Handle<Object> value = args.at(1);
if (value->IsJSDate()) {
time_val = Handle<JSDate>::cast(value)->value()->Number();
time_val = Handle<JSDate>::cast(value)->value().Number();
} else {
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, value,
Object::ToPrimitive(value));
@ -374,7 +374,7 @@ BUILTIN(DatePrototypeSetDate) {
Handle<Object> value = args.atOrUndefined(isolate, 1);
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, value,
Object::ToNumber(isolate, value));
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (!std::isnan(time_val)) {
int64_t const time_ms = static_cast<int64_t>(time_val);
int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms);
@ -397,8 +397,8 @@ BUILTIN(DatePrototypeSetFullYear) {
Object::ToNumber(isolate, year));
double y = year->Number(), m = 0.0, dt = 1.0;
int time_within_day = 0;
if (!std::isnan(date->value()->Number())) {
int64_t const time_ms = static_cast<int64_t>(date->value()->Number());
if (!std::isnan(date->value().Number())) {
int64_t const time_ms = static_cast<int64_t>(date->value().Number());
int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms);
int const days = isolate->date_cache()->DaysFromTime(local_time_ms);
time_within_day = isolate->date_cache()->TimeInDay(local_time_ms, days);
@ -432,7 +432,7 @@ BUILTIN(DatePrototypeSetHours) {
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, hour,
Object::ToNumber(isolate, hour));
double h = hour->Number();
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (!std::isnan(time_val)) {
int64_t const time_ms = static_cast<int64_t>(time_val);
int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms);
@ -471,7 +471,7 @@ BUILTIN(DatePrototypeSetMilliseconds) {
Handle<Object> ms = args.atOrUndefined(isolate, 1);
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, ms,
Object::ToNumber(isolate, ms));
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (!std::isnan(time_val)) {
int64_t const time_ms = static_cast<int64_t>(time_val);
int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms);
@ -493,7 +493,7 @@ BUILTIN(DatePrototypeSetMinutes) {
Handle<Object> min = args.atOrUndefined(isolate, 1);
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, min,
Object::ToNumber(isolate, min));
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (!std::isnan(time_val)) {
int64_t const time_ms = static_cast<int64_t>(time_val);
int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms);
@ -528,7 +528,7 @@ BUILTIN(DatePrototypeSetMonth) {
Handle<Object> month = args.atOrUndefined(isolate, 1);
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, month,
Object::ToNumber(isolate, month));
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (!std::isnan(time_val)) {
int64_t const time_ms = static_cast<int64_t>(time_val);
int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms);
@ -557,7 +557,7 @@ BUILTIN(DatePrototypeSetSeconds) {
Handle<Object> sec = args.atOrUndefined(isolate, 1);
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, sec,
Object::ToNumber(isolate, sec));
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (!std::isnan(time_val)) {
int64_t const time_ms = static_cast<int64_t>(time_val);
int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms);
@ -595,8 +595,8 @@ BUILTIN(DatePrototypeSetUTCDate) {
Handle<Object> value = args.atOrUndefined(isolate, 1);
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, value,
Object::ToNumber(isolate, value));
if (std::isnan(date->value()->Number())) return date->value();
int64_t const time_ms = static_cast<int64_t>(date->value()->Number());
if (std::isnan(date->value().Number())) return date->value();
int64_t const time_ms = static_cast<int64_t>(date->value().Number());
int const days = isolate->date_cache()->DaysFromTime(time_ms);
int const time_within_day = isolate->date_cache()->TimeInDay(time_ms, days);
int year, month, day;
@ -616,8 +616,8 @@ BUILTIN(DatePrototypeSetUTCFullYear) {
Object::ToNumber(isolate, year));
double y = year->Number(), m = 0.0, dt = 1.0;
int time_within_day = 0;
if (!std::isnan(date->value()->Number())) {
int64_t const time_ms = static_cast<int64_t>(date->value()->Number());
if (!std::isnan(date->value().Number())) {
int64_t const time_ms = static_cast<int64_t>(date->value().Number());
int const days = isolate->date_cache()->DaysFromTime(time_ms);
time_within_day = isolate->date_cache()->TimeInDay(time_ms, days);
int year, month, day;
@ -650,7 +650,7 @@ BUILTIN(DatePrototypeSetUTCHours) {
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, hour,
Object::ToNumber(isolate, hour));
double h = hour->Number();
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (!std::isnan(time_val)) {
int64_t const time_ms = static_cast<int64_t>(time_val);
int day = isolate->date_cache()->DaysFromTime(time_ms);
@ -688,7 +688,7 @@ BUILTIN(DatePrototypeSetUTCMilliseconds) {
Handle<Object> ms = args.atOrUndefined(isolate, 1);
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, ms,
Object::ToNumber(isolate, ms));
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (!std::isnan(time_val)) {
int64_t const time_ms = static_cast<int64_t>(time_val);
int day = isolate->date_cache()->DaysFromTime(time_ms);
@ -709,7 +709,7 @@ BUILTIN(DatePrototypeSetUTCMinutes) {
Handle<Object> min = args.atOrUndefined(isolate, 1);
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, min,
Object::ToNumber(isolate, min));
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (!std::isnan(time_val)) {
int64_t const time_ms = static_cast<int64_t>(time_val);
int day = isolate->date_cache()->DaysFromTime(time_ms);
@ -743,7 +743,7 @@ BUILTIN(DatePrototypeSetUTCMonth) {
Handle<Object> month = args.atOrUndefined(isolate, 1);
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, month,
Object::ToNumber(isolate, month));
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (!std::isnan(time_val)) {
int64_t const time_ms = static_cast<int64_t>(time_val);
int days = isolate->date_cache()->DaysFromTime(time_ms);
@ -771,7 +771,7 @@ BUILTIN(DatePrototypeSetUTCSeconds) {
Handle<Object> sec = args.atOrUndefined(isolate, 1);
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, sec,
Object::ToNumber(isolate, sec));
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (!std::isnan(time_val)) {
int64_t const time_ms = static_cast<int64_t>(time_val);
int day = isolate->date_cache()->DaysFromTime(time_ms);
@ -796,7 +796,7 @@ BUILTIN(DatePrototypeToDateString) {
HandleScope scope(isolate);
CHECK_RECEIVER(JSDate, date, "Date.prototype.toDateString");
DateBuffer buffer =
ToDateString(date->value()->Number(), isolate->date_cache(), kDateOnly);
ToDateString(date->value().Number(), isolate->date_cache(), kDateOnly);
RETURN_RESULT_OR_FAILURE(
isolate, isolate->factory()->NewStringFromUtf8(VectorOf(buffer)));
}
@ -805,7 +805,7 @@ BUILTIN(DatePrototypeToDateString) {
BUILTIN(DatePrototypeToISOString) {
HandleScope scope(isolate);
CHECK_RECEIVER(JSDate, date, "Date.prototype.toISOString");
double const time_val = date->value()->Number();
double const time_val = date->value().Number();
if (std::isnan(time_val)) {
THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewRangeError(MessageTemplate::kInvalidTimeValue));
@ -833,7 +833,7 @@ BUILTIN(DatePrototypeToString) {
HandleScope scope(isolate);
CHECK_RECEIVER(JSDate, date, "Date.prototype.toString");
DateBuffer buffer =
ToDateString(date->value()->Number(), isolate->date_cache());
ToDateString(date->value().Number(), isolate->date_cache());
RETURN_RESULT_OR_FAILURE(
isolate, isolate->factory()->NewStringFromUtf8(VectorOf(buffer)));
}
@ -843,7 +843,7 @@ BUILTIN(DatePrototypeToTimeString) {
HandleScope scope(isolate);
CHECK_RECEIVER(JSDate, date, "Date.prototype.toTimeString");
DateBuffer buffer =
ToDateString(date->value()->Number(), isolate->date_cache(), kTimeOnly);
ToDateString(date->value().Number(), isolate->date_cache(), kTimeOnly);
RETURN_RESULT_OR_FAILURE(
isolate, isolate->factory()->NewStringFromUtf8(VectorOf(buffer)));
}
@ -908,7 +908,7 @@ BUILTIN(DatePrototypeToLocaleTimeString) {
BUILTIN(DatePrototypeToUTCString) {
HandleScope scope(isolate);
CHECK_RECEIVER(JSDate, date, "Date.prototype.toUTCString");
double const time_val = date->value()->Number();
double const time_val = date->value().Number();
if (std::isnan(time_val)) {
return *isolate->factory()->NewStringFromAsciiChecked("Invalid Date");
}
@ -929,7 +929,7 @@ BUILTIN(DatePrototypeToUTCString) {
BUILTIN(DatePrototypeGetYear) {
HandleScope scope(isolate);
CHECK_RECEIVER(JSDate, date, "Date.prototype.getYear");
double time_val = date->value()->Number();
double time_val = date->value().Number();
if (std::isnan(time_val)) return date->value();
int64_t time_ms = static_cast<int64_t>(time_val);
int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms);
@ -954,8 +954,8 @@ BUILTIN(DatePrototypeSetYear) {
}
}
int time_within_day = 0;
if (!std::isnan(date->value()->Number())) {
int64_t const time_ms = static_cast<int64_t>(date->value()->Number());
if (!std::isnan(date->value().Number())) {
int64_t const time_ms = static_cast<int64_t>(date->value().Number());
int64_t local_time_ms = isolate->date_cache()->ToLocal(time_ms);
int const days = isolate->date_cache()->DaysFromTime(local_time_ms);
time_within_day = isolate->date_cache()->TimeInDay(local_time_ms, days);

View File

@ -39,7 +39,7 @@ BUILTIN(ExtrasUtilsUncurryThis) {
DCHECK_EQ(2, args.length());
Handle<JSFunction> function = args.at<JSFunction>(1);
Handle<NativeContext> native_context(isolate->context()->native_context(),
Handle<NativeContext> native_context(isolate->context().native_context(),
isolate);
Handle<Context> context = isolate->factory()->NewBuiltinContext(
native_context,
@ -64,7 +64,7 @@ BUILTIN(ExtrasUtilsUncurryThis) {
BUILTIN(ExtrasUtilsCallReflectApply) {
HandleScope scope(isolate);
Handle<Context> context(isolate->context(), isolate);
Handle<NativeContext> native_context(isolate->context()->native_context(),
Handle<NativeContext> native_context(isolate->context().native_context(),
isolate);
Handle<JSFunction> function(
JSFunction::cast(context->get(

View File

@ -90,7 +90,7 @@ MaybeHandle<Object> CreateDynamicFunction(Isolate* isolate,
Execution::Call(isolate, function, target_global_proxy, 0, nullptr),
Object);
function = Handle<JSFunction>::cast(result);
function->shared()->set_name_should_print_as_anonymous(true);
function->shared().set_name_should_print_as_anonymous(true);
}
// If new.target is equal to target then the function created
@ -149,7 +149,7 @@ BUILTIN(AsyncFunctionConstructor) {
// determined after the function is resumed.
Handle<JSFunction> func = Handle<JSFunction>::cast(maybe_func);
Handle<Script> script =
handle(Script::cast(func->shared()->script()), isolate);
handle(Script::cast(func->shared().script()), isolate);
int position = Script::GetEvalPosition(isolate, script);
USE(position);
@ -168,7 +168,7 @@ BUILTIN(AsyncGeneratorFunctionConstructor) {
// determined after the function is resumed.
Handle<JSFunction> func = Handle<JSFunction>::cast(maybe_func);
Handle<Script> script =
handle(Script::cast(func->shared()->script()), isolate);
handle(Script::cast(func->shared().script()), isolate);
int position = Script::GetEvalPosition(isolate, script);
USE(position);
@ -279,7 +279,7 @@ BUILTIN(FunctionPrototypeToString) {
// With the revised toString behavior, all callable objects are valid
// receivers for this method.
if (receiver->IsJSReceiver() &&
JSReceiver::cast(*receiver)->map()->is_callable()) {
JSReceiver::cast(*receiver).map().is_callable()) {
return ReadOnlyRoots(isolate).function_native_code_string();
}
THROW_NEW_ERROR_RETURN_FAILURE(

View File

@ -227,7 +227,7 @@ namespace {
Handle<JSFunction> CreateBoundFunction(Isolate* isolate,
Handle<JSObject> object,
Builtins::Name builtin_id, int len) {
Handle<NativeContext> native_context(isolate->context()->native_context(),
Handle<NativeContext> native_context(isolate->context().native_context(),
isolate);
Handle<Context> context = isolate->factory()->NewBuiltinContext(
native_context,
@ -483,7 +483,7 @@ BUILTIN(NumberFormatInternalFormatNumber) {
}
icu::number::LocalizedNumberFormatter* icu_localized_number_formatter =
number_format->icu_number_formatter()->raw();
number_format->icu_number_formatter().raw();
CHECK_NOT_NULL(icu_localized_number_formatter);
// Return FormatNumber(nf, x).
@ -970,7 +970,7 @@ BUILTIN(CollatorInternalCompare) {
Object::ToString(isolate, y));
// 7. Return CompareStrings(collator, X, Y).
icu::Collator* icu_collator = collator->icu_collator()->raw();
icu::Collator* icu_collator = collator->icu_collator().raw();
CHECK_NOT_NULL(icu_collator);
return *Intl::CompareStrings(isolate, *icu_collator, string_x, string_y);
}
@ -1072,7 +1072,7 @@ BUILTIN(SegmenterPrototypeSegment) {
RETURN_RESULT_OR_FAILURE(
isolate,
JSSegmentIterator::Create(
isolate, segmenter_holder->icu_break_iterator()->raw()->clone(),
isolate, segmenter_holder->icu_break_iterator().raw()->clone(),
segmenter_holder->granularity(), text));
}

View File

@ -163,13 +163,13 @@ BUILTIN(AtomicsWait) {
double timeout_number;
if (timeout->IsUndefined(isolate)) {
timeout_number = ReadOnlyRoots(isolate).infinity_value()->Number();
timeout_number = ReadOnlyRoots(isolate).infinity_value().Number();
} else {
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, timeout,
Object::ToNumber(isolate, timeout));
timeout_number = timeout->Number();
if (std::isnan(timeout_number))
timeout_number = ReadOnlyRoots(isolate).infinity_value()->Number();
timeout_number = ReadOnlyRoots(isolate).infinity_value().Number();
else if (timeout_number < 0)
timeout_number = 0;
}

View File

@ -2023,7 +2023,7 @@ void StringBuiltinsAssembler::BranchIfStringPrimitiveWithNoCustomIteration(
// Check that the String iterator hasn't been modified in a way that would
// affect iteration.
Node* protector_cell = LoadRoot(RootIndex::kStringIteratorProtector);
DCHECK(isolate()->heap()->string_iterator_protector()->IsPropertyCell());
DCHECK(isolate()->heap()->string_iterator_protector().IsPropertyCell());
Branch(WordEqual(LoadObjectField(protector_cell, PropertyCell::kValueOffset),
SmiConstant(Isolate::kProtectorValid)),
if_true, if_false);

View File

@ -56,11 +56,11 @@ BUILTIN(SymbolKeyFor) {
Object result;
if (symbol->is_public()) {
result = symbol->name();
DCHECK(result->IsString());
DCHECK(result.IsString());
} else {
result = ReadOnlyRoots(isolate).undefined_value();
}
DCHECK_EQ(isolate->heap()->public_symbol_table()->SlowReverseLookup(*symbol),
DCHECK_EQ(isolate->heap()->public_symbol_table().SlowReverseLookup(*symbol),
result);
return result;
}

View File

@ -33,7 +33,7 @@ int64_t CapRelativeIndex(Handle<Object> num, int64_t minimum, int64_t maximum) {
: std::min<int64_t>(relative, maximum);
} else {
DCHECK(num->IsHeapNumber());
double relative = HeapNumber::cast(*num)->value();
double relative = HeapNumber::cast(*num).value();
DCHECK(!std::isnan(relative));
return static_cast<int64_t>(
relative < 0 ? std::max<double>(relative + maximum, minimum)

View File

@ -66,31 +66,31 @@ class BuiltinArguments : public Arguments {
// through the BuiltinArguments object args.
// TODO(cbruni): add global flag to check whether any tracing events have been
// enabled.
#define BUILTIN(name) \
V8_WARN_UNUSED_RESULT static Object Builtin_Impl_##name( \
BuiltinArguments args, Isolate* isolate); \
\
V8_NOINLINE static Address Builtin_Impl_Stats_##name( \
int args_length, Address* args_object, Isolate* isolate) { \
BuiltinArguments args(args_length, args_object); \
RuntimeCallTimerScope timer(isolate, \
RuntimeCallCounterId::kBuiltin_##name); \
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.runtime"), \
"V8.Builtin_" #name); \
return Builtin_Impl_##name(args, isolate)->ptr(); \
} \
\
V8_WARN_UNUSED_RESULT Address Builtin_##name( \
int args_length, Address* args_object, Isolate* isolate) { \
DCHECK(isolate->context().is_null() || isolate->context()->IsContext()); \
if (V8_UNLIKELY(TracingFlags::is_runtime_stats_enabled())) { \
return Builtin_Impl_Stats_##name(args_length, args_object, isolate); \
} \
BuiltinArguments args(args_length, args_object); \
return Builtin_Impl_##name(args, isolate)->ptr(); \
} \
\
V8_WARN_UNUSED_RESULT static Object Builtin_Impl_##name( \
#define BUILTIN(name) \
V8_WARN_UNUSED_RESULT static Object Builtin_Impl_##name( \
BuiltinArguments args, Isolate* isolate); \
\
V8_NOINLINE static Address Builtin_Impl_Stats_##name( \
int args_length, Address* args_object, Isolate* isolate) { \
BuiltinArguments args(args_length, args_object); \
RuntimeCallTimerScope timer(isolate, \
RuntimeCallCounterId::kBuiltin_##name); \
TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("v8.runtime"), \
"V8.Builtin_" #name); \
return Builtin_Impl_##name(args, isolate).ptr(); \
} \
\
V8_WARN_UNUSED_RESULT Address Builtin_##name( \
int args_length, Address* args_object, Isolate* isolate) { \
DCHECK(isolate->context().is_null() || isolate->context().IsContext()); \
if (V8_UNLIKELY(TracingFlags::is_runtime_stats_enabled())) { \
return Builtin_Impl_Stats_##name(args_length, args_object, isolate); \
} \
BuiltinArguments args(args_length, args_object); \
return Builtin_Impl_##name(args, isolate).ptr(); \
} \
\
V8_WARN_UNUSED_RESULT static Object Builtin_Impl_##name( \
BuiltinArguments args, Isolate* isolate)
// ----------------------------------------------------------------------------

View File

@ -15,7 +15,7 @@ BUILTIN(FinalizationGroupConstructor) {
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewTypeError(MessageTemplate::kConstructorNotFunction,
handle(target->shared()->Name(), isolate)));
handle(target->shared().Name(), isolate)));
}
// [[Construct]]
Handle<JSReceiver> new_target = Handle<JSReceiver>::cast(args.new_target());
@ -38,9 +38,9 @@ BUILTIN(FinalizationGroupConstructor) {
finalization_group->set_flags(
JSFinalizationGroup::ScheduledForCleanupField::encode(false));
DCHECK(finalization_group->active_cells()->IsUndefined(isolate));
DCHECK(finalization_group->cleared_cells()->IsUndefined(isolate));
DCHECK(finalization_group->key_map()->IsUndefined(isolate));
DCHECK(finalization_group->active_cells().IsUndefined(isolate));
DCHECK(finalization_group->cleared_cells().IsUndefined(isolate));
DCHECK(finalization_group->key_map().IsUndefined(isolate));
return *finalization_group;
}
@ -125,7 +125,7 @@ BUILTIN(WeakRefConstructor) {
if (args.new_target()->IsUndefined(isolate)) { // [[Call]]
THROW_NEW_ERROR_RETURN_FAILURE(
isolate, NewTypeError(MessageTemplate::kConstructorNotFunction,
handle(target->shared()->Name(), isolate)));
handle(target->shared().Name(), isolate)));
}
// [[Construct]]
Handle<JSReceiver> new_target = Handle<JSReceiver>::cast(args.new_target());
@ -155,14 +155,14 @@ BUILTIN(WeakRefConstructor) {
BUILTIN(WeakRefDeref) {
HandleScope scope(isolate);
CHECK_RECEIVER(JSWeakRef, weak_ref, "WeakRef.prototype.deref");
if (weak_ref->target()->IsJSReceiver()) {
if (weak_ref->target().IsJSReceiver()) {
Handle<JSReceiver> target =
handle(JSReceiver::cast(weak_ref->target()), isolate);
// AddKeepDuringJobTarget might allocate and cause a GC, but it won't clear
// weak_ref since we hold a Handle to its target.
isolate->heap()->AddKeepDuringJobTarget(target);
} else {
DCHECK(weak_ref->target()->IsUndefined(isolate));
DCHECK(weak_ref->target().IsUndefined(isolate));
}
return weak_ref->target();
}

View File

@ -76,13 +76,13 @@ const char* Builtins::Lookup(Address pc) {
// Off-heap pc's can be looked up through binary search.
if (FLAG_embedded_builtins) {
Code maybe_builtin = InstructionStream::TryLookupCode(isolate_, pc);
if (!maybe_builtin.is_null()) return name(maybe_builtin->builtin_index());
if (!maybe_builtin.is_null()) return name(maybe_builtin.builtin_index());
}
// May be called during initialization (disassembler).
if (initialized_) {
for (int i = 0; i < builtin_count; i++) {
if (isolate_->heap()->builtin(i)->contains(pc)) return name(i);
if (isolate_->heap()->builtin(i).contains(pc)) return name(i);
}
}
return nullptr;
@ -185,7 +185,7 @@ void Builtins::PrintBuiltinSize() {
const char* kind = KindNameOf(i);
Code code = builtin(i);
PrintF(stdout, "%s Builtin, %s, %d\n", kind, builtin_name,
code->InstructionSize());
code.InstructionSize());
}
}
@ -197,7 +197,7 @@ Address Builtins::CppEntryOf(int index) {
// static
bool Builtins::IsBuiltin(const Code code) {
return Builtins::IsBuiltinId(code->builtin_index());
return Builtins::IsBuiltinId(code.builtin_index());
}
bool Builtins::IsBuiltinHandle(Handle<HeapObject> maybe_code,
@ -216,7 +216,7 @@ bool Builtins::IsBuiltinHandle(Handle<HeapObject> maybe_code,
// static
bool Builtins::IsIsolateIndependentBuiltin(const Code code) {
if (FLAG_embedded_builtins) {
const int builtin_index = code->builtin_index();
const int builtin_index = code.builtin_index();
return Builtins::IsBuiltinId(builtin_index) &&
Builtins::IsIsolateIndependent(builtin_index);
} else {
@ -245,7 +245,7 @@ void Builtins::UpdateBuiltinEntryTable(Isolate* isolate) {
Heap* heap = isolate->heap();
Address* builtin_entry_table = isolate->builtin_entry_table();
for (int i = 0; i < builtin_count; i++) {
builtin_entry_table[i] = heap->builtin(i)->InstructionStart();
builtin_entry_table[i] = heap->builtin(i).InstructionStart();
}
}

View File

@ -72,7 +72,7 @@ void BuiltinsConstantsTableBuilder::PatchSelfReference(
DCHECK(isolate_->IsGeneratingEmbeddedBuiltins());
DCHECK(self_reference->IsOddball());
DCHECK(Oddball::cast(*self_reference)->kind() ==
DCHECK(Oddball::cast(*self_reference).kind() ==
Oddball::kSelfReferenceMarker);
#endif
@ -101,20 +101,20 @@ void BuiltinsConstantsTableBuilder::Finalize() {
for (auto it = it_scope.begin(); it != it_scope.end(); ++it) {
uint32_t index = *it.entry();
Object value = it.key();
if (value->IsCode() && Code::cast(value)->kind() == Code::BUILTIN) {
if (value.IsCode() && Code::cast(value).kind() == Code::BUILTIN) {
// Replace placeholder code objects with the real builtin.
// See also: SetupIsolateDelegate::PopulateWithPlaceholders.
// TODO(jgruber): Deduplicate placeholders and their corresponding
// builtin.
value = builtins->builtin(Code::cast(value)->builtin_index());
value = builtins->builtin(Code::cast(value).builtin_index());
}
DCHECK(value->IsHeapObject());
DCHECK(value.IsHeapObject());
table->set(index, value);
}
#ifdef DEBUG
for (int i = 0; i < map_.size(); i++) {
DCHECK(table->get(i)->IsHeapObject());
DCHECK(table->get(i).IsHeapObject());
DCHECK_NE(ReadOnlyRoots(isolate_).undefined_value(), table->get(i));
DCHECK_NE(ReadOnlyRoots(isolate_).self_reference_marker(), table->get(i));
}

View File

@ -1382,7 +1382,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ bind(&trampoline_loaded);
__ Pop(eax);
__ add(scratch, Immediate(interpreter_entry_return_pc_offset->value()));
__ add(scratch, Immediate(interpreter_entry_return_pc_offset.value()));
__ push(scratch);
// Initialize the dispatch table register.

View File

@ -1304,7 +1304,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ lw(t0, MemOperand(t0));
__ bind(&trampoline_loaded);
__ Addu(ra, t0, Operand(interpreter_entry_return_pc_offset->value()));
__ Addu(ra, t0, Operand(interpreter_entry_return_pc_offset.value()));
// Initialize the dispatch table register.
__ li(kInterpreterDispatchTableRegister,

View File

@ -1321,7 +1321,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ Ld(t0, MemOperand(t0));
__ bind(&trampoline_loaded);
__ Daddu(ra, t0, Operand(interpreter_entry_return_pc_offset->value()));
__ Daddu(ra, t0, Operand(interpreter_entry_return_pc_offset.value()));
// Initialize the dispatch table register.
__ li(kInterpreterDispatchTableRegister,

View File

@ -1365,7 +1365,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
__ LoadP(r5, MemOperand(r5));
__ bind(&trampoline_loaded);
__ addi(r0, r5, Operand(interpreter_entry_return_pc_offset->value()));
__ addi(r0, r5, Operand(interpreter_entry_return_pc_offset.value()));
__ mtlr(r0);
// Initialize the dispatch table register.

View File

@ -214,7 +214,7 @@ Code BuildWithCodeStubAssemblerCS(Isolate* isolate, int32_t builtin_index,
// static
void SetupIsolateDelegate::AddBuiltin(Builtins* builtins, int index,
Code code) {
DCHECK_EQ(index, code->builtin_index());
DCHECK_EQ(index, code.builtin_index());
builtins->set_builtin(index, code);
}
@ -245,7 +245,7 @@ void SetupIsolateDelegate::ReplacePlaceholders(Isolate* isolate) {
HeapIterator iterator(isolate->heap());
for (HeapObject obj = iterator.next(); !obj.is_null();
obj = iterator.next()) {
if (!obj->IsCode()) continue;
if (!obj.IsCode()) continue;
Code code = Code::cast(obj);
bool flush_icache = false;
for (RelocIterator it(code, kRelocMask); !it.done(); it.next()) {
@ -253,26 +253,26 @@ void SetupIsolateDelegate::ReplacePlaceholders(Isolate* isolate) {
if (RelocInfo::IsCodeTargetMode(rinfo->rmode())) {
Code target = Code::GetCodeFromTargetAddress(rinfo->target_address());
DCHECK_IMPLIES(RelocInfo::IsRelativeCodeTarget(rinfo->rmode()),
Builtins::IsIsolateIndependent(target->builtin_index()));
if (!target->is_builtin()) continue;
Code new_target = builtins->builtin(target->builtin_index());
rinfo->set_target_address(new_target->raw_instruction_start(),
Builtins::IsIsolateIndependent(target.builtin_index()));
if (!target.is_builtin()) continue;
Code new_target = builtins->builtin(target.builtin_index());
rinfo->set_target_address(new_target.raw_instruction_start(),
UPDATE_WRITE_BARRIER, SKIP_ICACHE_FLUSH);
} else {
DCHECK(RelocInfo::IsEmbeddedObjectMode(rinfo->rmode()));
Object object = rinfo->target_object();
if (!object->IsCode()) continue;
if (!object.IsCode()) continue;
Code target = Code::cast(object);
if (!target->is_builtin()) continue;
Code new_target = builtins->builtin(target->builtin_index());
if (!target.is_builtin()) continue;
Code new_target = builtins->builtin(target.builtin_index());
rinfo->set_target_object(isolate->heap(), new_target,
UPDATE_WRITE_BARRIER, SKIP_ICACHE_FLUSH);
}
flush_icache = true;
}
if (flush_icache) {
FlushInstructionCache(code->raw_instruction_start(),
code->raw_instruction_size());
FlushInstructionCache(code.raw_instruction_start(),
code.raw_instruction_size());
}
}
}
@ -359,13 +359,13 @@ void SetupIsolateDelegate::SetupBuiltinsInternal(Isolate* isolate) {
ReplacePlaceholders(isolate);
#define SET_PROMISE_REJECTION_PREDICTION(Name) \
builtins->builtin(Builtins::k##Name)->set_is_promise_rejection(true);
builtins->builtin(Builtins::k##Name).set_is_promise_rejection(true);
BUILTIN_PROMISE_REJECTION_PREDICTION_LIST(SET_PROMISE_REJECTION_PREDICTION)
#undef SET_PROMISE_REJECTION_PREDICTION
#define SET_EXCEPTION_CAUGHT_PREDICTION(Name) \
builtins->builtin(Builtins::k##Name)->set_is_exception_caught(true);
builtins->builtin(Builtins::k##Name).set_is_exception_caught(true);
BUILTIN_EXCEPTION_CAUGHT_PREDICTION_LIST(SET_EXCEPTION_CAUGHT_PREDICTION)
#undef SET_EXCEPTION_CAUGHT_PREDICTION

View File

@ -1390,7 +1390,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
kScratchRegister));
__ bind(&trampoline_loaded);
__ addq(rbx, Immediate(interpreter_entry_return_pc_offset->value()));
__ addq(rbx, Immediate(interpreter_entry_return_pc_offset.value()));
__ Push(rbx);
// Initialize dispatch table register.

View File

@ -294,7 +294,7 @@ bool CodeStubAssembler::IsIntPtrOrSmiConstantZero(Node* test,
}
} else {
DCHECK_EQ(mode, SMI_PARAMETERS);
if (ToSmiConstant(test, &smi_test) && smi_test->value() == 0) {
if (ToSmiConstant(test, &smi_test) && smi_test.value() == 0) {
return true;
}
}
@ -10007,7 +10007,7 @@ TNode<IntPtrT> CodeStubAssembler::ElementOffsetFromIndex(Node* index_node,
element_size_shift -= kSmiShiftBits;
Smi smi_index;
constant_index = ToSmiConstant(index_node, &smi_index);
if (constant_index) index = smi_index->value();
if (constant_index) index = smi_index.value();
index_node = BitcastTaggedToWord(index_node);
} else {
DCHECK(mode == INTPTR_PARAMETERS);

View File

@ -278,7 +278,7 @@ class V8_EXPORT_PRIVATE CodeStubAssembler
if (mode == ParameterMode::SMI_PARAMETERS) {
Smi constant;
if (ToSmiConstant(node, &constant)) {
*out = static_cast<intptr_t>(constant->value());
*out = static_cast<intptr_t>(constant.value());
return true;
}
} else {

View File

@ -39,7 +39,7 @@ CompilationCache::CompilationCache(Isolate* isolate)
Handle<CompilationCacheTable> CompilationSubCache::GetTable(int generation) {
DCHECK(generation < generations_);
Handle<CompilationCacheTable> result;
if (tables_[generation]->IsUndefined(isolate())) {
if (tables_[generation].IsUndefined(isolate())) {
result = CompilationCacheTable::New(isolate(), kInitialCacheSize);
tables_[generation] = *result;
} else {
@ -53,8 +53,8 @@ Handle<CompilationCacheTable> CompilationSubCache::GetTable(int generation) {
void CompilationSubCache::Age() {
// Don't directly age single-generation caches.
if (generations_ == 1) {
if (!tables_[0]->IsUndefined(isolate())) {
CompilationCacheTable::cast(tables_[0])->Age();
if (!tables_[0].IsUndefined(isolate())) {
CompilationCacheTable::cast(tables_[0]).Age();
}
return;
}
@ -76,8 +76,7 @@ void CompilationSubCache::Iterate(RootVisitor* v) {
void CompilationSubCache::Clear() {
MemsetPointer(reinterpret_cast<Address*>(tables_),
ReadOnlyRoots(isolate()).undefined_value()->ptr(),
generations_);
ReadOnlyRoots(isolate()).undefined_value().ptr(), generations_);
}
void CompilationSubCache::Remove(Handle<SharedFunctionInfo> function_info) {
@ -108,13 +107,13 @@ bool CompilationCacheScript::HasOrigin(Handle<SharedFunctionInfo> function_info,
// an undefined name to have the same origin.
Handle<Object> name;
if (!maybe_name.ToHandle(&name)) {
return script->name()->IsUndefined(isolate());
return script->name().IsUndefined(isolate());
}
// Do the fast bailout checks first.
if (line_offset != script->line_offset()) return false;
if (column_offset != script->column_offset()) return false;
// Check that both names are strings. If not, no match.
if (!name->IsString() || !script->name()->IsString()) return false;
if (!name->IsString() || !script->name().IsString()) return false;
// Are the origin_options same?
if (resource_options.Flags() != script->origin_options().Flags())
return false;

View File

@ -94,7 +94,7 @@ void LogFunctionCompilation(CodeEventListener::LogEventsAndTags tag,
int line_num = Script::GetLineNumber(script, shared->StartPosition()) + 1;
int column_num = Script::GetColumnNumber(script, shared->StartPosition()) + 1;
String script_name = script->name()->IsString()
String script_name = script->name().IsString()
? String::cast(script->name())
: ReadOnlyRoots(isolate).empty_string();
CodeEventListener::LogEventsAndTags log_tag =
@ -127,9 +127,9 @@ void LogFunctionCompilation(CodeEventListener::LogEventsAndTags tag,
}
ScriptOriginOptions OriginOptionsForEval(Object script) {
if (!script->IsScript()) return ScriptOriginOptions();
if (!script.IsScript()) return ScriptOriginOptions();
const auto outer_origin_options = Script::cast(script)->origin_options();
const auto outer_origin_options = Script::cast(script).origin_options();
return ScriptOriginOptions(outer_origin_options.IsSharedCrossOrigin(),
outer_origin_options.IsOpaque());
}
@ -270,7 +270,7 @@ void OptimizedCompilationJob::RecordCompilationStats(CompilationMode mode,
compilation_time += (ms_creategraph + ms_optimize + ms_codegen);
compiled_functions++;
code_size += function->shared()->SourceSize();
code_size += function->shared().SourceSize();
PrintF("Compiled: %d functions with %d byte source size in %fms.\n",
compiled_functions, code_size, compilation_time);
}
@ -383,7 +383,7 @@ void InstallBytecodeArray(Handle<BytecodeArray> bytecode_array,
Script::GetLineNumber(script, shared_info->StartPosition()) + 1;
int column_num =
Script::GetColumnNumber(script, shared_info->StartPosition()) + 1;
String script_name = script->name()->IsString()
String script_name = script->name().IsString()
? String::cast(script->name())
: ReadOnlyRoots(isolate).empty_string();
CodeEventListener::LogEventsAndTags log_tag = Logger::ToNativeByScript(
@ -433,8 +433,8 @@ void EnsureSharedFunctionInfosArrayOnScript(ParseInfo* parse_info,
Isolate* isolate) {
DCHECK(parse_info->is_toplevel());
DCHECK(!parse_info->script().is_null());
if (parse_info->script()->shared_function_infos()->length() > 0) {
DCHECK_EQ(parse_info->script()->shared_function_infos()->length(),
if (parse_info->script()->shared_function_infos().length() > 0) {
DCHECK_EQ(parse_info->script()->shared_function_infos().length(),
parse_info->max_function_literal_id() + 1);
return;
}
@ -659,15 +659,15 @@ V8_WARN_UNUSED_RESULT MaybeHandle<Code> GetCodeFromOptimizedCodeCache(
if (osr_offset.IsNone()) {
if (function->has_feedback_vector()) {
FeedbackVector feedback_vector = function->feedback_vector();
feedback_vector->EvictOptimizedCodeMarkedForDeoptimization(
feedback_vector.EvictOptimizedCodeMarkedForDeoptimization(
function->shared(), "GetCodeFromOptimizedCodeCache");
Code code = feedback_vector->optimized_code();
Code code = feedback_vector.optimized_code();
if (!code.is_null()) {
// Caching of optimized code enabled and optimized code found.
DCHECK(!code->marked_for_deoptimization());
DCHECK(function->shared()->is_compiled());
return Handle<Code>(code, feedback_vector->GetIsolate());
DCHECK(!code.marked_for_deoptimization());
DCHECK(function->shared().is_compiled());
return Handle<Code>(code, feedback_vector.GetIsolate());
}
}
}
@ -700,7 +700,7 @@ void InsertCodeIntoOptimizedCodeCache(
// Cache optimized context-specific code.
Handle<JSFunction> function = compilation_info->closure();
Handle<SharedFunctionInfo> shared(function->shared(), function->GetIsolate());
Handle<Context> native_context(function->context()->native_context(),
Handle<Context> native_context(function->context().native_context(),
function->GetIsolate());
if (compilation_info->osr_offset().IsNone()) {
Handle<FeedbackVector> vector =
@ -800,7 +800,7 @@ MaybeHandle<Code> GetOptimizedCode(Handle<JSFunction> function,
// If code was pending optimization for testing, delete remove the strong root
// that was preventing the bytecode from being flushed between marking and
// optimization.
if (!isolate->heap()->pending_optimize_for_test_bytecode()->IsUndefined()) {
if (!isolate->heap()->pending_optimize_for_test_bytecode().IsUndefined()) {
Handle<ObjectHashTable> table =
handle(ObjectHashTable::cast(
isolate->heap()->pending_optimize_for_test_bytecode()),
@ -827,7 +827,7 @@ MaybeHandle<Code> GetOptimizedCode(Handle<JSFunction> function,
// Reset profiler ticks, function is no longer considered hot.
DCHECK(shared->is_compiled());
function->feedback_vector()->set_profiler_ticks(0);
function->feedback_vector().set_profiler_ticks(0);
VMState<COMPILER> state(isolate);
TimerEventScope<TimerEventOptimizeCode> optimize_code_timer(isolate);
@ -837,7 +837,7 @@ MaybeHandle<Code> GetOptimizedCode(Handle<JSFunction> function,
DCHECK(!isolate->has_pending_exception());
PostponeInterruptsScope postpone(isolate);
bool has_script = shared->script()->IsScript();
bool has_script = shared->script().IsScript();
// BUG(5946): This DCHECK is necessary to make certain that we won't
// tolerate the lack of a script without bytecode.
DCHECK_IMPLIES(!has_script, shared->HasBytecodeArray());
@ -881,8 +881,8 @@ MaybeHandle<Code> GetOptimizedCode(Handle<JSFunction> function,
// Set the optimization marker and return a code object which checks it.
function->SetOptimizationMarker(OptimizationMarker::kInOptimizationQueue);
DCHECK(function->IsInterpreted() ||
(!function->is_compiled() && function->shared()->IsInterpreted()));
DCHECK(function->shared()->HasBytecodeArray());
(!function->is_compiled() && function->shared().IsInterpreted()));
DCHECK(function->shared().HasBytecodeArray());
return BUILTIN_CODE(isolate, InterpreterEntryTrampoline);
}
} else {
@ -1178,7 +1178,7 @@ bool Compiler::CollectSourcePositions(Isolate* isolate,
Handle<SharedFunctionInfo> shared_info) {
DCHECK(shared_info->is_compiled());
DCHECK(shared_info->HasBytecodeArray());
DCHECK(!shared_info->GetBytecodeArray()->HasSourcePositionTable());
DCHECK(!shared_info->GetBytecodeArray().HasSourcePositionTable());
// Collecting source positions requires allocating a new source position
// table.
@ -1266,8 +1266,8 @@ bool Compiler::CollectSourcePositions(Isolate* isolate,
// If debugging, make sure that instrumented bytecode has the source position
// table set on it as well.
if (shared_info->HasDebugInfo() &&
shared_info->GetDebugInfo()->HasInstrumentedBytecodeArray()) {
shared_info->GetDebugBytecodeArray()->set_source_position_table(
shared_info->GetDebugInfo().HasInstrumentedBytecodeArray()) {
shared_info->GetDebugBytecodeArray().set_source_position_table(
source_position_table);
}
@ -1315,7 +1315,7 @@ bool Compiler::Compile(Handle<SharedFunctionInfo> shared_info,
parse_info.set_consumed_preparse_data(ConsumedPreparseData::For(
isolate,
handle(
shared_info->uncompiled_data_with_preparse_data()->preparse_data(),
shared_info->uncompiled_data_with_preparse_data().preparse_data(),
isolate)));
}
@ -1377,7 +1377,7 @@ bool Compiler::Compile(Handle<JSFunction> function, ClearExceptionFlag flag,
JSFunction::InitializeFeedbackCell(function);
// Optimize now if --always-opt is enabled.
if (FLAG_always_opt && !function->shared()->HasAsmWasmData()) {
if (FLAG_always_opt && !function->shared().HasAsmWasmData()) {
if (FLAG_trace_opt) {
PrintF("[optimizing ");
function->ShortPrint();
@ -1395,7 +1395,7 @@ bool Compiler::Compile(Handle<JSFunction> function, ClearExceptionFlag flag,
// Check postconditions on success.
DCHECK(!isolate->has_pending_exception());
DCHECK(function->shared()->is_compiled());
DCHECK(function->shared().is_compiled());
DCHECK(function->is_compiled());
return true;
}
@ -1449,8 +1449,8 @@ bool Compiler::CompileOptimized(Handle<JSFunction> function,
// Optimization failed, get unoptimized code. Unoptimized code must exist
// already if we are optimizing.
DCHECK(!isolate->has_pending_exception());
DCHECK(function->shared()->is_compiled());
DCHECK(function->shared()->IsInterpreted());
DCHECK(function->shared().is_compiled());
DCHECK(function->shared().IsInterpreted());
code = BUILTIN_CODE(isolate, InterpreterEntryTrampoline);
}
@ -1459,7 +1459,7 @@ bool Compiler::CompileOptimized(Handle<JSFunction> function,
// Check postconditions on success.
DCHECK(!isolate->has_pending_exception());
DCHECK(function->shared()->is_compiled());
DCHECK(function->shared().is_compiled());
DCHECK(function->is_compiled());
DCHECK_IMPLIES(function->HasOptimizationMarker(),
function->IsInOptimizationQueue());
@ -1602,7 +1602,7 @@ MaybeHandle<JSFunction> Compiler::GetFunctionFromEval(
bool Compiler::CodeGenerationFromStringsAllowed(Isolate* isolate,
Handle<Context> context,
Handle<String> source) {
DCHECK(context->allow_code_gen_from_strings()->IsFalse(isolate));
DCHECK(context->allow_code_gen_from_strings().IsFalse(isolate));
// Check with callback if set.
AllowCodeGenerationFromStringsCallback callback =
isolate->allow_code_gen_callback();
@ -1624,7 +1624,7 @@ MaybeHandle<JSFunction> Compiler::GetFunctionFromString(
// Check if native context allows code generation from
// strings. Throw an exception if it doesn't.
if (native_context->allow_code_gen_from_strings()->IsFalse(isolate) &&
if (native_context->allow_code_gen_from_strings().IsFalse(isolate) &&
!CodeGenerationFromStringsAllowed(isolate, native_context, source)) {
Handle<Object> error_message =
native_context->ErrorMessageForCodeGenerationFromStrings();
@ -1638,7 +1638,7 @@ MaybeHandle<JSFunction> Compiler::GetFunctionFromString(
int eval_scope_position = 0;
int eval_position = kNoSourcePosition;
Handle<SharedFunctionInfo> outer_info(
native_context->empty_function()->shared(), isolate);
native_context->empty_function().shared(), isolate);
return Compiler::GetFunctionFromEval(
source, outer_info, native_context, LanguageMode::kSloppy, restriction,
parameters_end_pos, eval_scope_position, eval_position);
@ -2037,7 +2037,7 @@ MaybeHandle<JSFunction> Compiler::GetWrappedFunction(
SharedFunctionInfo::ScriptIterator infos(isolate, *script);
for (SharedFunctionInfo info = infos.Next(); !info.is_null();
info = infos.Next()) {
if (info->is_wrapped()) {
if (info.is_wrapped()) {
wrapped = Handle<SharedFunctionInfo>(info, isolate);
break;
}
@ -2162,7 +2162,7 @@ bool Compiler::FinalizeOptimizedCompilationJob(OptimizedCompilationJob* job,
Handle<SharedFunctionInfo> shared = compilation_info->shared_info();
// Reset profiler ticks, function is no longer considered hot.
compilation_info->closure()->feedback_vector()->set_profiler_ticks(0);
compilation_info->closure()->feedback_vector().set_profiler_ticks(0);
DCHECK(!shared->HasBreakInfo());
@ -2217,12 +2217,12 @@ void Compiler::PostInstantiation(Handle<JSFunction> function,
JSFunction::InitializeFeedbackCell(function);
Code code = function->has_feedback_vector()
? function->feedback_vector()->optimized_code()
? function->feedback_vector().optimized_code()
: Code();
if (!code.is_null()) {
// Caching of optimized code enabled and optimized code found.
DCHECK(!code->marked_for_deoptimization());
DCHECK(function->shared()->is_compiled());
DCHECK(!code.marked_for_deoptimization());
DCHECK(function->shared().is_compiled());
function->set_code(code);
}

View File

@ -14,21 +14,21 @@ namespace v8 {
namespace internal {
HandlerTable::HandlerTable(Code code)
: HandlerTable(code->InstructionStart() + code->handler_table_offset(),
code->handler_table_size()) {}
: HandlerTable(code.InstructionStart() + code.handler_table_offset(),
code.handler_table_size()) {}
HandlerTable::HandlerTable(BytecodeArray bytecode_array)
: HandlerTable(bytecode_array->handler_table()) {}
: HandlerTable(bytecode_array.handler_table()) {}
HandlerTable::HandlerTable(ByteArray byte_array)
: number_of_entries_(byte_array->length() / kRangeEntrySize /
: number_of_entries_(byte_array.length() / kRangeEntrySize /
sizeof(int32_t)),
#ifdef DEBUG
mode_(kRangeBasedEncoding),
#endif
raw_encoded_data_(
reinterpret_cast<Address>(byte_array->GetDataStartAddress())) {
DCHECK_EQ(0, byte_array->length() % (kRangeEntrySize * sizeof(int32_t)));
reinterpret_cast<Address>(byte_array.GetDataStartAddress())) {
DCHECK_EQ(0, byte_array.length() % (kRangeEntrySize * sizeof(int32_t)));
}
HandlerTable::HandlerTable(Address handler_table, int handler_table_size)

View File

@ -151,7 +151,7 @@ void OptimizedCompilationInfo::RetryOptimization(BailoutReason reason) {
std::unique_ptr<char[]> OptimizedCompilationInfo::GetDebugName() const {
if (!shared_info().is_null()) {
return shared_info()->DebugName()->ToCString();
return shared_info()->DebugName().ToCString();
}
Vector<const char> name_vec = debug_name_;
if (name_vec.empty()) name_vec = ArrayVector("unknown");
@ -216,7 +216,7 @@ bool OptimizedCompilationInfo::has_global_object() const {
JSGlobalObject OptimizedCompilationInfo::global_object() const {
DCHECK(has_global_object());
return native_context()->global_object();
return native_context().global_object();
}
int OptimizedCompilationInfo::AddInlinedFunction(

View File

@ -272,13 +272,13 @@ void RelocIterator::next() {
}
RelocIterator::RelocIterator(Code code, int mode_mask)
: RelocIterator(code, code->unchecked_relocation_info(), mode_mask) {}
: RelocIterator(code, code.unchecked_relocation_info(), mode_mask) {}
RelocIterator::RelocIterator(Code code, ByteArray relocation_info,
int mode_mask)
: RelocIterator(code, code->raw_instruction_start(), code->constant_pool(),
relocation_info->GetDataEndAddress(),
relocation_info->GetDataStartAddress(), mode_mask) {}
: RelocIterator(code, code.raw_instruction_start(), code.constant_pool(),
relocation_info.GetDataEndAddress(),
relocation_info.GetDataStartAddress(), mode_mask) {}
RelocIterator::RelocIterator(const CodeReference code_reference, int mode_mask)
: RelocIterator(Code(), code_reference.instruction_start(),
@ -289,10 +289,10 @@ RelocIterator::RelocIterator(const CodeReference code_reference, int mode_mask)
RelocIterator::RelocIterator(EmbeddedData* embedded_data, Code code,
int mode_mask)
: RelocIterator(
code, embedded_data->InstructionStartOfBuiltin(code->builtin_index()),
code->constant_pool(),
code->relocation_start() + code->relocation_size(),
code->relocation_start(), mode_mask) {}
code, embedded_data->InstructionStartOfBuiltin(code.builtin_index()),
code.constant_pool(),
code.relocation_start() + code.relocation_size(),
code.relocation_start(), mode_mask) {}
RelocIterator::RelocIterator(const CodeDesc& desc, int mode_mask)
: RelocIterator(Code(), reinterpret_cast<Address>(desc.buffer), 0,
@ -469,10 +469,10 @@ void RelocInfo::Print(Isolate* isolate, std::ostream& os) { // NOLINT
} else if (IsCodeTargetMode(rmode_)) {
const Address code_target = target_address();
Code code = Code::GetCodeFromTargetAddress(code_target);
DCHECK(code->IsCode());
os << " (" << Code::Kind2String(code->kind());
DCHECK(code.IsCode());
os << " (" << Code::Kind2String(code.kind());
if (Builtins::IsBuiltin(code)) {
os << " " << Builtins::name(code->builtin_index());
os << " " << Builtins::name(code.builtin_index());
}
os << ") (" << reinterpret_cast<const void*>(target_address()) << ")";
} else if (IsRuntimeEntry(rmode_) && isolate->deoptimizer_data() != nullptr) {
@ -505,8 +505,8 @@ void RelocInfo::Verify(Isolate* isolate) {
// Check that we can find the right code object.
Code code = Code::GetCodeFromTargetAddress(addr);
Object found = isolate->FindCodeObject(addr);
CHECK(found->IsCode());
CHECK(code->address() == HeapObject::cast(found)->address());
CHECK(found.IsCode());
CHECK(code.address() == HeapObject::cast(found).address());
break;
}
case INTERNAL_REFERENCE:
@ -514,8 +514,8 @@ void RelocInfo::Verify(Isolate* isolate) {
Address target = target_internal_reference();
Address pc = target_internal_reference_address();
Code code = Code::cast(isolate->FindCodeObject(pc));
CHECK(target >= code->InstructionStart());
CHECK(target <= code->InstructionEnd());
CHECK(target >= code.InstructionStart());
CHECK(target <= code.InstructionEnd());
break;
}
case OFF_HEAP_TARGET: {

View File

@ -49,8 +49,8 @@ SafepointTable::SafepointTable(Address instruction_start,
}
SafepointTable::SafepointTable(Code code)
: SafepointTable(code->InstructionStart(), code->safepoint_table_offset(),
code->stack_slots(), true) {}
: SafepointTable(code.InstructionStart(), code.safepoint_table_offset(),
code.stack_slots(), true) {}
unsigned SafepointTable::find_return_pc(unsigned pc_offset) {
for (unsigned i = 0; i < length(); i++) {

View File

@ -108,8 +108,8 @@ void DecodeEntry(Vector<const byte> bytes, int* index,
}
Vector<const byte> VectorFromByteArray(ByteArray byte_array) {
return Vector<const byte>(byte_array->GetDataStartAddress(),
byte_array->length());
return Vector<const byte>(byte_array.GetDataStartAddress(),
byte_array.length());
}
#ifdef ENABLE_SLOW_DCHECKS

View File

@ -11,8 +11,8 @@ namespace internal {
std::ostream& operator<<(std::ostream& out, const SourcePositionInfo& pos) {
out << "<";
if (!pos.script.is_null() && pos.script->name()->IsString()) {
out << String::cast(pos.script->name())->ToCString(DISALLOW_NULLS).get();
if (!pos.script.is_null() && pos.script->name().IsString()) {
out << String::cast(pos.script->name()).ToCString(DISALLOW_NULLS).get();
} else {
out << "unknown";
}
@ -68,7 +68,7 @@ std::vector<SourcePositionInfo> SourcePosition::InliningStack(
std::vector<SourcePositionInfo> stack;
while (pos.isInlined()) {
InliningPosition inl =
deopt_data->InliningPositions()->get(pos.InliningId());
deopt_data->InliningPositions().get(pos.InliningId());
Handle<SharedFunctionInfo> function(
deopt_data->GetInlinedFunction(inl.inlined_function_id), isolate);
stack.push_back(SourcePositionInfo(pos, function));
@ -84,15 +84,15 @@ void SourcePosition::Print(std::ostream& out,
SharedFunctionInfo function) const {
Script::PositionInfo pos;
Object source_name;
if (function->script()->IsScript()) {
Script script = Script::cast(function->script());
source_name = script->name();
script->GetPositionInfo(ScriptOffset(), &pos, Script::WITH_OFFSET);
if (function.script().IsScript()) {
Script script = Script::cast(function.script());
source_name = script.name();
script.GetPositionInfo(ScriptOffset(), &pos, Script::WITH_OFFSET);
}
out << "<";
if (source_name->IsString()) {
if (source_name.IsString()) {
out << String::cast(source_name)
->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL)
.ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL)
.get();
} else {
out << "unknown";
@ -113,18 +113,18 @@ void SourcePosition::PrintJson(std::ostream& out) const {
void SourcePosition::Print(std::ostream& out, Code code) const {
DeoptimizationData deopt_data =
DeoptimizationData::cast(code->deoptimization_data());
DeoptimizationData::cast(code.deoptimization_data());
if (!isInlined()) {
SharedFunctionInfo function(
SharedFunctionInfo::cast(deopt_data->SharedFunctionInfo()));
SharedFunctionInfo::cast(deopt_data.SharedFunctionInfo()));
Print(out, function);
} else {
InliningPosition inl = deopt_data->InliningPositions()->get(InliningId());
InliningPosition inl = deopt_data.InliningPositions().get(InliningId());
if (inl.inlined_function_id == -1) {
out << *this;
} else {
SharedFunctionInfo function =
deopt_data->GetInlinedFunction(inl.inlined_function_id);
deopt_data.GetInlinedFunction(inl.inlined_function_id);
Print(out, function);
}
out << " inlined at ";
@ -136,7 +136,7 @@ SourcePositionInfo::SourcePositionInfo(SourcePosition pos,
Handle<SharedFunctionInfo> f)
: position(pos),
shared(f),
script(f.is_null() || !f->script()->IsScript()
script(f.is_null() || !f->script().IsScript()
? Handle<Script>::null()
: handle(Script::cast(f->script()), f->GetIsolate())) {
if (!script.is_null()) {

View File

@ -104,7 +104,7 @@ void CompilerDispatcher::RegisterSharedFunctionInfo(
if (trace_compiler_dispatcher_) {
PrintF("CompilerDispatcher: registering ");
function->ShortPrint();
function.ShortPrint();
PrintF(" with job id %zu\n", job_id);
}

View File

@ -25,7 +25,7 @@ void DisposeCompilationJob(OptimizedCompilationJob* job,
bool restore_function_code) {
if (restore_function_code) {
Handle<JSFunction> function = job->compilation_info()->closure();
function->set_code(function->shared()->GetCode());
function->set_code(function->shared().GetCode());
if (function->IsInOptimizationQueue()) {
function->ClearOptimizationMarker();
}

View File

@ -407,10 +407,10 @@ PropertyAccessInfo AccessInfoFactory::ComputeAccessorDescriptorAccessInfo(
Handle<JSModuleNamespace> module_namespace(
JSModuleNamespace::cast(proto_info->module_namespace()), isolate());
Handle<Cell> cell(
Cell::cast(module_namespace->module()->exports()->Lookup(
Cell::cast(module_namespace->module().exports().Lookup(
ReadOnlyRoots(isolate()), name, Smi::ToInt(name->GetHash()))),
isolate());
if (cell->value()->IsTheHole(isolate())) {
if (cell->value().IsTheHole(isolate())) {
// This module has not been fully initialized yet.
return PropertyAccessInfo::Invalid(zone());
}
@ -542,15 +542,15 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
}
// Walk up the prototype chain.
if (!map->prototype()->IsJSObject()) {
if (!map->prototype().IsJSObject()) {
// Perform the implicit ToObject for primitives here.
// Implemented according to ES6 section 7.3.2 GetV (V, P).
Handle<JSFunction> constructor;
if (Map::GetConstructorFunction(map, broker()->native_context().object())
.ToHandle(&constructor)) {
map = handle(constructor->initial_map(), isolate());
DCHECK(map->prototype()->IsJSObject());
} else if (map->prototype()->IsNull(isolate())) {
DCHECK(map->prototype().IsJSObject());
} else if (map->prototype().IsNull(isolate())) {
// Store to property not found on the receiver or any prototype, we need
// to transition to a new data property.
// Implemented according to ES6 section 9.1.9 [[Set]] (P, V, Receiver)
@ -566,7 +566,7 @@ PropertyAccessInfo AccessInfoFactory::ComputePropertyAccessInfo(
}
}
Handle<JSObject> map_prototype(JSObject::cast(map->prototype()), isolate());
if (map_prototype->map()->is_deprecated()) {
if (map_prototype->map().is_deprecated()) {
// Try to migrate the prototype object so we don't embed the deprecated
// map into the optimized code.
JSObject::TryMigrateInstance(map_prototype);
@ -744,7 +744,7 @@ PropertyAccessInfo AccessInfoFactory::LookupTransition(
Handle<Map> transition_map(transition, isolate());
int const number = transition_map->LastAdded();
PropertyDetails const details =
transition_map->instance_descriptors()->GetDetails(number);
transition_map->instance_descriptors().GetDetails(number);
// Don't bother optimizing stores to read-only properties.
if (details.IsReadOnly()) {
return PropertyAccessInfo::Invalid(zone());
@ -774,8 +774,7 @@ PropertyAccessInfo AccessInfoFactory::LookupTransition(
// Extract the field type from the property details (make sure its
// representation is TaggedPointer to reflect the heap object case).
Handle<FieldType> descriptors_field_type(
transition_map->instance_descriptors()->GetFieldType(number),
isolate());
transition_map->instance_descriptors().GetFieldType(number), isolate());
if (descriptors_field_type->IsNone()) {
// Store is not safe if the field type was cleared.
return PropertyAccessInfo::Invalid(zone());

View File

@ -1161,8 +1161,8 @@ void CodeGenerator::AddTranslationForOperand(Translation* translation,
// Smis.
DCHECK_EQ(4, kSystemPointerSize);
Smi smi(static_cast<Address>(constant.ToInt32()));
DCHECK(smi->IsSmi());
literal = DeoptimizationLiteral(smi->value());
DCHECK(smi.IsSmi());
literal = DeoptimizationLiteral(smi.value());
} else if (type.representation() == MachineRepresentation::kBit) {
if (constant.ToInt32() == 0) {
literal =
@ -1196,8 +1196,8 @@ void CodeGenerator::AddTranslationForOperand(Translation* translation,
// Smis.
DCHECK_EQ(MachineRepresentation::kTagged, type.representation());
Smi smi(static_cast<Address>(constant.ToInt64()));
DCHECK(smi->IsSmi());
literal = DeoptimizationLiteral(smi->value());
DCHECK(smi.IsSmi());
literal = DeoptimizationLiteral(smi.value());
}
break;
case Constant::kFloat32:

View File

@ -2028,7 +2028,7 @@ void BytecodeGraphBuilder::VisitCreateArrayLiteral() {
// TODO(mstarzinger): Thread through number of elements. The below number is
// only an estimate and does not match {ArrayLiteral::values::length}.
int number_of_elements =
array_boilerplate_description->constant_elements()->length();
array_boilerplate_description->constant_elements().length();
Node* literal = NewNode(javascript()->CreateLiteralArray(
array_boilerplate_description, pair, literal_flags, number_of_elements));
environment()->BindAccumulator(literal, Environment::kAttachFrameState);
@ -2098,7 +2098,7 @@ void BytecodeGraphBuilder::VisitGetTemplateObject() {
// the JSArray constant here.
cached_value = TemplateObjectDescription::GetTemplateObject(
isolate(), native_context(), description, shared_info(), slot.ToInt());
nexus.vector()->Set(slot, *cached_value);
nexus.vector().Set(slot, *cached_value);
} else {
cached_value =
handle(JSArray::cast(nexus.GetFeedback()->GetHeapObjectAssumeStrong()),

View File

@ -1923,16 +1923,16 @@ Address CheckObjectType(Address raw_value, Address raw_type,
Smi type(raw_type);
String location = String::cast(Object(raw_location));
const char* expected;
switch (static_cast<ObjectType>(type->value())) {
#define TYPE_CASE(Name) \
case ObjectType::k##Name: \
if (value->Is##Name()) return Smi::FromInt(0).ptr(); \
expected = #Name; \
switch (static_cast<ObjectType>(type.value())) {
#define TYPE_CASE(Name) \
case ObjectType::k##Name: \
if (value.Is##Name()) return Smi::FromInt(0).ptr(); \
expected = #Name; \
break;
#define TYPE_STRUCT_CASE(NAME, Name, name) \
case ObjectType::k##Name: \
if (value->Is##Name()) return Smi::FromInt(0).ptr(); \
expected = #Name; \
#define TYPE_STRUCT_CASE(NAME, Name, name) \
case ObjectType::k##Name: \
if (value.Is##Name()) return Smi::FromInt(0).ptr(); \
expected = #Name; \
break;
TYPE_CASE(Object)
@ -1945,11 +1945,11 @@ Address CheckObjectType(Address raw_value, Address raw_type,
#undef TYPE_STRUCT_CASE
}
std::stringstream value_description;
value->Print(value_description);
value.Print(value_description);
FATAL(
"Type cast failed in %s\n"
" Expected %s but found %s",
location->ToAsciiArray(), expected, value_description.str().c_str());
location.ToAsciiArray(), expected, value_description.str().c_str());
#else
UNREACHABLE();
#endif

View File

@ -181,9 +181,8 @@ class FieldRepresentationDependency final
bool IsValid() const override {
DisallowHeapAllocation no_heap_allocation;
Handle<Map> owner = owner_.object();
return representation_.Equals(owner->instance_descriptors()
->GetDetails(descriptor_)
.representation());
return representation_.Equals(
owner->instance_descriptors().GetDetails(descriptor_).representation());
}
void Install(const MaybeObjectHandle& code) const override {
@ -213,7 +212,7 @@ class FieldTypeDependency final : public CompilationDependencies::Dependency {
DisallowHeapAllocation no_heap_allocation;
Handle<Map> owner = owner_.object();
Handle<Object> type = type_.object();
return *type == owner->instance_descriptors()->GetFieldType(descriptor_);
return *type == owner->instance_descriptors().GetFieldType(descriptor_);
}
void Install(const MaybeObjectHandle& code) const override {
@ -242,7 +241,7 @@ class FieldConstnessDependency final
DisallowHeapAllocation no_heap_allocation;
Handle<Map> owner = owner_.object();
return PropertyConstness::kConst ==
owner->instance_descriptors()->GetDetails(descriptor_).constness();
owner->instance_descriptors().GetDetails(descriptor_).constness();
}
void Install(const MaybeObjectHandle& code) const override {
@ -332,7 +331,7 @@ class ElementsKindDependency final
bool IsValid() const override {
Handle<AllocationSite> site = site_.object();
ElementsKind kind = site->PointsToLiteral()
? site->boilerplate()->GetElementsKind()
? site->boilerplate().GetElementsKind()
: site->GetElementsKind();
return kind_ == kind;
}
@ -372,9 +371,8 @@ class InitialMapInstanceSizePredictionDependency final
void Install(const MaybeObjectHandle& code) const override {
SLOW_DCHECK(IsValid());
DCHECK(!function_.object()
->initial_map()
->IsInobjectSlackTrackingInProgress());
DCHECK(
!function_.object()->initial_map().IsInobjectSlackTrackingInProgress());
}
private:

View File

@ -102,9 +102,9 @@ void JsonPrintFunctionSource(std::ostream& os, int source_id,
if (!script.is_null() && !script->IsUndefined(isolate) && !shared.is_null()) {
Object source_name = script->name();
os << ", \"sourceName\": \"";
if (source_name->IsString()) {
if (source_name.IsString()) {
std::ostringstream escaped_name;
escaped_name << String::cast(source_name)->ToCString().get();
escaped_name << String::cast(source_name).ToCString().get();
os << JSONEscaped(escaped_name);
}
os << "\"";
@ -173,7 +173,7 @@ void JsonPrintAllSourceWithPositions(std::ostream& os,
JsonPrintFunctionSource(os, -1,
info->shared_info().is_null()
? std::unique_ptr<char[]>(new char[1]{0})
: info->shared_info()->DebugName()->ToCString(),
: info->shared_info()->DebugName().ToCString(),
script, isolate, info->shared_info(), true);
const auto& inlined = info->inlined_functions();
SourceIdAssigner id_assigner(info->inlined_functions().size());
@ -181,7 +181,7 @@ void JsonPrintAllSourceWithPositions(std::ostream& os,
os << ", ";
Handle<SharedFunctionInfo> shared = inlined[id].shared_info;
const int source_id = id_assigner.GetIdFor(shared);
JsonPrintFunctionSource(os, source_id, shared->DebugName()->ToCString(),
JsonPrintFunctionSource(os, source_id, shared->DebugName().ToCString(),
handle(Script::cast(shared->script()), isolate),
isolate, shared, true);
}
@ -216,12 +216,12 @@ std::unique_ptr<char[]> GetVisualizerLogFileName(OptimizedCompilationInfo* info,
EmbeddedVector<char, 256> source_file(0);
bool source_available = false;
if (FLAG_trace_file_names && info->has_shared_info() &&
info->shared_info()->script()->IsScript()) {
Object source_name = Script::cast(info->shared_info()->script())->name();
if (source_name->IsString()) {
info->shared_info()->script().IsScript()) {
Object source_name = Script::cast(info->shared_info()->script()).name();
if (source_name.IsString()) {
String str = String::cast(source_name);
if (str->length() > 0) {
SNPrintF(source_file, "%s", str->ToCString().get());
if (str.length() > 0) {
SNPrintF(source_file, "%s", str.ToCString().get());
std::replace(source_file.begin(),
source_file.begin() + source_file.length(), '/', '_');
source_available = true;

View File

@ -452,7 +452,7 @@ Reduction JSCallReducer::ReduceFunctionPrototypeBind(Node* node) {
return inference.NoChange();
}
if (!descriptors->GetStrongValue(JSFunction::kLengthDescriptorIndex)
->IsAccessorInfo()) {
.IsAccessorInfo()) {
return inference.NoChange();
}
if (descriptors->GetKey(JSFunction::kNameDescriptorIndex) !=
@ -460,7 +460,7 @@ Reduction JSCallReducer::ReduceFunctionPrototypeBind(Node* node) {
return inference.NoChange();
}
if (!descriptors->GetStrongValue(JSFunction::kNameDescriptorIndex)
->IsAccessorInfo()) {
.IsAccessorInfo()) {
return inference.NoChange();
}
}
@ -2820,7 +2820,7 @@ Reduction JSCallReducer::ReduceCallApiFunction(
? jsgraph()->HeapConstant(api_holder)
: receiver;
} else if (function_template_info->accept_any_receiver() &&
function_template_info->signature()->IsUndefined(isolate())) {
function_template_info->signature().IsUndefined(isolate())) {
// We haven't found any {receiver_maps}, but we might still be able to
// optimize the API call depending on the {function_template_info}.
// If the API function accepts any kind of {receiver}, we only need to
@ -2846,7 +2846,7 @@ Reduction JSCallReducer::ReduceCallApiFunction(
// faster than the generic call sequence.
Builtins::Name builtin_name =
!function_template_info->accept_any_receiver()
? (function_template_info->signature()->IsUndefined(isolate())
? (function_template_info->signature().IsUndefined(isolate())
? Builtins::kCallFunctionTemplate_CheckAccess
: Builtins::
kCallFunctionTemplate_CheckAccessAndCompatibleReceiver)

View File

@ -282,8 +282,8 @@ void JSObjectData::SerializeObjectCreateMap(JSHeapBroker* broker) {
TraceScope tracer(broker, this, "JSObjectData::SerializeObjectCreateMap");
Handle<JSObject> jsobject = Handle<JSObject>::cast(object());
if (jsobject->map()->is_prototype_map()) {
Handle<Object> maybe_proto_info(jsobject->map()->prototype_info(),
if (jsobject->map().is_prototype_map()) {
Handle<Object> maybe_proto_info(jsobject->map().prototype_info(),
broker->isolate());
if (maybe_proto_info->IsPrototypeInfo()) {
auto proto_info = Handle<PrototypeInfo>::cast(maybe_proto_info);
@ -358,7 +358,7 @@ JSTypedArrayData::JSTypedArrayData(JSHeapBroker* broker, ObjectData** storage,
is_on_heap_(object->is_on_heap()),
length_(object->length()),
elements_external_pointer_(
FixedTypedArrayBase::cast(object->elements())->external_pointer()) {}
FixedTypedArrayBase::cast(object->elements()).external_pointer()) {}
void JSTypedArrayData::Serialize(JSHeapBroker* broker) {
if (serialized_) return;
@ -705,14 +705,14 @@ bool IsFastLiteralHelper(Handle<JSObject> boilerplate, int max_depth,
// TODO(turbofan): Do we want to support out-of-object properties?
if (!(boilerplate->HasFastProperties() &&
boilerplate->property_array()->length() == 0)) {
boilerplate->property_array().length() == 0)) {
return false;
}
// Check the in-object properties.
Handle<DescriptorArray> descriptors(
boilerplate->map()->instance_descriptors(), isolate);
int limit = boilerplate->map()->NumberOfOwnDescriptors();
Handle<DescriptorArray> descriptors(boilerplate->map().instance_descriptors(),
isolate);
int limit = boilerplate->map().NumberOfOwnDescriptors();
for (int i = 0; i < limit; i++) {
PropertyDetails details = descriptors->GetDetails(i);
if (details.location() != kField) continue;
@ -954,15 +954,15 @@ bool IsReadOnlyLengthDescriptor(Isolate* isolate, Handle<Map> jsarray_map) {
DCHECK(!jsarray_map->is_dictionary_map());
Handle<Name> length_string = isolate->factory()->length_string();
DescriptorArray descriptors = jsarray_map->instance_descriptors();
int number = descriptors->Search(*length_string, *jsarray_map);
int number = descriptors.Search(*length_string, *jsarray_map);
DCHECK_NE(DescriptorArray::kNotFound, number);
return descriptors->GetDetails(number).IsReadOnly();
return descriptors.GetDetails(number).IsReadOnly();
}
bool SupportsFastArrayIteration(Isolate* isolate, Handle<Map> map) {
return map->instance_type() == JS_ARRAY_TYPE &&
IsFastElementsKind(map->elements_kind()) &&
map->prototype()->IsJSArray() &&
map->prototype().IsJSArray() &&
isolate->IsAnyInitialArrayPrototype(
handle(JSArray::cast(map->prototype()), isolate)) &&
isolate->IsNoElementsProtectorIntact();
@ -1724,7 +1724,7 @@ void JSObjectData::SerializeRecursive(JSHeapBroker* broker, int depth) {
// We only serialize boilerplates that pass the IsInlinableFastLiteral
// check, so we only do a sanity check on the depth here.
CHECK_GT(depth, 0);
CHECK(!boilerplate->map()->is_deprecated());
CHECK(!boilerplate->map().is_deprecated());
// Serialize the elements.
Isolate* const isolate = broker->isolate();
@ -1775,13 +1775,13 @@ void JSObjectData::SerializeRecursive(JSHeapBroker* broker, int depth) {
// TODO(turbofan): Do we want to support out-of-object properties?
CHECK(boilerplate->HasFastProperties() &&
boilerplate->property_array()->length() == 0);
boilerplate->property_array().length() == 0);
CHECK_EQ(inobject_fields_.size(), 0u);
// Check the in-object properties.
Handle<DescriptorArray> descriptors(
boilerplate->map()->instance_descriptors(), isolate);
int const limit = boilerplate->map()->NumberOfOwnDescriptors();
Handle<DescriptorArray> descriptors(boilerplate->map().instance_descriptors(),
isolate);
int const limit = boilerplate->map().NumberOfOwnDescriptors();
for (int i = 0; i < limit; i++) {
PropertyDetails details = descriptors->GetDetails(i);
if (details.location() != kField) continue;
@ -1978,14 +1978,14 @@ void JSHeapBroker::CollectArrayAndObjectPrototypes() {
CHECK(array_and_object_prototypes_.empty());
Object maybe_context = isolate()->heap()->native_contexts_list();
while (!maybe_context->IsUndefined(isolate())) {
while (!maybe_context.IsUndefined(isolate())) {
Context context = Context::cast(maybe_context);
Object array_prot = context->get(Context::INITIAL_ARRAY_PROTOTYPE_INDEX);
Object object_prot = context->get(Context::INITIAL_OBJECT_PROTOTYPE_INDEX);
Object array_prot = context.get(Context::INITIAL_ARRAY_PROTOTYPE_INDEX);
Object object_prot = context.get(Context::INITIAL_OBJECT_PROTOTYPE_INDEX);
array_and_object_prototypes_.emplace(JSObject::cast(array_prot), isolate());
array_and_object_prototypes_.emplace(JSObject::cast(object_prot),
isolate());
maybe_context = context->next_context_link();
maybe_context = context.next_context_link();
}
CHECK(!array_and_object_prototypes_.empty());
@ -2427,7 +2427,7 @@ int MapRef::GetInObjectPropertyOffset(int i) const {
PropertyDetails MapRef::GetPropertyDetails(int descriptor_index) const {
if (broker()->mode() == JSHeapBroker::kDisabled) {
AllowHandleDereference allow_handle_dereference;
return object()->instance_descriptors()->GetDetails(descriptor_index);
return object()->instance_descriptors().GetDetails(descriptor_index);
}
DescriptorArrayData* descriptors = data()->AsMap()->instance_descriptors();
return descriptors->contents().at(descriptor_index).details;
@ -2439,7 +2439,7 @@ NameRef MapRef::GetPropertyKey(int descriptor_index) const {
AllowHandleDereference allow_handle_dereference;
return NameRef(
broker(),
handle(object()->instance_descriptors()->GetKey(descriptor_index),
handle(object()->instance_descriptors().GetKey(descriptor_index),
broker()->isolate()));
}
DescriptorArrayData* descriptors = data()->AsMap()->instance_descriptors();
@ -2475,7 +2475,7 @@ ObjectRef MapRef::GetFieldType(int descriptor_index) const {
AllowHandleAllocation handle_allocation;
AllowHandleDereference allow_handle_dereference;
Handle<FieldType> field_type(
object()->instance_descriptors()->GetFieldType(descriptor_index),
object()->instance_descriptors().GetFieldType(descriptor_index),
broker()->isolate());
return ObjectRef(broker(), field_type);
}
@ -2667,7 +2667,7 @@ BIMODAL_ACCESSOR(FeedbackCell, HeapObject, value)
void* JSTypedArrayRef::elements_external_pointer() const {
if (broker()->mode() == JSHeapBroker::kDisabled) {
AllowHandleDereference allow_handle_dereference;
return FixedTypedArrayBase::cast(object()->elements())->external_pointer();
return FixedTypedArrayBase::cast(object()->elements()).external_pointer();
}
return data()->AsJSTypedArray()->elements_external_pointer();
}
@ -2842,7 +2842,7 @@ base::Optional<ObjectRef> ObjectRef::GetOwnConstantElement(
base::Optional<ObjectRef> JSArrayRef::GetOwnCowElement(uint32_t index,
bool serialize) const {
if (broker()->mode() == JSHeapBroker::kDisabled) {
if (!object()->elements()->IsCowArray()) return base::nullopt;
if (!object()->elements().IsCowArray()) return base::nullopt;
return GetOwnElementFromHeap(broker(), object(), index, false);
}
@ -2910,7 +2910,7 @@ ObjectRef::ObjectRef(JSHeapBroker* broker, Handle<Object> object)
namespace {
OddballType GetOddballType(Isolate* isolate, Map map) {
if (map->instance_type() != ODDBALL_TYPE) {
if (map.instance_type() != ODDBALL_TYPE) {
return OddballType::kNone;
}
ReadOnlyRoots roots(isolate);
@ -2941,9 +2941,9 @@ HeapObjectType HeapObjectRef::GetHeapObjectType() const {
AllowHandleDereference handle_dereference;
Map map = Handle<HeapObject>::cast(object())->map();
HeapObjectType::Flags flags(0);
if (map->is_undetectable()) flags |= HeapObjectType::kUndetectable;
if (map->is_callable()) flags |= HeapObjectType::kCallable;
return HeapObjectType(map->instance_type(), flags,
if (map.is_undetectable()) flags |= HeapObjectType::kUndetectable;
if (map.is_callable()) flags |= HeapObjectType::kCallable;
return HeapObjectType(map.instance_type(), flags,
GetOddballType(broker()->isolate(), map));
}
HeapObjectType::Flags flags(0);

View File

@ -744,7 +744,7 @@ void JSInliningHeuristic::PrintCandidates() {
? candidate.functions[i].value().shared()
: candidate.shared_info.value();
PrintF(" - size:%d, name: %s\n", candidate.bytecode[i].value().length(),
shared.object()->DebugName()->ToCString().get());
shared.object()->DebugName().ToCString().get());
}
}
}

View File

@ -246,7 +246,7 @@ Reduction JSNativeContextSpecialization::ReduceJSAsyncFunctionEnter(
FrameStateInfoOf(frame_state->op()).shared_info().ToHandleChecked();
DCHECK(shared->is_compiled());
int register_count = shared->internal_formal_parameter_count() +
shared->GetBytecodeArray()->register_count();
shared->GetBytecodeArray().register_count();
Node* value = effect =
graph()->NewNode(javascript()->CreateAsyncFunctionObject(register_count),
closure, receiver, promise, context, effect, control);
@ -542,8 +542,8 @@ JSNativeContextSpecialization::InferHasInPrototypeChain(
none = false;
break;
}
if (!current->map()->is_stable() ||
current->map()->instance_type() <= LAST_SPECIAL_RECEIVER_TYPE) {
if (!current->map().is_stable() ||
current->map().instance_type() <= LAST_SPECIAL_RECEIVER_TYPE) {
return kMayBeInPrototypeChain;
}
}
@ -560,7 +560,7 @@ JSNativeContextSpecialization::InferHasInPrototypeChain(
// might be a different object each time, so it's much simpler to include
// {prototype}. That does, however, mean that we must check {prototype}'s
// map stability.
if (!prototype->map()->is_stable()) return kMayBeInPrototypeChain;
if (!prototype->map().is_stable()) return kMayBeInPrototypeChain;
last_prototype.emplace(broker(), Handle<JSObject>::cast(prototype));
}
WhereToStart start = result == NodeProperties::kUnreliableReceiverMaps
@ -3305,7 +3305,7 @@ MaybeHandle<Map> JSNativeContextSpecialization::InferReceiverRootMap(
Node* receiver) {
HeapObjectMatcher m(receiver);
if (m.HasValue()) {
return handle(m.Value()->map()->FindRootMap(isolate()), isolate());
return handle(m.Value()->map().FindRootMap(isolate()), isolate());
} else if (m.IsJSCreate()) {
base::Optional<MapRef> initial_map =
NodeProperties::GetJSCreateMap(broker(), receiver);

View File

@ -161,7 +161,7 @@ CallDescriptor* Linkage::ComputeIncoming(Zone* zone,
// plus the receiver.
SharedFunctionInfo shared = info->closure()->shared();
return GetJSCallDescriptor(zone, info->is_osr(),
1 + shared->internal_formal_parameter_count(),
1 + shared.internal_formal_parameter_count(),
CallDescriptor::kCanUseRoots);
}
return nullptr; // TODO(titzer): ?

View File

@ -66,8 +66,7 @@ PipelineStatistics::PipelineStatistics(OptimizedCompilationInfo* info,
phase_name_(nullptr) {
if (info->has_shared_info()) {
source_size_ = static_cast<size_t>(info->shared_info()->SourceSize());
std::unique_ptr<char[]> name =
info->shared_info()->DebugName()->ToCString();
std::unique_ptr<char[]> name = info->shared_info()->DebugName().ToCString();
function_name_ = name.get();
}
total_stats_.Begin(this);

View File

@ -567,18 +567,18 @@ namespace {
void PrintFunctionSource(OptimizedCompilationInfo* info, Isolate* isolate,
int source_id, Handle<SharedFunctionInfo> shared) {
if (!shared->script()->IsUndefined(isolate)) {
if (!shared->script().IsUndefined(isolate)) {
Handle<Script> script(Script::cast(shared->script()), isolate);
if (!script->source()->IsUndefined(isolate)) {
if (!script->source().IsUndefined(isolate)) {
CodeTracer::Scope tracing_scope(isolate->GetCodeTracer());
Object source_name = script->name();
OFStream os(tracing_scope.file());
os << "--- FUNCTION SOURCE (";
if (source_name->IsString()) {
os << String::cast(source_name)->ToCString().get() << ":";
if (source_name.IsString()) {
os << String::cast(source_name).ToCString().get() << ":";
}
os << shared->DebugName()->ToCString().get() << ") id{";
os << shared->DebugName().ToCString().get() << ") id{";
os << info->optimization_id() << "," << source_id << "} start{";
os << shared->StartPosition() << "} ---\n";
{
@ -604,7 +604,7 @@ void PrintInlinedFunctionInfo(
int inlining_id, const OptimizedCompilationInfo::InlinedFunctionHolder& h) {
CodeTracer::Scope tracing_scope(isolate->GetCodeTracer());
OFStream os(tracing_scope.file());
os << "INLINE (" << h.shared_info->DebugName()->ToCString().get() << ") id{"
os << "INLINE (" << h.shared_info->DebugName().ToCString().get() << ") id{"
<< info->optimization_id() << "," << source_id << "} AS " << inlining_id
<< " AT ";
const SourcePosition position = h.position.position;
@ -654,11 +654,11 @@ void PrintCode(Isolate* isolate, Handle<Code> code,
bool print_source = code->kind() == Code::OPTIMIZED_FUNCTION;
if (print_source) {
Handle<SharedFunctionInfo> shared = info->shared_info();
if (shared->script()->IsScript() &&
!Script::cast(shared->script())->source()->IsUndefined(isolate)) {
if (shared->script().IsScript() &&
!Script::cast(shared->script()).source().IsUndefined(isolate)) {
os << "--- Raw source ---\n";
StringCharacterStream stream(
String::cast(Script::cast(shared->script())->source()),
String::cast(Script::cast(shared->script()).source()),
shared->StartPosition());
// fun->end_position() points to the last character in the stream. We
// need to compensate by adding one to calculate the length.
@ -956,7 +956,7 @@ PipelineCompilationJob::Status PipelineCompilationJob::PrepareJobImpl(
compilation_info()->MarkAsAllocationFoldingEnabled();
}
if (compilation_info()->closure()->raw_feedback_cell()->map() ==
if (compilation_info()->closure()->raw_feedback_cell().map() ==
ReadOnlyRoots(isolate).one_closure_cell_map()) {
compilation_info()->MarkAsFunctionContextSpecializing();
}
@ -1016,7 +1016,7 @@ PipelineCompilationJob::Status PipelineCompilationJob::FinalizeJobImpl(
}
compilation_info()->SetCode(code);
compilation_info()->native_context()->AddOptimizedCode(*code);
compilation_info()->native_context().AddOptimizedCode(*code);
RegisterWeakObjectsInOptimizedCode(code, isolate);
return SUCCEEDED;
}
@ -1088,12 +1088,12 @@ namespace {
Maybe<OuterContext> GetModuleContext(Handle<JSFunction> closure) {
Context current = closure->context();
size_t distance = 0;
while (!current->IsNativeContext()) {
if (current->IsModuleContext()) {
while (!current.IsNativeContext()) {
if (current.IsModuleContext()) {
return Just(
OuterContext(handle(current, current->GetIsolate()), distance));
OuterContext(handle(current, current.GetIsolate()), distance));
}
current = current->previous();
current = current.previous();
distance++;
}
return Nothing<OuterContext>();

View File

@ -153,8 +153,8 @@ SerializerForBackgroundCompilation::Environment::Environment(
Zone* zone, CompilationSubject function)
: zone_(zone),
function_(function.blueprint()),
parameter_count_(function_.shared->GetBytecodeArray()->parameter_count()),
register_count_(function_.shared->GetBytecodeArray()->register_count()),
parameter_count_(function_.shared->GetBytecodeArray().parameter_count()),
register_count_(function_.shared->GetBytecodeArray().register_count()),
environment_hints_(environment_hints_size(), Hints(zone), zone),
return_value_hints_(zone) {
Handle<JSFunction> closure;
@ -186,7 +186,7 @@ SerializerForBackgroundCompilation::Environment::Environment(
interpreter::Register new_target_reg =
function_.shared->GetBytecodeArray()
->incoming_new_target_or_generator_register();
.incoming_new_target_or_generator_register();
if (new_target_reg.is_valid()) {
DCHECK(register_hints(new_target_reg).IsEmpty());
if (new_target.has_value()) {
@ -379,7 +379,7 @@ void SerializerForBackgroundCompilation::VisitGetSuperConstructor(
// For JSNativeContextSpecialization::ReduceJSGetSuperConstructor.
if (!constant->IsJSFunction()) continue;
MapRef map(broker(),
handle(HeapObject::cast(*constant)->map(), broker()->isolate()));
handle(HeapObject::cast(*constant).map(), broker()->isolate()));
map.SerializePrototype();
ObjectRef proto = map.prototype();
if (proto.IsHeapObject() && proto.AsHeapObject().map().is_constructor()) {
@ -608,7 +608,7 @@ Hints SerializerForBackgroundCompilation::RunChildSerializer(
padded.pop_back(); // Remove the spread element.
// Fill the rest with empty hints.
padded.resize(
function.blueprint().shared->GetBytecodeArray()->parameter_count(),
function.blueprint().shared->GetBytecodeArray().parameter_count(),
Hints(zone()));
return RunChildSerializer(function, new_target, padded, false);
}
@ -657,7 +657,7 @@ void SerializerForBackgroundCompilation::ProcessCallOrConstruct(
if (!hint->IsJSFunction()) continue;
Handle<JSFunction> function = Handle<JSFunction>::cast(hint);
if (!function->shared()->IsInlineable() || !function->has_feedback_vector())
if (!function->shared().IsInlineable() || !function->has_feedback_vector())
continue;
environment()->accumulator_hints().Add(RunChildSerializer(

View File

@ -5963,8 +5963,8 @@ WasmImportCallKind GetWasmImportCallKind(Handle<JSReceiver> target,
bool has_bigint_feature) {
if (WasmExportedFunction::IsWasmExportedFunction(*target)) {
auto imported_function = WasmExportedFunction::cast(*target);
auto func_index = imported_function->function_index();
auto module = imported_function->instance()->module();
auto func_index = imported_function.function_index();
auto module = imported_function.instance().module();
wasm::FunctionSig* imported_sig = module->functions[func_index].sig;
if (*imported_sig != *expected_sig) {
return WasmImportCallKind::kLinkError;
@ -5978,7 +5978,7 @@ WasmImportCallKind GetWasmImportCallKind(Handle<JSReceiver> target,
}
if (WasmCapiFunction::IsWasmCapiFunction(*target)) {
WasmCapiFunction capi_function = WasmCapiFunction::cast(*target);
if (!capi_function->IsSignatureEqual(expected_sig)) {
if (!capi_function.IsSignatureEqual(expected_sig)) {
return WasmImportCallKind::kLinkError;
}
return WasmImportCallKind::kWasmToCapi;
@ -6011,8 +6011,8 @@ WasmImportCallKind GetWasmImportCallKind(Handle<JSReceiver> target,
COMPARE_SIG_FOR_BUILTIN(F32##name); \
break;
if (FLAG_wasm_math_intrinsics && shared->HasBuiltinId()) {
switch (shared->builtin_id()) {
if (FLAG_wasm_math_intrinsics && shared.HasBuiltinId()) {
switch (shared.builtin_id()) {
COMPARE_SIG_FOR_BUILTIN_F64(Acos);
COMPARE_SIG_FOR_BUILTIN_F64(Asin);
COMPARE_SIG_FOR_BUILTIN_F64(Atan);
@ -6044,12 +6044,12 @@ WasmImportCallKind GetWasmImportCallKind(Handle<JSReceiver> target,
#undef COMPARE_SIG_FOR_BUILTIN_F64
#undef COMPARE_SIG_FOR_BUILTIN_F32_F64
if (IsClassConstructor(shared->kind())) {
if (IsClassConstructor(shared.kind())) {
// Class constructor will throw anyway.
return WasmImportCallKind::kUseCallBuiltin;
}
bool sloppy = is_sloppy(shared->language_mode()) && !shared->native();
if (shared->internal_formal_parameter_count() ==
bool sloppy = is_sloppy(shared.language_mode()) && !shared.native();
if (shared.internal_formal_parameter_count() ==
expected_sig->parameter_count()) {
return sloppy ? WasmImportCallKind::kJSFunctionArityMatchSloppy
: WasmImportCallKind::kJSFunctionArityMatch;

View File

@ -88,7 +88,7 @@ void Context::set_previous(Context context) { set(PREVIOUS_INDEX, context); }
Object Context::next_context_link() { return get(Context::NEXT_CONTEXT_LINK); }
bool Context::has_extension() { return !extension()->IsTheHole(); }
bool Context::has_extension() { return !extension().IsTheHole(); }
HeapObject Context::extension() {
return HeapObject::cast(get(EXTENSION_INDEX));
}
@ -105,44 +105,44 @@ void Context::set_native_context(NativeContext context) {
}
bool Context::IsFunctionContext() const {
return map()->instance_type() == FUNCTION_CONTEXT_TYPE;
return map().instance_type() == FUNCTION_CONTEXT_TYPE;
}
bool Context::IsCatchContext() const {
return map()->instance_type() == CATCH_CONTEXT_TYPE;
return map().instance_type() == CATCH_CONTEXT_TYPE;
}
bool Context::IsWithContext() const {
return map()->instance_type() == WITH_CONTEXT_TYPE;
return map().instance_type() == WITH_CONTEXT_TYPE;
}
bool Context::IsDebugEvaluateContext() const {
return map()->instance_type() == DEBUG_EVALUATE_CONTEXT_TYPE;
return map().instance_type() == DEBUG_EVALUATE_CONTEXT_TYPE;
}
bool Context::IsAwaitContext() const {
return map()->instance_type() == AWAIT_CONTEXT_TYPE;
return map().instance_type() == AWAIT_CONTEXT_TYPE;
}
bool Context::IsBlockContext() const {
return map()->instance_type() == BLOCK_CONTEXT_TYPE;
return map().instance_type() == BLOCK_CONTEXT_TYPE;
}
bool Context::IsModuleContext() const {
return map()->instance_type() == MODULE_CONTEXT_TYPE;
return map().instance_type() == MODULE_CONTEXT_TYPE;
}
bool Context::IsEvalContext() const {
return map()->instance_type() == EVAL_CONTEXT_TYPE;
return map().instance_type() == EVAL_CONTEXT_TYPE;
}
bool Context::IsScriptContext() const {
return map()->instance_type() == SCRIPT_CONTEXT_TYPE;
return map().instance_type() == SCRIPT_CONTEXT_TYPE;
}
bool Context::HasSameSecurityTokenAs(Context that) const {
return this->native_context()->security_token() ==
that->native_context()->security_token();
return this->native_context().security_token() ==
that.native_context().security_token();
}
#define NATIVE_CONTEXT_FIELD_ACCESSORS(index, type, name) \
@ -232,7 +232,7 @@ Map Context::GetInitialJSArrayMap(ElementsKind kind) const {
if (!IsFastElementsKind(kind)) return Map();
DisallowHeapAllocation no_gc;
Object const initial_js_array_map = get(Context::ArrayMapIndex(kind));
DCHECK(!initial_js_array_map->IsUndefined());
DCHECK(!initial_js_array_map.IsUndefined());
return Map::cast(initial_js_array_map);
}

View File

@ -40,11 +40,11 @@ Handle<ScriptContextTable> ScriptContextTable::Extend(
bool ScriptContextTable::Lookup(Isolate* isolate, ScriptContextTable table,
String name, LookupResult* result) {
DisallowHeapAllocation no_gc;
for (int i = 0; i < table->used(); i++) {
Context context = table->get_context(i);
DCHECK(context->IsScriptContext());
for (int i = 0; i < table.used(); i++) {
Context context = table.get_context(i);
DCHECK(context.IsScriptContext());
int slot_index = ScopeInfo::ContextSlotIndex(
context->scope_info(), name, &result->mode, &result->init_flag,
context.scope_info(), name, &result->mode, &result->init_flag,
&result->maybe_assigned_flag);
if (slot_index >= 0) {
@ -62,26 +62,26 @@ bool Context::is_declaration_context() {
return true;
}
if (IsEvalContext()) {
return scope_info()->language_mode() == LanguageMode::kStrict;
return scope_info().language_mode() == LanguageMode::kStrict;
}
if (!IsBlockContext()) return false;
return scope_info()->is_declaration_scope();
return scope_info().is_declaration_scope();
}
Context Context::declaration_context() {
Context current = *this;
while (!current->is_declaration_context()) {
current = current->previous();
while (!current.is_declaration_context()) {
current = current.previous();
}
return current;
}
Context Context::closure_context() {
Context current = *this;
while (!current->IsFunctionContext() && !current->IsScriptContext() &&
!current->IsModuleContext() && !current->IsNativeContext() &&
!current->IsEvalContext()) {
current = current->previous();
while (!current.IsFunctionContext() && !current.IsScriptContext() &&
!current.IsModuleContext() && !current.IsNativeContext() &&
!current.IsEvalContext()) {
current = current.previous();
}
return current;
}
@ -90,9 +90,9 @@ JSObject Context::extension_object() {
DCHECK(IsNativeContext() || IsFunctionContext() || IsBlockContext() ||
IsEvalContext() || IsCatchContext());
HeapObject object = extension();
if (object->IsTheHole()) return JSObject();
DCHECK(object->IsJSContextExtensionObject() ||
(IsNativeContext() && object->IsJSGlobalObject()));
if (object.IsTheHole()) return JSObject();
DCHECK(object.IsJSContextExtensionObject() ||
(IsNativeContext() && object.IsJSGlobalObject()));
return JSObject::cast(object);
}
@ -108,30 +108,30 @@ ScopeInfo Context::scope_info() {
Module Context::module() {
Context current = *this;
while (!current->IsModuleContext()) {
current = current->previous();
while (!current.IsModuleContext()) {
current = current.previous();
}
return Module::cast(current->extension());
return Module::cast(current.extension());
}
JSGlobalObject Context::global_object() {
return JSGlobalObject::cast(native_context()->extension());
return JSGlobalObject::cast(native_context().extension());
}
Context Context::script_context() {
Context current = *this;
while (!current->IsScriptContext()) {
current = current->previous();
while (!current.IsScriptContext()) {
current = current.previous();
}
return current;
}
JSGlobalProxy Context::global_proxy() {
return native_context()->global_proxy_object();
return native_context().global_proxy_object();
}
void Context::set_global_proxy(JSGlobalProxy object) {
native_context()->set_global_proxy_object(object);
native_context().set_global_proxy_object(object);
}
/**
@ -202,7 +202,7 @@ Handle<Object> Context::Lookup(Handle<Context> context, Handle<String> name,
// 1. Check global objects, subjects of with, and extension objects.
DCHECK_IMPLIES(context->IsEvalContext(),
context->extension()->IsTheHole(isolate));
context->extension().IsTheHole(isolate));
if ((context->IsNativeContext() || context->IsWithContext() ||
context->IsFunctionContext() || context->IsBlockContext()) &&
!context->extension_receiver().is_null()) {
@ -215,13 +215,13 @@ Handle<Object> Context::Lookup(Handle<Context> context, Handle<String> name,
}
// Try other script contexts.
ScriptContextTable script_contexts =
context->global_object()->native_context()->script_context_table();
context->global_object().native_context().script_context_table();
ScriptContextTable::LookupResult r;
if (ScriptContextTable::Lookup(isolate, script_contexts, *name, &r)) {
Context context = script_contexts->get_context(r.context_index);
Context context = script_contexts.get_context(r.context_index);
if (FLAG_trace_contexts) {
PrintF("=> found property in script context %d: %p\n",
r.context_index, reinterpret_cast<void*>(context->ptr()));
r.context_index, reinterpret_cast<void*>(context.ptr()));
}
*index = r.slot_index;
*variable_mode = r.mode;
@ -307,7 +307,7 @@ Handle<Object> Context::Lookup(Handle<Context> context, Handle<String> name,
// only the function name variable. It's conceptually (and spec-wise)
// in an outer scope of the function's declaration scope.
if (follow_context_chain && context->IsFunctionContext()) {
int function_index = scope_info->FunctionContextSlotIndex(*name);
int function_index = scope_info.FunctionContextSlotIndex(*name);
if (function_index >= 0) {
if (FLAG_trace_contexts) {
PrintF("=> found intermediate function in context slot %d\n",
@ -318,7 +318,7 @@ Handle<Object> Context::Lookup(Handle<Context> context, Handle<String> name,
*init_flag = kCreatedInitialized;
*variable_mode = VariableMode::kConst;
if (is_sloppy_function_name != nullptr &&
is_sloppy(scope_info->language_mode())) {
is_sloppy(scope_info.language_mode())) {
*is_sloppy_function_name = true;
}
return context;
@ -331,7 +331,7 @@ Handle<Object> Context::Lookup(Handle<Context> context, Handle<String> name,
InitializationFlag flag;
MaybeAssignedFlag maybe_assigned_flag;
int cell_index =
scope_info->ModuleIndex(*name, &mode, &flag, &maybe_assigned_flag);
scope_info.ModuleIndex(*name, &mode, &flag, &maybe_assigned_flag);
if (cell_index != 0) {
if (FLAG_trace_contexts) {
PrintF("=> found in module imports or exports\n");
@ -349,7 +349,7 @@ Handle<Object> Context::Lookup(Handle<Context> context, Handle<String> name,
} else if (context->IsDebugEvaluateContext()) {
// Check materialized locals.
Object ext = context->get(EXTENSION_INDEX);
if (ext->IsJSReceiver()) {
if (ext.IsJSReceiver()) {
Handle<JSReceiver> extension(JSReceiver::cast(ext), isolate);
LookupIterator it(extension, name, extension);
Maybe<bool> found = JSReceiver::HasProperty(&it);
@ -360,7 +360,7 @@ Handle<Object> Context::Lookup(Handle<Context> context, Handle<String> name,
}
// Check the original context, but do not follow its context chain.
Object obj = context->get(WRAPPED_CONTEXT_INDEX);
if (obj->IsContext()) {
if (obj.IsContext()) {
Handle<Context> context(Context::cast(obj), isolate);
Handle<Object> result =
Context::Lookup(context, name, DONT_FOLLOW_CHAINS, index,
@ -370,9 +370,9 @@ Handle<Object> Context::Lookup(Handle<Context> context, Handle<String> name,
// Check whitelist. Names that do not pass whitelist shall only resolve
// to with, script or native contexts up the context chain.
obj = context->get(WHITE_LIST_INDEX);
if (obj->IsStringSet()) {
if (obj.IsStringSet()) {
failed_whitelist =
failed_whitelist || !StringSet::cast(obj)->Has(isolate, name);
failed_whitelist || !StringSet::cast(obj).Has(isolate, name);
}
}
@ -397,9 +397,9 @@ Handle<Object> Context::Lookup(Handle<Context> context, Handle<String> name,
void Context::AddOptimizedCode(Code code) {
DCHECK(IsNativeContext());
DCHECK(code->kind() == Code::OPTIMIZED_FUNCTION);
DCHECK(code->next_code_link()->IsUndefined());
code->set_next_code_link(get(OPTIMIZED_CODE_LIST));
DCHECK(code.kind() == Code::OPTIMIZED_FUNCTION);
DCHECK(code.next_code_link().IsUndefined());
code.set_next_code_link(get(OPTIMIZED_CODE_LIST));
set(OPTIMIZED_CODE_LIST, code, UPDATE_WEAK_WRITE_BARRIER);
}
@ -459,18 +459,18 @@ bool Context::IsBootstrappingOrNativeContext(Isolate* isolate, Object object) {
// During bootstrapping we allow all objects to pass as global
// objects. This is necessary to fix circular dependencies.
return isolate->heap()->gc_state() != Heap::NOT_IN_GC ||
isolate->bootstrapper()->IsActive() || object->IsNativeContext();
isolate->bootstrapper()->IsActive() || object.IsNativeContext();
}
bool Context::IsBootstrappingOrValidParentContext(Object object,
Context child) {
// During bootstrapping we allow all objects to pass as
// contexts. This is necessary to fix circular dependencies.
if (child->GetIsolate()->bootstrapper()->IsActive()) return true;
if (!object->IsContext()) return false;
if (child.GetIsolate()->bootstrapper()->IsActive()) return true;
if (!object.IsContext()) return false;
Context context = Context::cast(object);
return context->IsNativeContext() || context->IsScriptContext() ||
context->IsModuleContext() || !child->IsModuleContext();
return context.IsNativeContext() || context.IsScriptContext() ||
context.IsModuleContext() || !child.IsModuleContext();
}
#endif
@ -483,11 +483,11 @@ void Context::ResetErrorsThrown() {
void Context::IncrementErrorsThrown() {
DCHECK(IsNativeContext());
int previous_value = errors_thrown()->value();
int previous_value = errors_thrown().value();
set_errors_thrown(Smi::FromInt(previous_value + 1));
}
int Context::GetErrorsThrown() { return errors_thrown()->value(); }
int Context::GetErrorsThrown() { return errors_thrown().value(); }
STATIC_ASSERT(Context::MIN_CONTEXT_SLOTS == 4);
STATIC_ASSERT(NativeContext::kScopeInfoOffset ==

View File

@ -38,10 +38,10 @@ DateCache::DateCache()
void DateCache::ResetDateCache(
base::TimezoneCache::TimeZoneDetection time_zone_detection) {
if (stamp_->value() >= Smi::kMaxValue) {
if (stamp_.value() >= Smi::kMaxValue) {
stamp_ = Smi::zero();
} else {
stamp_ = Smi::FromInt(stamp_->value() + 1);
stamp_ = Smi::FromInt(stamp_.value() + 1);
}
DCHECK(stamp_ != Smi::FromInt(kInvalidStamp));
for (int i = 0; i < kDSTSize; ++i) {

View File

@ -14,7 +14,7 @@ namespace internal {
template <typename Char>
bool DateParser::Parse(Isolate* isolate, Vector<Char> str, FixedArray out) {
DCHECK(out->length() >= OUTPUT_SIZE);
DCHECK(out.length() >= OUTPUT_SIZE);
InputReader<Char> in(str);
DateStringTokenizer<Char> scanner(&in);
TimeZoneComposer tz;

View File

@ -58,9 +58,9 @@ bool DateParser::DayComposer::Write(FixedArray output) {
if (!Smi::IsValid(year) || !IsMonth(month) || !IsDay(day)) return false;
output->set(YEAR, Smi::FromInt(year));
output->set(MONTH, Smi::FromInt(month - 1)); // 0-based
output->set(DAY, Smi::FromInt(day));
output.set(YEAR, Smi::FromInt(year));
output.set(MONTH, Smi::FromInt(month - 1)); // 0-based
output.set(DAY, Smi::FromInt(day));
return true;
}
@ -89,10 +89,10 @@ bool DateParser::TimeComposer::Write(FixedArray output) {
}
}
output->set(HOUR, Smi::FromInt(hour));
output->set(MINUTE, Smi::FromInt(minute));
output->set(SECOND, Smi::FromInt(second));
output->set(MILLISECOND, Smi::FromInt(millisecond));
output.set(HOUR, Smi::FromInt(hour));
output.set(MINUTE, Smi::FromInt(minute));
output.set(SECOND, Smi::FromInt(second));
output.set(MILLISECOND, Smi::FromInt(millisecond));
return true;
}
@ -109,9 +109,9 @@ bool DateParser::TimeZoneComposer::Write(FixedArray output) {
total_seconds = -total_seconds;
}
DCHECK(Smi::IsValid(total_seconds));
output->set(UTC_OFFSET, Smi::FromInt(total_seconds));
output.set(UTC_OFFSET, Smi::FromInt(total_seconds));
} else {
output->set_null(UTC_OFFSET);
output.set_null(UTC_OFFSET);
}
return true;
}

View File

@ -49,15 +49,15 @@ class SharedToCounterMap
namespace {
int StartPosition(SharedFunctionInfo info) {
int start = info->function_token_position();
if (start == kNoSourcePosition) start = info->StartPosition();
int start = info.function_token_position();
if (start == kNoSourcePosition) start = info.StartPosition();
return start;
}
bool CompareSharedFunctionInfo(SharedFunctionInfo a, SharedFunctionInfo b) {
int a_start = StartPosition(a);
int b_start = StartPosition(b);
if (a_start == b_start) return a->EndPosition() > b->EndPosition();
if (a_start == b_start) return a.EndPosition() > b.EndPosition();
return a_start < b_start;
}
@ -74,18 +74,18 @@ void SortBlockData(std::vector<CoverageBlock>& v) {
}
std::vector<CoverageBlock> GetSortedBlockData(SharedFunctionInfo shared) {
DCHECK(shared->HasCoverageInfo());
DCHECK(shared.HasCoverageInfo());
CoverageInfo coverage_info =
CoverageInfo::cast(shared->GetDebugInfo()->coverage_info());
CoverageInfo::cast(shared.GetDebugInfo().coverage_info());
std::vector<CoverageBlock> result;
if (coverage_info->SlotCount() == 0) return result;
if (coverage_info.SlotCount() == 0) return result;
for (int i = 0; i < coverage_info->SlotCount(); i++) {
const int start_pos = coverage_info->StartSourcePosition(i);
const int until_pos = coverage_info->EndSourcePosition(i);
const int count = coverage_info->BlockCount(i);
for (int i = 0; i < coverage_info.SlotCount(); i++) {
const int start_pos = coverage_info.StartSourcePosition(i);
const int until_pos = coverage_info.EndSourcePosition(i);
const int count = coverage_info.BlockCount(i);
DCHECK_NE(kNoSourcePosition, start_pos);
result.emplace_back(start_pos, until_pos, count);
@ -386,13 +386,13 @@ void ClampToBinary(CoverageFunction* function) {
}
void ResetAllBlockCounts(SharedFunctionInfo shared) {
DCHECK(shared->HasCoverageInfo());
DCHECK(shared.HasCoverageInfo());
CoverageInfo coverage_info =
CoverageInfo::cast(shared->GetDebugInfo()->coverage_info());
CoverageInfo::cast(shared.GetDebugInfo().coverage_info());
for (int i = 0; i < coverage_info->SlotCount(); i++) {
coverage_info->ResetBlockCount(i);
for (int i = 0; i < coverage_info.SlotCount(); i++) {
coverage_info.ResetBlockCount(i);
}
}
@ -521,10 +521,10 @@ std::unique_ptr<Coverage> Coverage::Collect(
isolate->factory()->feedback_vectors_for_profiling_tools());
for (int i = 0; i < list->Length(); i++) {
FeedbackVector vector = FeedbackVector::cast(list->Get(i));
SharedFunctionInfo shared = vector->shared_function_info();
DCHECK(shared->IsSubjectToDebugging());
uint32_t count = static_cast<uint32_t>(vector->invocation_count());
if (reset_count) vector->clear_invocation_count();
SharedFunctionInfo shared = vector.shared_function_info();
DCHECK(shared.IsSubjectToDebugging());
uint32_t count = static_cast<uint32_t>(vector.invocation_count());
if (reset_count) vector.clear_invocation_count();
counter_map.Add(shared, count);
}
break;
@ -537,18 +537,18 @@ std::unique_ptr<Coverage> Coverage::Collect(
HeapIterator heap_iterator(isolate->heap());
for (HeapObject current_obj = heap_iterator.next();
!current_obj.is_null(); current_obj = heap_iterator.next()) {
if (!current_obj->IsJSFunction()) continue;
if (!current_obj.IsJSFunction()) continue;
JSFunction func = JSFunction::cast(current_obj);
SharedFunctionInfo shared = func->shared();
if (!shared->IsSubjectToDebugging()) continue;
if (!(func->has_feedback_vector() ||
func->has_closure_feedback_cell_array()))
SharedFunctionInfo shared = func.shared();
if (!shared.IsSubjectToDebugging()) continue;
if (!(func.has_feedback_vector() ||
func.has_closure_feedback_cell_array()))
continue;
uint32_t count = 0;
if (func->has_feedback_vector()) {
count = static_cast<uint32_t>(
func->feedback_vector()->invocation_count());
} else if (func->raw_feedback_cell()->interrupt_budget() <
if (func.has_feedback_vector()) {
count =
static_cast<uint32_t>(func.feedback_vector().invocation_count());
} else if (func.raw_feedback_cell().interrupt_budget() <
FLAG_budget_for_feedback_vector_allocation) {
// We haven't allocated feedback vector, but executed the function
// atleast once. We don't have precise invocation count here.
@ -562,7 +562,7 @@ std::unique_ptr<Coverage> Coverage::Collect(
// vector wasn't allocated yet and the function's interrupt budget wasn't
// updated (i.e. it didn't execute return / jump).
for (JavaScriptFrameIterator it(isolate); !it.done(); it.Advance()) {
SharedFunctionInfo shared = it.frame()->function()->shared();
SharedFunctionInfo shared = it.frame()->function().shared();
if (counter_map.Get(shared) != 0) continue;
counter_map.Add(shared, 1);
}
@ -576,7 +576,7 @@ std::unique_ptr<Coverage> Coverage::Collect(
Script::Iterator scripts(isolate);
for (Script script = scripts.Next(); !script.is_null();
script = scripts.Next()) {
if (!script->IsUserJavaScript()) continue;
if (!script.IsUserJavaScript()) continue;
// Create and add new script data.
Handle<Script> script_handle(script, isolate);
@ -601,7 +601,7 @@ std::unique_ptr<Coverage> Coverage::Collect(
// Use sorted list to reconstruct function nesting.
for (SharedFunctionInfo info : sorted) {
int start = StartPosition(info);
int end = info->EndPosition();
int end = info.EndPosition();
uint32_t count = counter_map.Get(info);
// Find the correct outer function based on start position.
while (!nesting.empty() && functions->at(nesting.back()).end <= start) {
@ -614,8 +614,8 @@ std::unique_ptr<Coverage> Coverage::Collect(
break;
case v8::debug::CoverageMode::kBlockBinary:
case v8::debug::CoverageMode::kPreciseBinary:
count = info->has_reported_binary_coverage() ? 0 : 1;
info->set_has_reported_binary_coverage(true);
count = info.has_reported_binary_coverage() ? 0 : 1;
info.set_has_reported_binary_coverage(true);
break;
case v8::debug::CoverageMode::kBestEffort:
count = 1;
@ -623,10 +623,10 @@ std::unique_ptr<Coverage> Coverage::Collect(
}
}
Handle<String> name(info->DebugName(), isolate);
Handle<String> name(info.DebugName(), isolate);
CoverageFunction function(start, end, count, name);
if (IsBlockMode(collectionMode) && info->HasCoverageInfo()) {
if (IsBlockMode(collectionMode) && info.HasCoverageInfo()) {
CollectBlockCoverage(&function, info, collectionMode);
}
@ -681,21 +681,21 @@ void Coverage::SelectMode(Isolate* isolate, debug::CoverageMode mode) {
HeapIterator heap_iterator(isolate->heap());
for (HeapObject o = heap_iterator.next(); !o.is_null();
o = heap_iterator.next()) {
if (o->IsJSFunction()) {
if (o.IsJSFunction()) {
JSFunction func = JSFunction::cast(o);
if (func->has_closure_feedback_cell_array()) {
if (func.has_closure_feedback_cell_array()) {
funcs_needing_feedback_vector.push_back(
Handle<JSFunction>(func, isolate));
}
} else if (IsBinaryMode(mode) && o->IsSharedFunctionInfo()) {
} else if (IsBinaryMode(mode) && o.IsSharedFunctionInfo()) {
// If collecting binary coverage, reset
// SFI::has_reported_binary_coverage to avoid optimizing / inlining
// functions before they have reported coverage.
SharedFunctionInfo shared = SharedFunctionInfo::cast(o);
shared->set_has_reported_binary_coverage(false);
} else if (o->IsFeedbackVector()) {
shared.set_has_reported_binary_coverage(false);
} else if (o.IsFeedbackVector()) {
// In any case, clear any collected invocation counts.
FeedbackVector::cast(o)->clear_invocation_count();
FeedbackVector::cast(o).clear_invocation_count();
}
}
}

View File

@ -90,7 +90,7 @@ MaybeHandle<Object> DebugEvaluate::WithTopmostArguments(Isolate* isolate,
// Get context and receiver.
Handle<Context> native_context(
Context::cast(it.frame()->context())->native_context(), isolate);
Context::cast(it.frame()->context()).native_context(), isolate);
// Materialize arguments as property on an extension object.
Handle<JSObject> materialized = factory->NewJSObjectWithNullProto();
@ -115,7 +115,7 @@ MaybeHandle<Object> DebugEvaluate::WithTopmostArguments(Isolate* isolate,
factory->NewDebugEvaluateContext(native_context, scope_info, materialized,
Handle<Context>(), Handle<StringSet>());
Handle<SharedFunctionInfo> outer_info(
native_context->empty_function()->shared(), isolate);
native_context->empty_function().shared(), isolate);
Handle<JSObject> receiver(native_context->global_proxy(), isolate);
const bool throw_on_side_effect = false;
MaybeHandle<Object> maybe_result =
@ -226,7 +226,7 @@ void DebugEvaluate::ContextBuilder::UpdateValues() {
.ToHandleChecked();
for (int i = 0; i < keys->length(); i++) {
DCHECK(keys->get(i)->IsString());
DCHECK(keys->get(i).IsString());
Handle<String> key(String::cast(keys->get(i)), isolate_);
Handle<Object> value =
JSReceiver::GetDataProperty(element.materialized_object, key);
@ -839,7 +839,7 @@ DebugInfo::SideEffectState DebugEvaluate::FunctionGetSideEffectState(
Isolate* isolate, Handle<SharedFunctionInfo> info) {
if (FLAG_trace_side_effect_free_debug_evaluate) {
PrintF("[debug-evaluate] Checking function %s for side effect.\n",
info->DebugName()->ToCString().get());
info->DebugName().ToCString().get());
}
DCHECK(info->is_compiled());
@ -880,8 +880,8 @@ DebugInfo::SideEffectState DebugEvaluate::FunctionGetSideEffectState(
return requires_runtime_checks ? DebugInfo::kRequiresRuntimeChecks
: DebugInfo::kHasNoSideEffect;
} else if (info->IsApiFunction()) {
if (info->GetCode()->is_builtin()) {
return info->GetCode()->builtin_index() == Builtins::kHandleApiCall
if (info->GetCode().is_builtin()) {
return info->GetCode().builtin_index() == Builtins::kHandleApiCall
? DebugInfo::kHasNoSideEffect
: DebugInfo::kHasSideEffects;
}
@ -1024,9 +1024,9 @@ void DebugEvaluate::VerifyTransitiveBuiltins(Isolate* isolate) {
DCHECK(RelocInfo::IsCodeTargetMode(rinfo->rmode()));
Code callee_code = isolate->heap()->GcSafeFindCodeForInnerPointer(
rinfo->target_address());
if (!callee_code->is_builtin()) continue;
if (!callee_code.is_builtin()) continue;
Builtins::Name callee =
static_cast<Builtins::Name>(callee_code->builtin_index());
static_cast<Builtins::Name>(callee_code.builtin_index());
if (BuiltinGetSideEffectState(callee) == DebugInfo::kHasNoSideEffect) {
continue;
}

View File

@ -47,7 +47,7 @@ FrameInspector::FrameInspector(StandardFrame* frame, int inlined_frame_index,
wasm_interpreted_frame_ =
WasmInterpreterEntryFrame::cast(frame_)
->debug_info()
->GetInterpretedFrame(frame_->fp(), inlined_frame_index);
.GetInterpretedFrame(frame_->fp(), inlined_frame_index);
DCHECK(wasm_interpreted_frame_);
}
}
@ -97,9 +97,9 @@ bool FrameInspector::ParameterIsShadowedByContextLocal(
RedirectActiveFunctions::RedirectActiveFunctions(SharedFunctionInfo shared,
Mode mode)
: shared_(shared), mode_(mode) {
DCHECK(shared->HasBytecodeArray());
DCHECK(shared.HasBytecodeArray());
if (mode == Mode::kUseDebugBytecode) {
DCHECK(shared->HasDebugInfo());
DCHECK(shared.HasDebugInfo());
}
}
@ -109,12 +109,12 @@ void RedirectActiveFunctions::VisitThread(Isolate* isolate,
JavaScriptFrame* frame = it.frame();
JSFunction function = frame->function();
if (!frame->is_interpreted()) continue;
if (function->shared() != shared_) continue;
if (function.shared() != shared_) continue;
InterpretedFrame* interpreted_frame =
reinterpret_cast<InterpretedFrame*>(frame);
BytecodeArray bytecode = mode_ == Mode::kUseDebugBytecode
? shared_->GetDebugInfo()->DebugBytecodeArray()
: shared_->GetBytecodeArray();
? shared_.GetDebugInfo().DebugBytecodeArray()
: shared_.GetBytecodeArray();
interpreted_frame->PatchBytecodeArray(bytecode);
}
}

View File

@ -47,8 +47,8 @@ Handle<Object> ScopeIterator::GetFunctionDebugName() const {
if (!context_->IsNativeContext()) {
DisallowHeapAllocation no_gc;
ScopeInfo closure_info = context_->closure_context()->scope_info();
Handle<String> debug_name(closure_info->FunctionDebugName(), isolate_);
ScopeInfo closure_info = context_->closure_context().scope_info();
Handle<String> debug_name(closure_info.FunctionDebugName(), isolate_);
if (debug_name->length() > 0) return debug_name;
}
return isolate_->factory()->undefined_value();
@ -56,11 +56,11 @@ Handle<Object> ScopeIterator::GetFunctionDebugName() const {
ScopeIterator::ScopeIterator(Isolate* isolate, Handle<JSFunction> function)
: isolate_(isolate), context_(function->context(), isolate) {
if (!function->shared()->IsSubjectToDebugging()) {
if (!function->shared().IsSubjectToDebugging()) {
context_ = Handle<Context>();
return;
}
script_ = handle(Script::cast(function->shared()->script()), isolate);
script_ = handle(Script::cast(function->shared().script()), isolate);
UnwrapEvaluationContext();
}
@ -70,8 +70,8 @@ ScopeIterator::ScopeIterator(Isolate* isolate,
generator_(generator),
function_(generator->function(), isolate),
context_(generator->context(), isolate),
script_(Script::cast(function_->shared()->script()), isolate) {
CHECK(function_->shared()->IsSubjectToDebugging());
script_(Script::cast(function_->shared().script()), isolate) {
CHECK(function_->shared().IsSubjectToDebugging());
TryParseAndRetrieveScopes(DEFAULT);
}
@ -88,7 +88,7 @@ void ScopeIterator::TryParseAndRetrieveScopes(ScopeIterator::Option option) {
// Catch the case when the debugger stops in an internal function.
Handle<SharedFunctionInfo> shared_info(function_->shared(), isolate_);
Handle<ScopeInfo> scope_info(shared_info->scope_info(), isolate_);
if (shared_info->script()->IsUndefined(isolate_)) {
if (shared_info->script().IsUndefined(isolate_)) {
current_scope_ = closure_scope_ = nullptr;
context_ = handle(function_->context(), isolate_);
function_ = Handle<JSFunction>();
@ -191,14 +191,14 @@ void ScopeIterator::UnwrapEvaluationContext() {
if (!context_->IsDebugEvaluateContext()) return;
Context current = *context_;
do {
Object wrapped = current->get(Context::WRAPPED_CONTEXT_INDEX);
if (wrapped->IsContext()) {
Object wrapped = current.get(Context::WRAPPED_CONTEXT_INDEX);
if (wrapped.IsContext()) {
current = Context::cast(wrapped);
} else {
DCHECK(!current->previous().is_null());
current = current->previous();
DCHECK(!current.previous().is_null());
current = current.previous();
}
} while (current->IsDebugEvaluateContext());
} while (current.IsDebugEvaluateContext());
context_ = handle(current, isolate_);
}
@ -232,13 +232,13 @@ bool ScopeIterator::HasPositionInfo() {
int ScopeIterator::start_position() {
if (InInnerScope()) return current_scope_->start_position();
if (context_->IsNativeContext()) return 0;
return context_->closure_context()->scope_info()->StartPosition();
return context_->closure_context().scope_info().StartPosition();
}
int ScopeIterator::end_position() {
if (InInnerScope()) return current_scope_->end_position();
if (context_->IsNativeContext()) return 0;
return context_->closure_context()->scope_info()->EndPosition();
return context_->closure_context().scope_info().EndPosition();
}
bool ScopeIterator::DeclaresLocals(Mode mode) const {
@ -341,7 +341,7 @@ ScopeIterator::ScopeType ScopeIterator::Type() const {
UNREACHABLE();
}
if (context_->IsNativeContext()) {
DCHECK(context_->global_object()->IsJSGlobalObject());
DCHECK(context_->global_object().IsJSGlobalObject());
// If we are at the native context and have not yet seen script scope,
// fake it.
return seen_script_scope_ ? ScopeTypeGlobal : ScopeTypeScript;
@ -481,13 +481,13 @@ void ScopeIterator::DebugPrint() {
case ScopeIterator::ScopeTypeWith:
os << "With:\n";
context_->extension()->Print(os);
context_->extension().Print(os);
break;
case ScopeIterator::ScopeTypeCatch:
os << "Catch:\n";
context_->extension()->Print(os);
context_->get(Context::THROWN_OBJECT_INDEX)->Print(os);
context_->extension().Print(os);
context_->get(Context::THROWN_OBJECT_INDEX).Print(os);
break;
case ScopeIterator::ScopeTypeClosure:
@ -502,10 +502,8 @@ void ScopeIterator::DebugPrint() {
case ScopeIterator::ScopeTypeScript:
os << "Script:\n";
context_->global_object()
->native_context()
->script_context_table()
->Print(os);
context_->global_object().native_context().script_context_table().Print(
os);
break;
default:
@ -521,7 +519,7 @@ int ScopeIterator::GetSourcePosition() {
} else {
DCHECK(!generator_.is_null());
SharedFunctionInfo::EnsureSourcePositionsAvailable(
isolate_, handle(generator_->function()->shared(), isolate_));
isolate_, handle(generator_->function().shared(), isolate_));
return generator_->source_position();
}
}
@ -557,7 +555,7 @@ void ScopeIterator::RetrieveScopeChain(DeclarationScope* scope) {
void ScopeIterator::VisitScriptScope(const Visitor& visitor) const {
Handle<JSGlobalObject> global(context_->global_object(), isolate_);
Handle<ScriptContextTable> script_contexts(
global->native_context()->script_context_table(), isolate_);
global->native_context().script_context_table(), isolate_);
// Skip the first script since that just declares 'this'.
for (int context_index = 1; context_index < script_contexts->used();
@ -576,7 +574,7 @@ void ScopeIterator::VisitModuleScope(const Visitor& visitor) const {
if (VisitContextLocals(visitor, scope_info, context_)) return;
int count_index = scope_info->ModuleVariableCountIndex();
int module_variable_count = Smi::cast(scope_info->get(count_index))->value();
int module_variable_count = Smi::cast(scope_info->get(count_index)).value();
Handle<Module> module(context_->module(), isolate_);
@ -645,8 +643,8 @@ bool ScopeIterator::VisitLocals(const Visitor& visitor, Mode mode) const {
DCHECK(!generator_.is_null());
FixedArray parameters_and_registers =
generator_->parameters_and_registers();
DCHECK_LT(index, parameters_and_registers->length());
value = handle(parameters_and_registers->get(index), isolate_);
DCHECK_LT(index, parameters_and_registers.length());
value = handle(parameters_and_registers.get(index), isolate_);
} else {
value = frame_inspector_->GetParameter(index);
@ -664,10 +662,10 @@ bool ScopeIterator::VisitLocals(const Visitor& visitor, Mode mode) const {
FixedArray parameters_and_registers =
generator_->parameters_and_registers();
int parameter_count =
function_->shared()->scope_info()->ParameterCount();
function_->shared().scope_info().ParameterCount();
index += parameter_count;
DCHECK_LT(index, parameters_and_registers->length());
value = handle(parameters_and_registers->get(index), isolate_);
DCHECK_LT(index, parameters_and_registers.length());
value = handle(parameters_and_registers.get(index), isolate_);
if (value->IsTheHole(isolate_)) {
value = isolate_->factory()->undefined_value();
}
@ -715,7 +713,7 @@ bool ScopeIterator::VisitLocals(const Visitor& visitor, Mode mode) const {
// a proxy, return an empty object.
Handle<JSObject> ScopeIterator::WithContextExtension() {
DCHECK(context_->IsWithContext());
if (context_->extension_receiver()->IsJSProxy()) {
if (context_->extension_receiver().IsJSProxy()) {
return isolate_->factory()->NewJSObjectWithNullProto();
}
return handle(JSObject::cast(context_->extension_receiver()), isolate_);
@ -761,7 +759,7 @@ void ScopeIterator::VisitLocalScope(const Visitor& visitor, Mode mode) const {
DCHECK(!context_->IsScriptContext());
DCHECK(!context_->IsNativeContext());
DCHECK(!context_->IsWithContext());
if (!context_->scope_info()->CallsSloppyEval()) return;
if (!context_->scope_info().CallsSloppyEval()) return;
if (context_->extension_object().is_null()) return;
Handle<JSObject> extension(context_->extension_object(), isolate_);
Handle<FixedArray> keys =
@ -771,7 +769,7 @@ void ScopeIterator::VisitLocalScope(const Visitor& visitor, Mode mode) const {
for (int i = 0; i < keys->length(); i++) {
// Names of variables introduced by eval are strings.
DCHECK(keys->get(i)->IsString());
DCHECK(keys->get(i).IsString());
Handle<String> key(String::cast(keys->get(i)), isolate_);
Handle<Object> value = JSReceiver::GetDataProperty(extension, key);
if (visitor(key, value)) return;
@ -817,7 +815,7 @@ bool ScopeIterator::SetLocalVariableValue(Handle<String> variable_name,
// Set the variable in the suspended generator.
DCHECK(!generator_.is_null());
int parameter_count =
function_->shared()->scope_info()->ParameterCount();
function_->shared().scope_info().ParameterCount();
index += parameter_count;
Handle<FixedArray> parameters_and_registers(
generator_->parameters_and_registers(), isolate_);
@ -854,7 +852,7 @@ bool ScopeIterator::SetContextExtensionValue(Handle<String> variable_name,
Handle<Object> new_value) {
if (!context_->has_extension()) return false;
DCHECK(context_->extension_object()->IsJSContextExtensionObject());
DCHECK(context_->extension_object().IsJSContextExtensionObject());
Handle<JSObject> ext(context_->extension_object(), isolate_);
LookupIterator it(isolate_, ext, variable_name, LookupIterator::OWN);
Maybe<bool> maybe = JSReceiver::HasOwnProperty(ext, variable_name);
@ -887,7 +885,7 @@ bool ScopeIterator::SetModuleVariableValue(Handle<String> variable_name,
VariableMode mode;
InitializationFlag init_flag;
MaybeAssignedFlag maybe_assigned_flag;
cell_index = context_->scope_info()->ModuleIndex(
cell_index = context_->scope_info().ModuleIndex(
*variable_name, &mode, &init_flag, &maybe_assigned_flag);
// Setting imports is currently not supported.
@ -904,7 +902,7 @@ bool ScopeIterator::SetModuleVariableValue(Handle<String> variable_name,
bool ScopeIterator::SetScriptVariableValue(Handle<String> variable_name,
Handle<Object> new_value) {
Handle<ScriptContextTable> script_contexts(
context_->global_object()->native_context()->script_context_table(),
context_->global_object().native_context().script_context_table(),
isolate_);
ScriptContextTable::LookupResult lookup_result;
if (ScriptContextTable::Lookup(isolate_, *script_contexts, *variable_name,

View File

@ -69,9 +69,8 @@ int DebugStackTraceIterator::GetContextId() const {
DCHECK(!Done());
Handle<Object> context = frame_inspector_->GetContext();
if (context->IsContext()) {
Object value =
Context::cast(*context)->native_context()->debug_context_id();
if (value->IsSmi()) return Smi::ToInt(value);
Object value = Context::cast(*context).native_context().debug_context_id();
if (value.IsSmi()) return Smi::ToInt(value);
}
return 0;
}
@ -79,7 +78,7 @@ int DebugStackTraceIterator::GetContextId() const {
v8::MaybeLocal<v8::Value> DebugStackTraceIterator::GetReceiver() const {
DCHECK(!Done());
if (frame_inspector_->IsJavaScript() &&
frame_inspector_->GetFunction()->shared()->kind() == kArrowFunction) {
frame_inspector_->GetFunction()->shared().kind() == kArrowFunction) {
// FrameInspector is not able to get receiver for arrow function.
// So let's try to fetch it using same logic as is used to retrieve 'this'
// during DebugEvaluate::Local.

View File

@ -26,7 +26,7 @@ std::unique_ptr<TypeProfile> TypeProfile::Collect(Isolate* isolate) {
for (Script script = scripts.Next(); !script.is_null();
script = scripts.Next()) {
if (!script->IsUserJavaScript()) {
if (!script.IsUserJavaScript()) {
continue;
}
@ -39,21 +39,20 @@ std::unique_ptr<TypeProfile> TypeProfile::Collect(Isolate* isolate) {
// the list multiple times.
for (int i = 0; i < list->Length(); i++) {
FeedbackVector vector = FeedbackVector::cast(list->Get(i));
SharedFunctionInfo info = vector->shared_function_info();
DCHECK(info->IsSubjectToDebugging());
SharedFunctionInfo info = vector.shared_function_info();
DCHECK(info.IsSubjectToDebugging());
// Match vectors with script.
if (script != info->script()) {
if (script != info.script()) {
continue;
}
if (!info->HasFeedbackMetadata() ||
info->feedback_metadata()->is_empty() ||
!info->feedback_metadata()->HasTypeProfileSlot()) {
if (!info.HasFeedbackMetadata() || info.feedback_metadata().is_empty() ||
!info.feedback_metadata().HasTypeProfileSlot()) {
continue;
}
FeedbackSlot slot = vector->GetTypeProfileSlot();
FeedbackSlot slot = vector.GetTypeProfileSlot();
FeedbackNexus nexus(vector, slot);
Handle<String> name(info->DebugName(), isolate);
Handle<String> name(info.DebugName(), isolate);
std::vector<int> source_positions = nexus.GetSourcePositions();
for (int position : source_positions) {
DCHECK_GE(position, 0);
@ -89,10 +88,10 @@ void TypeProfile::SelectMode(Isolate* isolate, debug::TypeProfileMode mode) {
for (int i = 0; i < list->Length(); i++) {
FeedbackVector vector = FeedbackVector::cast(list->Get(i));
SharedFunctionInfo info = vector->shared_function_info();
DCHECK(info->IsSubjectToDebugging());
if (info->feedback_metadata()->HasTypeProfileSlot()) {
FeedbackSlot slot = vector->GetTypeProfileSlot();
SharedFunctionInfo info = vector.shared_function_info();
DCHECK(info.IsSubjectToDebugging());
if (info.feedback_metadata().HasTypeProfileSlot()) {
FeedbackSlot slot = vector.GetTypeProfileSlot();
FeedbackNexus nexus(vector, slot);
nexus.ResetTypeProfile();
}

View File

@ -202,8 +202,8 @@ BreakIterator::BreakIterator(Handle<DebugInfo> debug_info)
: debug_info_(debug_info),
break_index_(-1),
source_position_iterator_(
debug_info->DebugBytecodeArray()->SourcePositionTable()) {
position_ = debug_info->shared()->StartPosition();
debug_info->DebugBytecodeArray().SourcePositionTable()) {
position_ = debug_info->shared().StartPosition();
statement_position_ = position_;
// There is at least one break location.
DCHECK(!Done());
@ -251,12 +251,12 @@ void BreakIterator::Next() {
DebugBreakType BreakIterator::GetDebugBreakType() {
BytecodeArray bytecode_array = debug_info_->OriginalBytecodeArray();
interpreter::Bytecode bytecode =
interpreter::Bytecodes::FromByte(bytecode_array->get(code_offset()));
interpreter::Bytecodes::FromByte(bytecode_array.get(code_offset()));
// Make sure we read the actual bytecode, not a prefix scaling bytecode.
if (interpreter::Bytecodes::IsPrefixScalingBytecode(bytecode)) {
bytecode = interpreter::Bytecodes::FromByte(
bytecode_array->get(code_offset() + 1));
bytecode =
interpreter::Bytecodes::FromByte(bytecode_array.get(code_offset() + 1));
}
if (bytecode == interpreter::Bytecode::kDebugger) {
@ -296,7 +296,7 @@ void BreakIterator::ClearDebugBreak() {
DCHECK(debug_break_type >= DEBUG_BREAK_SLOT);
BytecodeArray bytecode_array = debug_info_->DebugBytecodeArray();
BytecodeArray original = debug_info_->OriginalBytecodeArray();
bytecode_array->set(code_offset(), original->get(code_offset()));
bytecode_array.set(code_offset(), original.get(code_offset()));
}
BreakLocation BreakIterator::GetBreakLocation() {
@ -541,8 +541,8 @@ bool Debug::IsMutedAtCurrentLocation(JavaScriptFrame* frame) {
FrameSummary summary = FrameSummary::GetTop(frame);
DCHECK(!summary.IsWasm());
Handle<JSFunction> function = summary.AsJavaScript().function();
if (!function->shared()->HasBreakInfo()) return false;
Handle<DebugInfo> debug_info(function->shared()->GetDebugInfo(), isolate_);
if (!function->shared().HasBreakInfo()) return false;
Handle<DebugInfo> debug_info(function->shared().GetDebugInfo(), isolate_);
// Enter the debugger.
DebugScope debug_scope(this);
std::vector<BreakLocation> break_locations;
@ -563,7 +563,7 @@ bool Debug::CheckBreakPoint(Handle<BreakPoint> break_point,
bool is_break_at_entry) {
HandleScope scope(isolate_);
if (!break_point->condition()->length()) return true;
if (!break_point->condition().length()) return true;
Handle<String> condition(break_point->condition(), isolate_);
MaybeHandle<Object> maybe_result;
Handle<Object> result;
@ -685,13 +685,13 @@ void Debug::ApplyBreakPoints(Handle<DebugInfo> debug_info) {
} else {
if (!debug_info->HasInstrumentedBytecodeArray()) return;
FixedArray break_points = debug_info->break_points();
for (int i = 0; i < break_points->length(); i++) {
if (break_points->get(i)->IsUndefined(isolate_)) continue;
BreakPointInfo info = BreakPointInfo::cast(break_points->get(i));
if (info->GetBreakPointCount(isolate_) == 0) continue;
for (int i = 0; i < break_points.length(); i++) {
if (break_points.get(i).IsUndefined(isolate_)) continue;
BreakPointInfo info = BreakPointInfo::cast(break_points.get(i));
if (info.GetBreakPointCount(isolate_) == 0) continue;
DCHECK(debug_info->HasInstrumentedBytecodeArray());
BreakIterator it(debug_info);
it.SkipToPosition(info->source_position());
it.SkipToPosition(info.source_position());
it.SetDebugBreak();
}
}
@ -873,7 +873,7 @@ void Debug::PrepareStepInSuspendedGenerator() {
thread_local_.last_step_action_ = StepIn;
UpdateHookOnFunctionCall();
Handle<JSFunction> function(
JSGeneratorObject::cast(thread_local_.suspended_generator_)->function(),
JSGeneratorObject::cast(thread_local_.suspended_generator_).function(),
isolate_);
FloodWithOneShot(Handle<SharedFunctionInfo>(function->shared(), isolate_));
clear_suspended_generator();
@ -977,12 +977,12 @@ void Debug::PrepareStep(StepAction step_action) {
if (frame->is_wasm_compiled()) return;
WasmInterpreterEntryFrame* wasm_frame =
WasmInterpreterEntryFrame::cast(frame);
wasm_frame->debug_info()->PrepareStep(step_action);
wasm_frame->debug_info().PrepareStep(step_action);
return;
}
JavaScriptFrame* js_frame = JavaScriptFrame::cast(frame);
DCHECK(js_frame->function()->IsJSFunction());
DCHECK(js_frame->function().IsJSFunction());
// Get the debug info (create it if it does not exist).
auto summary = FrameSummary::GetTop(frame).AsJavaScript();
@ -1089,15 +1089,15 @@ Handle<Object> Debug::GetSourceBreakLocations(
Handle<FixedArray> locations = isolate->factory()->NewFixedArray(
debug_info->GetBreakPointCount(isolate));
int count = 0;
for (int i = 0; i < debug_info->break_points()->length(); ++i) {
if (!debug_info->break_points()->get(i)->IsUndefined(isolate)) {
for (int i = 0; i < debug_info->break_points().length(); ++i) {
if (!debug_info->break_points().get(i).IsUndefined(isolate)) {
BreakPointInfo break_point_info =
BreakPointInfo::cast(debug_info->break_points()->get(i));
int break_points = break_point_info->GetBreakPointCount(isolate);
BreakPointInfo::cast(debug_info->break_points().get(i));
int break_points = break_point_info.GetBreakPointCount(isolate);
if (break_points == 0) continue;
for (int j = 0; j < break_points; ++j) {
locations->set(count++,
Smi::FromInt(break_point_info->source_position()));
Smi::FromInt(break_point_info.source_position()));
}
}
}
@ -1148,8 +1148,8 @@ void Debug::DeoptimizeFunction(Handle<SharedFunctionInfo> shared) {
do {
Code code = iterator.Next();
if (code.is_null()) break;
if (code->Inlines(*shared)) {
code->set_marked_for_deoptimization(true);
if (code.Inlines(*shared)) {
code.set_marked_for_deoptimization(true);
found_something = true;
}
} while (true);
@ -1213,7 +1213,7 @@ void Debug::InstallDebugBreakTrampoline() {
current = current->next()) {
if (current->debug_info()->CanBreakAtEntry()) {
needs_to_use_trampoline = true;
if (current->debug_info()->shared()->IsApiFunction()) {
if (current->debug_info()->shared().IsApiFunction()) {
needs_to_clear_ic = true;
break;
}
@ -1229,23 +1229,23 @@ void Debug::InstallDebugBreakTrampoline() {
HeapIterator iterator(isolate_->heap());
for (HeapObject obj = iterator.next(); !obj.is_null();
obj = iterator.next()) {
if (needs_to_clear_ic && obj->IsFeedbackVector()) {
FeedbackVector::cast(obj)->ClearSlots(isolate_);
if (needs_to_clear_ic && obj.IsFeedbackVector()) {
FeedbackVector::cast(obj).ClearSlots(isolate_);
continue;
} else if (obj->IsJSFunction()) {
} else if (obj.IsJSFunction()) {
JSFunction fun = JSFunction::cast(obj);
SharedFunctionInfo shared = fun->shared();
if (!shared->HasDebugInfo()) continue;
if (!shared->GetDebugInfo()->CanBreakAtEntry()) continue;
if (!fun->is_compiled()) {
SharedFunctionInfo shared = fun.shared();
if (!shared.HasDebugInfo()) continue;
if (!shared.GetDebugInfo().CanBreakAtEntry()) continue;
if (!fun.is_compiled()) {
needs_compile.push_back(handle(fun, isolate_));
} else {
fun->set_code(*trampoline);
fun.set_code(*trampoline);
}
} else if (obj->IsAccessorPair()) {
} else if (obj.IsAccessorPair()) {
AccessorPair accessor_pair = AccessorPair::cast(obj);
if (accessor_pair->getter()->IsFunctionTemplateInfo() ||
accessor_pair->setter()->IsFunctionTemplateInfo()) {
if (accessor_pair.getter().IsFunctionTemplateInfo() ||
accessor_pair.setter().IsFunctionTemplateInfo()) {
needs_instantiate.push_back(handle(accessor_pair, isolate_));
}
}
@ -1255,7 +1255,7 @@ void Debug::InstallDebugBreakTrampoline() {
// Forcibly instantiate all lazy accessor pairs to make sure that they
// properly hit the debug break trampoline.
for (Handle<AccessorPair> accessor_pair : needs_instantiate) {
if (accessor_pair->getter()->IsFunctionTemplateInfo()) {
if (accessor_pair->getter().IsFunctionTemplateInfo()) {
Handle<JSFunction> fun =
ApiNatives::InstantiateFunction(
handle(FunctionTemplateInfo::cast(accessor_pair->getter()),
@ -1263,7 +1263,7 @@ void Debug::InstallDebugBreakTrampoline() {
.ToHandleChecked();
accessor_pair->set_getter(*fun);
}
if (accessor_pair->setter()->IsFunctionTemplateInfo()) {
if (accessor_pair->setter().IsFunctionTemplateInfo()) {
Handle<JSFunction> fun =
ApiNatives::InstantiateFunction(
handle(FunctionTemplateInfo::cast(accessor_pair->setter()),
@ -1330,12 +1330,12 @@ bool Debug::GetPossibleBreakpoints(Handle<Script> script, int start_position,
SharedFunctionInfo::ScriptIterator iterator(isolate_, *script);
for (SharedFunctionInfo info = iterator.Next(); !info.is_null();
info = iterator.Next()) {
if (info->EndPosition() < start_position ||
info->StartPosition() >= end_position) {
if (info.EndPosition() < start_position ||
info.StartPosition() >= end_position) {
continue;
}
if (!info->IsSubjectToDebugging()) continue;
if (!info->is_compiled() && !info->allows_lazy_compilation()) continue;
if (!info.IsSubjectToDebugging()) continue;
if (!info.is_compiled() && !info.allows_lazy_compilation()) continue;
candidates.push_back(i::handle(info, isolate_));
}
@ -1394,26 +1394,26 @@ class SharedFunctionInfoFinder {
void NewCandidate(SharedFunctionInfo shared,
JSFunction closure = JSFunction()) {
if (!shared->IsSubjectToDebugging()) return;
int start_position = shared->function_token_position();
if (!shared.IsSubjectToDebugging()) return;
int start_position = shared.function_token_position();
if (start_position == kNoSourcePosition) {
start_position = shared->StartPosition();
start_position = shared.StartPosition();
}
if (start_position > target_position_) return;
if (target_position_ > shared->EndPosition()) return;
if (target_position_ > shared.EndPosition()) return;
if (!current_candidate_.is_null()) {
if (current_start_position_ == start_position &&
shared->EndPosition() == current_candidate_->EndPosition()) {
shared.EndPosition() == current_candidate_.EndPosition()) {
// If we already have a matching closure, do not throw it away.
if (!current_candidate_closure_.is_null() && closure.is_null()) return;
// If a top-level function contains only one function
// declaration the source for the top-level and the function
// is the same. In that case prefer the non top-level function.
if (!current_candidate_->is_toplevel() && shared->is_toplevel()) return;
if (!current_candidate_.is_toplevel() && shared.is_toplevel()) return;
} else if (start_position < current_start_position_ ||
current_candidate_->EndPosition() < shared->EndPosition()) {
current_candidate_.EndPosition() < shared.EndPosition()) {
return;
}
}
@ -1462,7 +1462,7 @@ Handle<Object> Debug::FindSharedFunctionInfoInScript(Handle<Script> script,
shared = finder.Result();
if (shared.is_null()) break;
// We found it if it's already compiled.
is_compiled_scope = shared->is_compiled_scope();
is_compiled_scope = shared.is_compiled_scope();
if (is_compiled_scope.is_compiled()) {
Handle<SharedFunctionInfo> shared_handle(shared, isolate_);
// If the iteration count is larger than 1, we had to compile the outer
@ -1479,7 +1479,7 @@ Handle<Object> Debug::FindSharedFunctionInfoInScript(Handle<Script> script,
// If not, compile to reveal inner functions.
HandleScope scope(isolate_);
// Code that cannot be compiled lazily are internal and not debuggable.
DCHECK(shared->allows_lazy_compilation());
DCHECK(shared.allows_lazy_compilation());
if (!Compiler::Compile(handle(shared, isolate_), Compiler::CLEAR_EXCEPTION,
&is_compiled_scope)) {
break;
@ -1617,7 +1617,7 @@ void Debug::FreeDebugInfoListNode(DebugInfoListNode* prev,
// Pack script back into the
// SFI::script_or_debug_info field.
Handle<DebugInfo> debug_info(node->debug_info());
debug_info->shared()->set_script_or_debug_info(debug_info->script());
debug_info->shared().set_script_or_debug_info(debug_info->script());
delete node;
}
@ -1626,7 +1626,7 @@ bool Debug::IsBreakAtReturn(JavaScriptFrame* frame) {
HandleScope scope(isolate_);
// Get the executing function in which the debug break occurred.
Handle<SharedFunctionInfo> shared(frame->function()->shared(), isolate_);
Handle<SharedFunctionInfo> shared(frame->function().shared(), isolate_);
// With no debug info there are no break points, so we can't be at a return.
if (!shared->HasBreakInfo()) return false;
@ -1673,7 +1673,7 @@ Handle<FixedArray> Debug::GetLoadedScripts() {
Script::Iterator iterator(isolate_);
for (Script script = iterator.Next(); !script.is_null();
script = iterator.Next()) {
if (script->HasValidSource()) results->set(length++, script);
if (script.HasValidSource()) results->set(length++, script);
}
}
return FixedArray::ShrinkOrEmpty(isolate_, results, length);
@ -1806,7 +1806,7 @@ void Debug::OnDebugBreak(Handle<FixedArray> break_points_hit) {
// This array contains breakpoints installed using JS debug API.
for (int i = 0; i < break_points_hit->length(); ++i) {
BreakPoint break_point = BreakPoint::cast(break_points_hit->get(i));
inspector_break_points_hit.push_back(break_point->id());
inspector_break_points_hit.push_back(break_point.id());
++inspector_break_points_count;
}
@ -1834,13 +1834,13 @@ bool Debug::IsBlackboxed(Handle<SharedFunctionInfo> shared) {
Handle<DebugInfo> debug_info = GetOrCreateDebugInfo(shared);
if (!debug_info->computed_debug_is_blackboxed()) {
bool is_blackboxed =
!shared->IsSubjectToDebugging() || !shared->script()->IsScript();
!shared->IsSubjectToDebugging() || !shared->script().IsScript();
if (!is_blackboxed) {
SuppressDebug while_processing(this);
HandleScope handle_scope(isolate_);
PostponeInterruptsScope no_interrupts(isolate_);
DisableBreak no_recursive_break(this);
DCHECK(shared->script()->IsScript());
DCHECK(shared->script().IsScript());
Handle<Script> script(Script::cast(shared->script()), isolate_);
DCHECK(script->IsUserJavaScript());
debug::Location start = GetDebugLocation(script, shared->StartPosition());
@ -1978,7 +1978,7 @@ void Debug::HandleDebugBreak(IgnoreBreakMode ignore_break_mode) {
{ JavaScriptFrameIterator it(isolate_);
DCHECK(!it.done());
Object fun = it.frame()->function();
if (fun->IsJSFunction()) {
if (fun.IsJSFunction()) {
HandleScope scope(isolate_);
Handle<JSFunction> function(JSFunction::cast(fun), isolate_);
// Don't stop in builtin and blackboxed functions.
@ -2091,7 +2091,7 @@ void Debug::UpdateDebugInfosForExecutionMode() {
Handle<DebugInfo> debug_info = current->debug_info();
if (debug_info->HasInstrumentedBytecodeArray() &&
debug_info->DebugExecutionMode() != isolate_->debug_execution_mode()) {
DCHECK(debug_info->shared()->HasBytecodeArray());
DCHECK(debug_info->shared().HasBytecodeArray());
if (isolate_->debug_execution_mode() == DebugInfo::kBreakpoints) {
ClearSideEffectChecks(debug_info);
ApplyBreakPoints(debug_info);
@ -2173,7 +2173,7 @@ bool Debug::PerformSideEffectCheck(Handle<JSFunction> function,
Handle<Object> receiver) {
DCHECK_EQ(isolate_->debug_execution_mode(), DebugInfo::kSideEffects);
DisallowJavascriptExecution no_js(isolate_);
IsCompiledScope is_compiled_scope(function->shared()->is_compiled_scope());
IsCompiledScope is_compiled_scope(function->shared().is_compiled_scope());
if (!function->is_compiled() &&
!Compiler::Compile(function, Compiler::KEEP_EXCEPTION,
&is_compiled_scope)) {
@ -2188,7 +2188,7 @@ bool Debug::PerformSideEffectCheck(Handle<JSFunction> function,
case DebugInfo::kHasSideEffects:
if (FLAG_trace_side_effect_free_debug_evaluate) {
PrintF("[debug-evaluate] Function %s failed side effect check.\n",
function->shared()->DebugName()->ToCString().get());
function->shared().DebugName().ToCString().get());
}
side_effect_check_failed_ = true;
// Throw an uncatchable termination exception.
@ -2225,7 +2225,7 @@ bool Debug::PerformSideEffectCheckForCallback(
DCHECK_EQ(!receiver.is_null(), callback_info->IsAccessorInfo());
DCHECK_EQ(isolate_->debug_execution_mode(), DebugInfo::kSideEffects);
if (!callback_info.is_null() && callback_info->IsCallHandlerInfo() &&
i::CallHandlerInfo::cast(*callback_info)->NextCallHasNoSideEffect()) {
i::CallHandlerInfo::cast(*callback_info).NextCallHasNoSideEffect()) {
return true;
}
// TODO(7515): always pass a valid callback info object.
@ -2234,8 +2234,8 @@ bool Debug::PerformSideEffectCheckForCallback(
// List of whitelisted internal accessors can be found in accessors.h.
AccessorInfo info = AccessorInfo::cast(*callback_info);
DCHECK_NE(kNotAccessor, accessor_kind);
switch (accessor_kind == kSetter ? info->setter_side_effect_type()
: info->getter_side_effect_type()) {
switch (accessor_kind == kSetter ? info.setter_side_effect_type()
: info.getter_side_effect_type()) {
case SideEffectType::kHasNoSideEffect:
// We do not support setter accessors with no side effects, since
// calling set accessors go through a store bytecode. Store bytecodes
@ -2252,18 +2252,18 @@ bool Debug::PerformSideEffectCheckForCallback(
}
if (FLAG_trace_side_effect_free_debug_evaluate) {
PrintF("[debug-evaluate] API Callback '");
info->name()->ShortPrint();
info.name().ShortPrint();
PrintF("' may cause side effect.\n");
}
} else if (callback_info->IsInterceptorInfo()) {
InterceptorInfo info = InterceptorInfo::cast(*callback_info);
if (info->has_no_side_effect()) return true;
if (info.has_no_side_effect()) return true;
if (FLAG_trace_side_effect_free_debug_evaluate) {
PrintF("[debug-evaluate] API Interceptor may cause side effect.\n");
}
} else if (callback_info->IsCallHandlerInfo()) {
CallHandlerInfo info = CallHandlerInfo::cast(*callback_info);
if (info->IsSideEffectFreeCallHandlerInfo()) return true;
if (info.IsSideEffectFreeCallHandlerInfo()) return true;
if (FLAG_trace_side_effect_free_debug_evaluate) {
PrintF("[debug-evaluate] API CallHandlerInfo may cause side effect.\n");
}
@ -2280,8 +2280,8 @@ bool Debug::PerformSideEffectCheckAtBytecode(InterpretedFrame* frame) {
using interpreter::Bytecode;
DCHECK_EQ(isolate_->debug_execution_mode(), DebugInfo::kSideEffects);
SharedFunctionInfo shared = frame->function()->shared();
BytecodeArray bytecode_array = shared->GetBytecodeArray();
SharedFunctionInfo shared = frame->function().shared();
BytecodeArray bytecode_array = shared.GetBytecodeArray();
int offset = frame->GetBytecodeOffset();
interpreter::BytecodeArrayAccessor bytecode_accessor(
handle(bytecode_array, isolate_), offset);

View File

@ -811,12 +811,12 @@ class FunctionDataMap : public ThreadVisitor {
}
bool Lookup(SharedFunctionInfo sfi, FunctionData** data) {
int start_position = sfi->StartPosition();
if (!sfi->script()->IsScript() || start_position == -1) {
int start_position = sfi.StartPosition();
if (!sfi.script().IsScript() || start_position == -1) {
return false;
}
Script script = Script::cast(sfi->script());
return Lookup(GetFuncId(script->id(), sfi), data);
Script script = Script::cast(sfi.script());
return Lookup(GetFuncId(script.id(), sfi), data);
}
bool Lookup(Handle<Script> script, FunctionLiteral* literal,
@ -829,21 +829,21 @@ class FunctionDataMap : public ThreadVisitor {
HeapIterator iterator(isolate->heap(), HeapIterator::kFilterUnreachable);
for (HeapObject obj = iterator.next(); !obj.is_null();
obj = iterator.next()) {
if (obj->IsSharedFunctionInfo()) {
if (obj.IsSharedFunctionInfo()) {
SharedFunctionInfo sfi = SharedFunctionInfo::cast(obj);
FunctionData* data = nullptr;
if (!Lookup(sfi, &data)) continue;
data->shared = handle(sfi, isolate);
} else if (obj->IsJSFunction()) {
} else if (obj.IsJSFunction()) {
JSFunction js_function = JSFunction::cast(obj);
SharedFunctionInfo sfi = js_function->shared();
SharedFunctionInfo sfi = js_function.shared();
FunctionData* data = nullptr;
if (!Lookup(sfi, &data)) continue;
data->js_functions.emplace_back(js_function, isolate);
} else if (obj->IsJSGeneratorObject()) {
} else if (obj.IsJSGeneratorObject()) {
JSGeneratorObject gen = JSGeneratorObject::cast(obj);
if (gen->is_closed()) continue;
SharedFunctionInfo sfi = gen->function()->shared();
if (gen.is_closed()) continue;
SharedFunctionInfo sfi = gen.function().shared();
FunctionData* data = nullptr;
if (!Lookup(sfi, &data)) continue;
data->running_generators.emplace_back(gen, isolate);
@ -903,10 +903,10 @@ class FunctionDataMap : public ThreadVisitor {
}
FuncId GetFuncId(int script_id, SharedFunctionInfo sfi) {
DCHECK_EQ(script_id, Script::cast(sfi->script())->id());
int start_position = sfi->StartPosition();
DCHECK_EQ(script_id, Script::cast(sfi.script()).id());
int start_position = sfi.StartPosition();
DCHECK_NE(start_position, -1);
if (sfi->is_toplevel()) {
if (sfi.is_toplevel()) {
// This is the top-level function, so special case its start position
DCHECK_EQ(start_position, 0);
start_position = -1;
@ -1119,10 +1119,10 @@ void LiveEdit::PatchScript(Isolate* isolate, Handle<Script> script,
sfi->set_script(*new_script);
if (sfi->HasUncompiledData()) {
sfi->uncompiled_data()->set_function_literal_id(
sfi->uncompiled_data().set_function_literal_id(
mapping.second->function_literal_id());
}
new_script->shared_function_infos()->Set(
new_script->shared_function_infos().Set(
mapping.second->function_literal_id(), HeapObjectReference::Weak(*sfi));
DCHECK_EQ(sfi->FunctionLiteralId(isolate),
mapping.second->function_literal_id());
@ -1144,11 +1144,11 @@ void LiveEdit::PatchScript(Isolate* isolate, Handle<Script> script,
}
if (!sfi->HasBytecodeArray()) continue;
FixedArray constants = sfi->GetBytecodeArray()->constant_pool();
for (int i = 0; i < constants->length(); ++i) {
if (!constants->get(i)->IsSharedFunctionInfo()) continue;
FixedArray constants = sfi->GetBytecodeArray().constant_pool();
for (int i = 0; i < constants.length(); ++i) {
if (!constants.get(i).IsSharedFunctionInfo()) continue;
FunctionData* data = nullptr;
if (!function_data_map.Lookup(SharedFunctionInfo::cast(constants->get(i)),
if (!function_data_map.Lookup(SharedFunctionInfo::cast(constants.get(i)),
&data)) {
continue;
}
@ -1159,7 +1159,7 @@ void LiveEdit::PatchScript(Isolate* isolate, Handle<Script> script,
}
Handle<SharedFunctionInfo> new_sfi;
if (!data->shared.ToHandle(&new_sfi)) continue;
constants->set(i, *new_sfi);
constants.set(i, *new_sfi);
}
}
for (const auto& mapping : changed) {
@ -1176,7 +1176,7 @@ void LiveEdit::PatchScript(Isolate* isolate, Handle<Script> script,
isolate->compilation_cache()->Remove(sfi);
for (auto& js_function : data->js_functions) {
js_function->set_shared(*new_sfi);
js_function->set_code(js_function->shared()->GetCode());
js_function->set_code(js_function->shared().GetCode());
js_function->set_raw_feedback_cell(
*isolate->factory()->many_closures_cell());
@ -1186,30 +1186,29 @@ void LiveEdit::PatchScript(Isolate* isolate, Handle<Script> script,
}
SharedFunctionInfo::ScriptIterator it(isolate, *new_script);
for (SharedFunctionInfo sfi = it.Next(); !sfi.is_null(); sfi = it.Next()) {
if (!sfi->HasBytecodeArray()) continue;
FixedArray constants = sfi->GetBytecodeArray()->constant_pool();
for (int i = 0; i < constants->length(); ++i) {
if (!constants->get(i)->IsSharedFunctionInfo()) continue;
SharedFunctionInfo inner_sfi =
SharedFunctionInfo::cast(constants->get(i));
if (!sfi.HasBytecodeArray()) continue;
FixedArray constants = sfi.GetBytecodeArray().constant_pool();
for (int i = 0; i < constants.length(); ++i) {
if (!constants.get(i).IsSharedFunctionInfo()) continue;
SharedFunctionInfo inner_sfi = SharedFunctionInfo::cast(constants.get(i));
// See if there is a mapping from this function's start position to a
// unchanged function's id.
auto unchanged_it =
start_position_to_unchanged_id.find(inner_sfi->StartPosition());
start_position_to_unchanged_id.find(inner_sfi.StartPosition());
if (unchanged_it == start_position_to_unchanged_id.end()) continue;
// Grab that function id from the new script's SFI list, which should have
// already been updated in in the unchanged pass.
SharedFunctionInfo old_unchanged_inner_sfi =
SharedFunctionInfo::cast(new_script->shared_function_infos()
->Get(unchanged_it->second)
.Get(unchanged_it->second)
->GetHeapObject());
if (old_unchanged_inner_sfi == inner_sfi) continue;
DCHECK_NE(old_unchanged_inner_sfi, inner_sfi);
// Now some sanity checks. Make sure that the unchanged SFI has already
// been processed and patched to be on the new script ...
DCHECK_EQ(old_unchanged_inner_sfi->script(), *new_script);
constants->set(i, old_unchanged_inner_sfi);
DCHECK_EQ(old_unchanged_inner_sfi.script(), *new_script);
constants.set(i, old_unchanged_inner_sfi);
}
}
#ifdef DEBUG
@ -1222,28 +1221,28 @@ void LiveEdit::PatchScript(Isolate* isolate, Handle<Script> script,
SharedFunctionInfo::ScriptIterator it(isolate, *new_script);
std::set<int> start_positions;
for (SharedFunctionInfo sfi = it.Next(); !sfi.is_null(); sfi = it.Next()) {
DCHECK_EQ(sfi->script(), *new_script);
DCHECK_EQ(sfi->FunctionLiteralId(isolate), it.CurrentIndex());
DCHECK_EQ(sfi.script(), *new_script);
DCHECK_EQ(sfi.FunctionLiteralId(isolate), it.CurrentIndex());
// Don't check the start position of the top-level function, as it can
// overlap with a function in the script.
if (sfi->is_toplevel()) {
DCHECK_EQ(start_positions.find(sfi->StartPosition()),
if (sfi.is_toplevel()) {
DCHECK_EQ(start_positions.find(sfi.StartPosition()),
start_positions.end());
start_positions.insert(sfi->StartPosition());
start_positions.insert(sfi.StartPosition());
}
if (!sfi->HasBytecodeArray()) continue;
if (!sfi.HasBytecodeArray()) continue;
// Check that all the functions in this function's constant pool are also
// on the new script, and that their id matches their index in the new
// scripts function list.
FixedArray constants = sfi->GetBytecodeArray()->constant_pool();
for (int i = 0; i < constants->length(); ++i) {
if (!constants->get(i)->IsSharedFunctionInfo()) continue;
FixedArray constants = sfi.GetBytecodeArray().constant_pool();
for (int i = 0; i < constants.length(); ++i) {
if (!constants.get(i).IsSharedFunctionInfo()) continue;
SharedFunctionInfo inner_sfi =
SharedFunctionInfo::cast(constants->get(i));
DCHECK_EQ(inner_sfi->script(), *new_script);
SharedFunctionInfo::cast(constants.get(i));
DCHECK_EQ(inner_sfi.script(), *new_script);
DCHECK_EQ(inner_sfi, new_script->shared_function_infos()
->Get(inner_sfi->FunctionLiteralId(isolate))
.Get(inner_sfi.FunctionLiteralId(isolate))
->GetHeapObject());
}
}

View File

@ -54,7 +54,7 @@ class FrameWriter {
}
void PushRawObject(Object obj, const char* debug_hint) {
intptr_t value = obj->ptr();
intptr_t value = obj.ptr();
PushValue(value);
if (trace_scope_ != nullptr) {
DebugPrintOutputObject(obj, top_offset_, debug_hint);
@ -121,10 +121,10 @@ class FrameWriter {
if (trace_scope_ != nullptr) {
PrintF(trace_scope_->file(), " " V8PRIxPTR_FMT ": [top + %3d] <- ",
output_address(output_offset), output_offset);
if (obj->IsSmi()) {
PrintF(V8PRIxPTR_FMT " <Smi %d>", obj->ptr(), Smi::cast(obj)->value());
if (obj.IsSmi()) {
PrintF(V8PRIxPTR_FMT " <Smi %d>", obj.ptr(), Smi::cast(obj).value());
} else {
obj->ShortPrint(trace_scope_->file());
obj.ShortPrint(trace_scope_->file());
}
PrintF(trace_scope_->file(), " ; %s", debug_hint);
}
@ -156,16 +156,16 @@ void DeoptimizerData::set_deopt_entry_code(DeoptimizeKind kind, Code code) {
}
Code Deoptimizer::FindDeoptimizingCode(Address addr) {
if (function_->IsHeapObject()) {
if (function_.IsHeapObject()) {
// Search all deoptimizing code in the native context of the function.
Isolate* isolate = isolate_;
Context native_context = function_->context()->native_context();
Object element = native_context->DeoptimizedCodeListHead();
while (!element->IsUndefined(isolate)) {
Context native_context = function_.context().native_context();
Object element = native_context.DeoptimizedCodeListHead();
while (!element.IsUndefined(isolate)) {
Code code = Code::cast(element);
CHECK(code->kind() == Code::OPTIMIZED_FUNCTION);
if (code->contains(addr)) return code;
element = code->next_code_link();
CHECK(code.kind() == Code::OPTIMIZED_FUNCTION);
if (code.contains(addr)) return code;
element = code.next_code_link();
}
}
return Code();
@ -244,15 +244,15 @@ class ActivationsFinder : public ThreadVisitor {
for (StackFrameIterator it(isolate, top); !it.done(); it.Advance()) {
if (it.frame()->type() == StackFrame::OPTIMIZED) {
Code code = it.frame()->LookupCode();
if (code->kind() == Code::OPTIMIZED_FUNCTION &&
code->marked_for_deoptimization()) {
if (code.kind() == Code::OPTIMIZED_FUNCTION &&
code.marked_for_deoptimization()) {
codes_->erase(code);
// Obtain the trampoline to the deoptimizer call.
SafepointEntry safepoint = code->GetSafepointEntry(it.frame()->pc());
SafepointEntry safepoint = code.GetSafepointEntry(it.frame()->pc());
int trampoline_pc = safepoint.trampoline_pc();
DCHECK_IMPLIES(code == topmost_, safe_to_deopt_);
// Replace the current pc on the stack with the trampoline.
it.frame()->set_pc(code->raw_instruction_start() + trampoline_pc);
it.frame()->set_pc(code.raw_instruction_start() + trampoline_pc);
}
}
}
@ -273,7 +273,7 @@ class ActivationsFinder : public ThreadVisitor {
void Deoptimizer::DeoptimizeMarkedCodeForContext(Context context) {
DisallowHeapAllocation no_allocation;
Isolate* isolate = context->GetIsolate();
Isolate* isolate = context.GetIsolate();
Code topmost_optimized_code;
bool safe_to_deopt_topmost_optimized_code = false;
#ifdef DEBUG
@ -290,14 +290,14 @@ void Deoptimizer::DeoptimizeMarkedCodeForContext(Context context) {
if (FLAG_trace_deopt) {
CodeTracer::Scope scope(isolate->GetCodeTracer());
PrintF(scope.file(), "[deoptimizer found activation of function: ");
function->PrintName(scope.file());
function.PrintName(scope.file());
PrintF(scope.file(), " / %" V8PRIxPTR "]\n", function.ptr());
}
SafepointEntry safepoint = code->GetSafepointEntry(it.frame()->pc());
SafepointEntry safepoint = code.GetSafepointEntry(it.frame()->pc());
// Turbofan deopt is checked when we are patching addresses on stack.
bool safe_if_deopt_triggered = safepoint.has_deoptimization_index();
bool is_builtin_code = code->kind() == Code::BUILTIN;
bool is_builtin_code = code.kind() == Code::BUILTIN;
DCHECK(topmost_optimized_code.is_null() || safe_if_deopt_triggered ||
is_builtin_code);
if (topmost_optimized_code.is_null()) {
@ -315,26 +315,26 @@ void Deoptimizer::DeoptimizeMarkedCodeForContext(Context context) {
// Move marked code from the optimized code list to the deoptimized code list.
// Walk over all optimized code objects in this native context.
Code prev;
Object element = context->OptimizedCodeListHead();
while (!element->IsUndefined(isolate)) {
Object element = context.OptimizedCodeListHead();
while (!element.IsUndefined(isolate)) {
Code code = Code::cast(element);
CHECK_EQ(code->kind(), Code::OPTIMIZED_FUNCTION);
Object next = code->next_code_link();
CHECK_EQ(code.kind(), Code::OPTIMIZED_FUNCTION);
Object next = code.next_code_link();
if (code->marked_for_deoptimization()) {
if (code.marked_for_deoptimization()) {
codes.insert(code);
if (!prev.is_null()) {
// Skip this code in the optimized code list.
prev->set_next_code_link(next);
prev.set_next_code_link(next);
} else {
// There was no previous node, the next node is the new head.
context->SetOptimizedCodeListHead(next);
context.SetOptimizedCodeListHead(next);
}
// Move the code to the _deoptimized_ code list.
code->set_next_code_link(context->DeoptimizedCodeListHead());
context->SetDeoptimizedCodeListHead(code);
code.set_next_code_link(context.DeoptimizedCodeListHead());
context.SetDeoptimizedCodeListHead(code);
} else {
// Not marked; preserve this element.
prev = code;
@ -372,11 +372,11 @@ void Deoptimizer::DeoptimizeAll(Isolate* isolate) {
DisallowHeapAllocation no_allocation;
// For all contexts, mark all code, then deoptimize.
Object context = isolate->heap()->native_contexts_list();
while (!context->IsUndefined(isolate)) {
while (!context.IsUndefined(isolate)) {
Context native_context = Context::cast(context);
MarkAllCodeForContext(native_context);
DeoptimizeMarkedCodeForContext(native_context);
context = native_context->next_context_link();
context = native_context.next_context_link();
}
}
@ -392,47 +392,47 @@ void Deoptimizer::DeoptimizeMarkedCode(Isolate* isolate) {
DisallowHeapAllocation no_allocation;
// For all contexts, deoptimize code already marked.
Object context = isolate->heap()->native_contexts_list();
while (!context->IsUndefined(isolate)) {
while (!context.IsUndefined(isolate)) {
Context native_context = Context::cast(context);
DeoptimizeMarkedCodeForContext(native_context);
context = native_context->next_context_link();
context = native_context.next_context_link();
}
}
void Deoptimizer::MarkAllCodeForContext(Context context) {
Object element = context->OptimizedCodeListHead();
Isolate* isolate = context->GetIsolate();
while (!element->IsUndefined(isolate)) {
Object element = context.OptimizedCodeListHead();
Isolate* isolate = context.GetIsolate();
while (!element.IsUndefined(isolate)) {
Code code = Code::cast(element);
CHECK_EQ(code->kind(), Code::OPTIMIZED_FUNCTION);
code->set_marked_for_deoptimization(true);
element = code->next_code_link();
CHECK_EQ(code.kind(), Code::OPTIMIZED_FUNCTION);
code.set_marked_for_deoptimization(true);
element = code.next_code_link();
}
}
void Deoptimizer::DeoptimizeFunction(JSFunction function, Code code) {
Isolate* isolate = function->GetIsolate();
Isolate* isolate = function.GetIsolate();
RuntimeCallTimerScope runtimeTimer(isolate,
RuntimeCallCounterId::kDeoptimizeCode);
TimerEventScope<TimerEventDeoptimizeCode> timer(isolate);
TRACE_EVENT0("v8", "V8.DeoptimizeCode");
function->ResetIfBytecodeFlushed();
if (code.is_null()) code = function->code();
function.ResetIfBytecodeFlushed();
if (code.is_null()) code = function.code();
if (code->kind() == Code::OPTIMIZED_FUNCTION) {
if (code.kind() == Code::OPTIMIZED_FUNCTION) {
// Mark the code for deoptimization and unlink any functions that also
// refer to that code. The code cannot be shared across native contexts,
// so we only need to search one.
code->set_marked_for_deoptimization(true);
code.set_marked_for_deoptimization(true);
// The code in the function's optimized code feedback vector slot might
// be different from the code on the function - evict it if necessary.
function->feedback_vector()->EvictOptimizedCodeMarkedForDeoptimization(
function->shared(), "unlinking code marked for deopt");
if (!code->deopt_already_counted()) {
function->feedback_vector()->increment_deopt_count();
code->set_deopt_already_counted(true);
function.feedback_vector().EvictOptimizedCodeMarkedForDeoptimization(
function.shared(), "unlinking code marked for deopt");
if (!code.deopt_already_counted()) {
function.feedback_vector().increment_deopt_count();
code.set_deopt_already_counted(true);
}
DeoptimizeMarkedCodeForContext(function->context()->native_context());
DeoptimizeMarkedCodeForContext(function.context().native_context());
}
}
@ -485,7 +485,7 @@ Deoptimizer::Deoptimizer(Isolate* isolate, JSFunction function,
compiled_code_ = FindOptimizedCode();
DCHECK(!compiled_code_.is_null());
DCHECK(function->IsJSFunction());
DCHECK(function.IsJSFunction());
trace_scope_ = FLAG_trace_deopt
? new CodeTracer::Scope(isolate->GetCodeTracer())
: nullptr;
@ -493,8 +493,8 @@ Deoptimizer::Deoptimizer(Isolate* isolate, JSFunction function,
DCHECK(AllowHeapAllocation::IsAllowed());
disallow_heap_allocation_ = new DisallowHeapAllocation();
#endif // DEBUG
if (compiled_code_->kind() != Code::OPTIMIZED_FUNCTION ||
!compiled_code_->deopt_already_counted()) {
if (compiled_code_.kind() != Code::OPTIMIZED_FUNCTION ||
!compiled_code_.deopt_already_counted()) {
// If the function is optimized, and we haven't counted that deopt yet, then
// increment the function's deopt count so that we can avoid optimising
// functions that deopt too often.
@ -504,17 +504,16 @@ Deoptimizer::Deoptimizer(Isolate* isolate, JSFunction function,
// that can eventually lead to disabling optimization for a function.
isolate->counters()->soft_deopts_executed()->Increment();
} else if (!function.is_null()) {
function->feedback_vector()->increment_deopt_count();
function.feedback_vector().increment_deopt_count();
}
}
if (compiled_code_->kind() == Code::OPTIMIZED_FUNCTION) {
compiled_code_->set_deopt_already_counted(true);
if (compiled_code_.kind() == Code::OPTIMIZED_FUNCTION) {
compiled_code_.set_deopt_already_counted(true);
PROFILE(isolate_,
CodeDeoptEvent(compiled_code_, kind, from_, fp_to_sp_delta_));
}
unsigned size = ComputeInputFrameSize();
int parameter_count =
function->shared()->internal_formal_parameter_count() + 1;
int parameter_count = function.shared().internal_formal_parameter_count() + 1;
input_ = new (size) FrameDescription(size, parameter_count);
}
@ -525,11 +524,11 @@ Code Deoptimizer::FindOptimizedCode() {
}
void Deoptimizer::PrintFunctionName() {
if (function_->IsHeapObject() && function_->IsJSFunction()) {
function_->ShortPrint(trace_scope_->file());
if (function_.IsHeapObject() && function_.IsJSFunction()) {
function_.ShortPrint(trace_scope_->file());
} else {
PrintF(trace_scope_->file(), "%s",
Code::Kind2String(compiled_code_->kind()));
Code::Kind2String(compiled_code_.kind()));
}
}
@ -567,7 +566,7 @@ Address Deoptimizer::GetDeoptimizationEntry(Isolate* isolate,
DeoptimizerData* data = isolate->deoptimizer_data();
CHECK_LE(kind, DeoptimizerData::kLastDeoptimizeKind);
CHECK(!data->deopt_entry_code(kind).is_null());
return data->deopt_entry_code(kind)->raw_instruction_start();
return data->deopt_entry_code(kind).raw_instruction_start();
}
bool Deoptimizer::IsDeoptimizationEntry(Isolate* isolate, Address addr,
@ -576,7 +575,7 @@ bool Deoptimizer::IsDeoptimizationEntry(Isolate* isolate, Address addr,
CHECK_LE(type, DeoptimizerData::kLastDeoptimizeKind);
Code code = data->deopt_entry_code(type);
if (code.is_null()) return false;
return addr == code->raw_instruction_start();
return addr == code.raw_instruction_start();
}
bool Deoptimizer::IsDeoptimizationEntry(Isolate* isolate, Address addr,
@ -600,18 +599,18 @@ int Deoptimizer::GetDeoptimizedCodeCount(Isolate* isolate) {
int length = 0;
// Count all entries in the deoptimizing code list of every context.
Object context = isolate->heap()->native_contexts_list();
while (!context->IsUndefined(isolate)) {
while (!context.IsUndefined(isolate)) {
Context native_context = Context::cast(context);
Object element = native_context->DeoptimizedCodeListHead();
while (!element->IsUndefined(isolate)) {
Object element = native_context.DeoptimizedCodeListHead();
while (!element.IsUndefined(isolate)) {
Code code = Code::cast(element);
DCHECK(code->kind() == Code::OPTIMIZED_FUNCTION);
if (!code->marked_for_deoptimization()) {
DCHECK(code.kind() == Code::OPTIMIZED_FUNCTION);
if (!code.marked_for_deoptimization()) {
length++;
}
element = code->next_code_link();
element = code.next_code_link();
}
context = Context::cast(context)->next_context_link();
context = Context::cast(context).next_context_link();
}
return length;
}
@ -623,7 +622,7 @@ int LookupCatchHandler(TranslatedFrame* translated_frame, int* data_out) {
case TranslatedFrame::kInterpretedFunction: {
int bytecode_offset = translated_frame->node_id().ToInt();
HandlerTable table(
translated_frame->raw_shared_info()->GetBytecodeArray());
translated_frame->raw_shared_info().GetBytecodeArray());
return table.LookupRange(bytecode_offset, data_out, nullptr);
}
case TranslatedFrame::kJavaScriptBuiltinContinuationWithCatch: {
@ -649,7 +648,7 @@ void Deoptimizer::DoComputeOutputFrames() {
// Determine basic deoptimization information. The optimized frame is
// described by the input data.
DeoptimizationData input_data =
DeoptimizationData::cast(compiled_code_->deoptimization_data());
DeoptimizationData::cast(compiled_code_.deoptimization_data());
{
// Read caller's PC, caller's FP and caller's constant pool values
@ -681,27 +680,26 @@ void Deoptimizer::DoComputeOutputFrames() {
PrintF(trace_scope_->file(),
" (opt #%d) @%d, FP to SP delta: %d, caller sp: " V8PRIxPTR_FMT
"]\n",
input_data->OptimizationId()->value(), bailout_id_, fp_to_sp_delta_,
input_data.OptimizationId().value(), bailout_id_, fp_to_sp_delta_,
caller_frame_top_);
if (deopt_kind_ == DeoptimizeKind::kEager ||
deopt_kind_ == DeoptimizeKind::kSoft) {
compiled_code_->PrintDeoptLocation(
compiled_code_.PrintDeoptLocation(
trace_scope_->file(), " ;;; deoptimize at ", from_);
}
}
BailoutId node_id = input_data->BytecodeOffset(bailout_id_);
ByteArray translations = input_data->TranslationByteArray();
unsigned translation_index =
input_data->TranslationIndex(bailout_id_)->value();
BailoutId node_id = input_data.BytecodeOffset(bailout_id_);
ByteArray translations = input_data.TranslationByteArray();
unsigned translation_index = input_data.TranslationIndex(bailout_id_).value();
TranslationIterator state_iterator(translations, translation_index);
translated_state_.Init(
isolate_, input_->GetFramePointerAddress(), &state_iterator,
input_data->LiteralArray(), input_->GetRegisterValues(),
input_data.LiteralArray(), input_->GetRegisterValues(),
trace_scope_ == nullptr ? nullptr : trace_scope_->file(),
function_->IsHeapObject()
? function_->shared()->internal_formal_parameter_count()
function_.IsHeapObject()
? function_.shared().internal_formal_parameter_count()
: 0);
// Do the input frame to output frame(s) translation.
@ -812,7 +810,7 @@ void Deoptimizer::DoComputeInterpretedFrame(TranslatedFrame* translated_frame,
TranslatedFrame::iterator function_iterator = value_iterator++;
if (trace_scope_ != nullptr) {
PrintF(trace_scope_->file(), " translating interpreted frame ");
std::unique_ptr<char[]> name = shared->DebugName()->ToCString();
std::unique_ptr<char[]> name = shared.DebugName().ToCString();
PrintF(trace_scope_->file(), "%s", name.get());
PrintF(trace_scope_->file(), " => bytecode_offset=%d, height=%d%s\n",
bytecode_offset, height_in_bytes,
@ -829,7 +827,7 @@ void Deoptimizer::DoComputeInterpretedFrame(TranslatedFrame* translated_frame,
unsigned output_frame_size = height_in_bytes + fixed_frame_size;
// Allocate and store the output frame description.
int parameter_count = shared->internal_formal_parameter_count() + 1;
int parameter_count = shared.internal_formal_parameter_count() + 1;
FrameDescription* output_frame = new (output_frame_size)
FrameDescription(output_frame_size, parameter_count);
FrameWriter frame_writer(this, output_frame, trace_scope_);
@ -919,16 +917,16 @@ void Deoptimizer::DoComputeInterpretedFrame(TranslatedFrame* translated_frame,
}
// Read the context from the translations.
Object context = context_pos->GetRawValue();
output_frame->SetContext(static_cast<intptr_t>(context->ptr()));
output_frame->SetContext(static_cast<intptr_t>(context.ptr()));
frame_writer.PushTranslatedValue(context_pos, "context");
// The function was mentioned explicitly in the BEGIN_FRAME.
frame_writer.PushTranslatedValue(function_iterator, "function");
// Set the bytecode array pointer.
Object bytecode_array = shared->HasBreakInfo()
? shared->GetDebugInfo()->DebugBytecodeArray()
: shared->GetBytecodeArray();
Object bytecode_array = shared.HasBreakInfo()
? shared.GetDebugInfo().DebugBytecodeArray()
: shared.GetBytecodeArray();
frame_writer.PushRawObject(bytecode_array, "bytecode array\n");
// The bytecode offset was mentioned explicitly in the BEGIN_FRAME.
@ -1029,12 +1027,12 @@ void Deoptimizer::DoComputeInterpretedFrame(TranslatedFrame* translated_frame,
? builtins->builtin(Builtins::kInterpreterEnterBytecodeAdvance)
: builtins->builtin(Builtins::kInterpreterEnterBytecodeDispatch);
output_frame->SetPc(
static_cast<intptr_t>(dispatch_builtin->InstructionStart()));
static_cast<intptr_t>(dispatch_builtin.InstructionStart()));
// Update constant pool.
if (FLAG_enable_embedded_constant_pool) {
intptr_t constant_pool_value =
static_cast<intptr_t>(dispatch_builtin->constant_pool());
static_cast<intptr_t>(dispatch_builtin.constant_pool());
output_frame->SetConstantPool(constant_pool_value);
if (is_topmost) {
Register constant_pool_reg =
@ -1053,7 +1051,7 @@ void Deoptimizer::DoComputeInterpretedFrame(TranslatedFrame* translated_frame,
// Set the continuation for the topmost frame.
Code continuation = builtins->builtin(Builtins::kNotifyDeoptimized);
output_frame->SetContinuation(
static_cast<intptr_t>(continuation->InstructionStart()));
static_cast<intptr_t>(continuation.InstructionStart()));
}
}
@ -1150,12 +1148,12 @@ void Deoptimizer::DoComputeArgumentsAdaptorFrame(
Code adaptor_trampoline =
builtins->builtin(Builtins::kArgumentsAdaptorTrampoline);
intptr_t pc_value = static_cast<intptr_t>(
adaptor_trampoline->InstructionStart() +
isolate_->heap()->arguments_adaptor_deopt_pc_offset()->value());
adaptor_trampoline.InstructionStart() +
isolate_->heap()->arguments_adaptor_deopt_pc_offset().value());
output_frame->SetPc(pc_value);
if (FLAG_enable_embedded_constant_pool) {
intptr_t constant_pool_value =
static_cast<intptr_t>(adaptor_trampoline->constant_pool());
static_cast<intptr_t>(adaptor_trampoline.constant_pool());
output_frame->SetConstantPool(constant_pool_value);
}
}
@ -1297,18 +1295,18 @@ void Deoptimizer::DoComputeConstructStubFrame(TranslatedFrame* translated_frame,
// Compute this frame's PC.
DCHECK(bailout_id.IsValidForConstructStub());
Address start = construct_stub->InstructionStart();
Address start = construct_stub.InstructionStart();
int pc_offset =
bailout_id == BailoutId::ConstructStubCreate()
? isolate_->heap()->construct_stub_create_deopt_pc_offset()->value()
: isolate_->heap()->construct_stub_invoke_deopt_pc_offset()->value();
? isolate_->heap()->construct_stub_create_deopt_pc_offset().value()
: isolate_->heap()->construct_stub_invoke_deopt_pc_offset().value();
intptr_t pc_value = static_cast<intptr_t>(start + pc_offset);
output_frame->SetPc(pc_value);
// Update constant pool.
if (FLAG_enable_embedded_constant_pool) {
intptr_t constant_pool_value =
static_cast<intptr_t>(construct_stub->constant_pool());
static_cast<intptr_t>(construct_stub.constant_pool());
output_frame->SetConstantPool(constant_pool_value);
if (is_topmost) {
Register constant_pool_reg =
@ -1332,7 +1330,7 @@ void Deoptimizer::DoComputeConstructStubFrame(TranslatedFrame* translated_frame,
DCHECK_EQ(DeoptimizeKind::kLazy, deopt_kind_);
Code continuation = builtins->builtin(Builtins::kNotifyDeoptimized);
output_frame->SetContinuation(
static_cast<intptr_t>(continuation->InstructionStart()));
static_cast<intptr_t>(continuation.InstructionStart()));
}
}
@ -1557,7 +1555,7 @@ void Deoptimizer::DoComputeBuiltinContinuation(
// Get the possible JSFunction for the case that this is a
// JavaScriptBuiltinContinuationFrame, which needs the JSFunction pointer
// like a normal JavaScriptFrame.
const intptr_t maybe_function = value_iterator->GetRawValue()->ptr();
const intptr_t maybe_function = value_iterator->GetRawValue().ptr();
++value_iterator;
ReadOnlyRoots roots(isolate());
@ -1609,7 +1607,7 @@ void Deoptimizer::DoComputeBuiltinContinuation(
// set (it was automatically added at the end of the FrameState by the
// instruction selector).
Object context = value_iterator->GetRawValue();
const intptr_t value = context->ptr();
const intptr_t value = context.ptr();
TranslatedFrame::iterator context_register_value = value_iterator++;
register_values[kContextRegister.code()] = context_register_value;
output_frame->SetContext(value);
@ -1723,12 +1721,12 @@ void Deoptimizer::DoComputeBuiltinContinuation(
Code continue_to_builtin = isolate()->builtins()->builtin(
TrampolineForBuiltinContinuation(mode, must_handle_result));
output_frame->SetPc(
static_cast<intptr_t>(continue_to_builtin->InstructionStart()));
static_cast<intptr_t>(continue_to_builtin.InstructionStart()));
Code continuation =
isolate()->builtins()->builtin(Builtins::kNotifyDeoptimized);
output_frame->SetContinuation(
static_cast<intptr_t>(continuation->InstructionStart()));
static_cast<intptr_t>(continuation.InstructionStart()));
}
void Deoptimizer::MaterializeHeapObjects() {
@ -1759,8 +1757,8 @@ void Deoptimizer::MaterializeHeapObjects() {
bool feedback_updated = translated_state_.DoUpdateFeedback();
if (trace_scope_ != nullptr && feedback_updated) {
PrintF(trace_scope_->file(), "Feedback updated");
compiled_code_->PrintDeoptLocation(trace_scope_->file(),
" from deoptimization at ", from_);
compiled_code_.PrintDeoptLocation(trace_scope_->file(),
" from deoptimization at ", from_);
}
isolate_->materialized_object_store()->Remove(
@ -1779,8 +1777,8 @@ unsigned Deoptimizer::ComputeInputFrameAboveFpFixedSize() const {
unsigned fixed_size = CommonFrameConstants::kFixedFrameSizeAboveFp;
// TODO(jkummerow): If {function_->IsSmi()} can indeed be true, then
// {function_} should not have type {JSFunction}.
if (!function_->IsSmi()) {
fixed_size += ComputeIncomingArgumentSize(function_->shared());
if (!function_.IsSmi()) {
fixed_size += ComputeIncomingArgumentSize(function_.shared());
}
return fixed_size;
}
@ -1790,8 +1788,8 @@ unsigned Deoptimizer::ComputeInputFrameSize() const {
// function into account so we have to avoid double counting them.
unsigned fixed_size_above_fp = ComputeInputFrameAboveFpFixedSize();
unsigned result = fixed_size_above_fp + fp_to_sp_delta_;
if (compiled_code_->kind() == Code::OPTIMIZED_FUNCTION) {
unsigned stack_slots = compiled_code_->stack_slots();
if (compiled_code_.kind() == Code::OPTIMIZED_FUNCTION) {
unsigned stack_slots = compiled_code_.stack_slots();
unsigned outgoing_size = 0;
// ComputeOutgoingArgumentSize(compiled_code_, bailout_id_);
CHECK_EQ(fixed_size_above_fp + (stack_slots * kSystemPointerSize) -
@ -1811,7 +1809,7 @@ unsigned Deoptimizer::ComputeInterpretedFixedSize(SharedFunctionInfo shared) {
// static
unsigned Deoptimizer::ComputeIncomingArgumentSize(SharedFunctionInfo shared) {
int parameter_slots = shared->internal_formal_parameter_count() + 1;
int parameter_slots = shared.internal_formal_parameter_count() + 1;
if (kPadArguments) parameter_slots = RoundUp(parameter_slots, 2);
return parameter_slots * kSystemPointerSize;
}
@ -1895,7 +1893,7 @@ void TranslationBuffer::Add(int32_t value) {
TranslationIterator::TranslationIterator(ByteArray buffer, int index)
: buffer_(buffer), index_(index) {
DCHECK(index >= 0 && index < buffer->length());
DCHECK(index >= 0 && index < buffer.length());
}
int32_t TranslationIterator::Next() {
@ -1904,7 +1902,7 @@ int32_t TranslationIterator::Next() {
uint32_t bits = 0;
for (int i = 0; true; i += 7) {
DCHECK(HasNext());
uint8_t next = buffer_->get(index_++);
uint8_t next = buffer_.get(index_++);
bits |= (next >> 1) << i;
if ((next & 1) == 0) break;
}
@ -1914,7 +1912,7 @@ int32_t TranslationIterator::Next() {
return is_negative ? -result : result;
}
bool TranslationIterator::HasNext() const { return index_ < buffer_->length(); }
bool TranslationIterator::HasNext() const { return index_ < buffer_.length(); }
Handle<ByteArray> TranslationBuffer::CreateByteArray(Factory* factory) {
Handle<ByteArray> result =
@ -2163,12 +2161,12 @@ bool MaterializedObjectStore::Remove(Address fp) {
frame_fps_.erase(it);
FixedArray array = isolate()->heap()->materialized_objects();
CHECK_LT(index, array->length());
CHECK_LT(index, array.length());
int fps_size = static_cast<int>(frame_fps_.size());
for (int i = index; i < fps_size; i++) {
array->set(i, array->get(i + 1));
array.set(i, array.get(i + 1));
}
array->set(fps_size, ReadOnlyRoots(isolate()).undefined_value());
array.set(fps_size, ReadOnlyRoots(isolate()).undefined_value());
return true;
}
@ -2241,7 +2239,7 @@ DeoptimizedFrameInfo::DeoptimizedFrameInfo(TranslatedState* state,
*frame_it->shared_info(), frame_it->node_id());
DCHECK_EQ(parameter_count,
function_->shared()->internal_formal_parameter_count());
function_->shared().internal_formal_parameter_count());
parameters_.resize(static_cast<size_t>(parameter_count));
for (int i = 0; i < parameter_count; i++) {
@ -2276,7 +2274,7 @@ DeoptimizedFrameInfo::DeoptimizedFrameInfo(TranslatedState* state,
}
Deoptimizer::DeoptInfo Deoptimizer::GetDeoptInfo(Code code, Address pc) {
CHECK(code->InstructionStart() <= pc && pc <= code->InstructionEnd());
CHECK(code.InstructionStart() <= pc && pc <= code.InstructionEnd());
SourcePosition last_position = SourcePosition::Unknown();
DeoptimizeReason last_reason = DeoptimizeReason::kUnknown;
int last_deopt_id = kNoDeoptimizationId;
@ -2305,9 +2303,9 @@ Deoptimizer::DeoptInfo Deoptimizer::GetDeoptInfo(Code code, Address pc) {
// static
int Deoptimizer::ComputeSourcePositionFromBytecodeArray(
SharedFunctionInfo shared, BailoutId node_id) {
DCHECK(shared->HasBytecodeArray());
return AbstractCode::cast(shared->GetBytecodeArray())
->SourcePosition(node_id.ToInt());
DCHECK(shared.HasBytecodeArray());
return AbstractCode::cast(shared.GetBytecodeArray())
.SourcePosition(node_id.ToInt());
}
// static
@ -2692,7 +2690,7 @@ int TranslatedFrame::GetValueCount() {
switch (kind()) {
case kInterpretedFunction: {
int parameter_count =
raw_shared_info_->internal_formal_parameter_count() + 1;
raw_shared_info_.internal_formal_parameter_count() + 1;
// + 2 for function and context.
return height_ + parameter_count + 2;
}
@ -2713,7 +2711,7 @@ int TranslatedFrame::GetValueCount() {
void TranslatedFrame::Handlify() {
if (!raw_shared_info_.is_null()) {
shared_info_ = Handle<SharedFunctionInfo>(raw_shared_info_,
raw_shared_info_->GetIsolate());
raw_shared_info_.GetIsolate());
raw_shared_info_ = SharedFunctionInfo();
}
for (auto& value : values_) {
@ -2730,14 +2728,14 @@ TranslatedFrame TranslatedState::CreateNextTranslatedFrame(
case Translation::INTERPRETED_FRAME: {
BailoutId bytecode_offset = BailoutId(iterator->Next());
SharedFunctionInfo shared_info =
SharedFunctionInfo::cast(literal_array->get(iterator->Next()));
SharedFunctionInfo::cast(literal_array.get(iterator->Next()));
int height = iterator->Next();
int return_value_offset = iterator->Next();
int return_value_count = iterator->Next();
if (trace_file != nullptr) {
std::unique_ptr<char[]> name = shared_info->DebugName()->ToCString();
std::unique_ptr<char[]> name = shared_info.DebugName().ToCString();
PrintF(trace_file, " reading input frame %s", name.get());
int arg_count = shared_info->internal_formal_parameter_count() + 1;
int arg_count = shared_info.internal_formal_parameter_count() + 1;
PrintF(trace_file,
" => bytecode_offset=%d, args=%d, height=%d, retval=%i(#%i); "
"inputs:\n",
@ -2751,10 +2749,10 @@ TranslatedFrame TranslatedState::CreateNextTranslatedFrame(
case Translation::ARGUMENTS_ADAPTOR_FRAME: {
SharedFunctionInfo shared_info =
SharedFunctionInfo::cast(literal_array->get(iterator->Next()));
SharedFunctionInfo::cast(literal_array.get(iterator->Next()));
int height = iterator->Next();
if (trace_file != nullptr) {
std::unique_ptr<char[]> name = shared_info->DebugName()->ToCString();
std::unique_ptr<char[]> name = shared_info.DebugName().ToCString();
PrintF(trace_file, " reading arguments adaptor frame %s", name.get());
PrintF(trace_file, " => height=%d; inputs:\n", height);
}
@ -2764,10 +2762,10 @@ TranslatedFrame TranslatedState::CreateNextTranslatedFrame(
case Translation::CONSTRUCT_STUB_FRAME: {
BailoutId bailout_id = BailoutId(iterator->Next());
SharedFunctionInfo shared_info =
SharedFunctionInfo::cast(literal_array->get(iterator->Next()));
SharedFunctionInfo::cast(literal_array.get(iterator->Next()));
int height = iterator->Next();
if (trace_file != nullptr) {
std::unique_ptr<char[]> name = shared_info->DebugName()->ToCString();
std::unique_ptr<char[]> name = shared_info.DebugName().ToCString();
PrintF(trace_file, " reading construct stub frame %s", name.get());
PrintF(trace_file, " => bailout_id=%d, height=%d; inputs:\n",
bailout_id.ToInt(), height);
@ -2779,10 +2777,10 @@ TranslatedFrame TranslatedState::CreateNextTranslatedFrame(
case Translation::BUILTIN_CONTINUATION_FRAME: {
BailoutId bailout_id = BailoutId(iterator->Next());
SharedFunctionInfo shared_info =
SharedFunctionInfo::cast(literal_array->get(iterator->Next()));
SharedFunctionInfo::cast(literal_array.get(iterator->Next()));
int height = iterator->Next();
if (trace_file != nullptr) {
std::unique_ptr<char[]> name = shared_info->DebugName()->ToCString();
std::unique_ptr<char[]> name = shared_info.DebugName().ToCString();
PrintF(trace_file, " reading builtin continuation frame %s",
name.get());
PrintF(trace_file, " => bailout_id=%d, height=%d; inputs:\n",
@ -2798,10 +2796,10 @@ TranslatedFrame TranslatedState::CreateNextTranslatedFrame(
case Translation::JAVA_SCRIPT_BUILTIN_CONTINUATION_FRAME: {
BailoutId bailout_id = BailoutId(iterator->Next());
SharedFunctionInfo shared_info =
SharedFunctionInfo::cast(literal_array->get(iterator->Next()));
SharedFunctionInfo::cast(literal_array.get(iterator->Next()));
int height = iterator->Next();
if (trace_file != nullptr) {
std::unique_ptr<char[]> name = shared_info->DebugName()->ToCString();
std::unique_ptr<char[]> name = shared_info.DebugName().ToCString();
PrintF(trace_file, " reading JavaScript builtin continuation frame %s",
name.get());
PrintF(trace_file, " => bailout_id=%d, height=%d; inputs:\n",
@ -2816,10 +2814,10 @@ TranslatedFrame TranslatedState::CreateNextTranslatedFrame(
case Translation::JAVA_SCRIPT_BUILTIN_CONTINUATION_WITH_CATCH_FRAME: {
BailoutId bailout_id = BailoutId(iterator->Next());
SharedFunctionInfo shared_info =
SharedFunctionInfo::cast(literal_array->get(iterator->Next()));
SharedFunctionInfo::cast(literal_array.get(iterator->Next()));
int height = iterator->Next();
if (trace_file != nullptr) {
std::unique_ptr<char[]> name = shared_info->DebugName()->ToCString();
std::unique_ptr<char[]> name = shared_info.DebugName().ToCString();
PrintF(trace_file,
" reading JavaScript builtin continuation frame with catch %s",
name.get());
@ -2888,7 +2886,7 @@ Address TranslatedState::ComputeArgumentsPosition(Address input_frame_pointer,
*length = Smi::cast(*FullObjectSlot(
parent_frame_pointer +
ArgumentsAdaptorFrameConstants::kLengthOffset))
->value();
.value();
arguments_frame = parent_frame_pointer;
} else {
if (length) *length = formal_parameter_count_;
@ -3044,7 +3042,7 @@ int TranslatedState::CreateNextTranslatedValue(
if (trace_file != nullptr) {
PrintF(trace_file, V8PRIxPTR_FMT " ; %s ", uncompressed_value,
converter.NameOfCPURegister(input_reg));
Object(uncompressed_value)->ShortPrint(trace_file);
Object(uncompressed_value).ShortPrint(trace_file);
}
TranslatedValue translated_value =
TranslatedValue::NewTagged(this, Object(uncompressed_value));
@ -3173,7 +3171,7 @@ int TranslatedState::CreateNextTranslatedValue(
PrintF(trace_file, V8PRIxPTR_FMT " ; [fp %c %3d] ",
uncompressed_value, slot_offset < 0 ? '-' : '+',
std::abs(slot_offset));
Object(uncompressed_value)->ShortPrint(trace_file);
Object(uncompressed_value).ShortPrint(trace_file);
}
TranslatedValue translated_value =
TranslatedValue::NewTagged(this, Object(uncompressed_value));
@ -3265,11 +3263,11 @@ int TranslatedState::CreateNextTranslatedValue(
case Translation::LITERAL: {
int literal_index = iterator->Next();
Object value = literal_array->get(literal_index);
Object value = literal_array.get(literal_index);
if (trace_file != nullptr) {
PrintF(trace_file, V8PRIxPTR_FMT " ; (literal %2d) ", value->ptr(),
PrintF(trace_file, V8PRIxPTR_FMT " ; (literal %2d) ", value.ptr(),
literal_index);
value->ShortPrint(trace_file);
value.ShortPrint(trace_file);
}
TranslatedValue translated_value =
@ -3288,11 +3286,11 @@ TranslatedState::TranslatedState(const JavaScriptFrame* frame) {
static_cast<const OptimizedFrame*>(frame)->GetDeoptimizationData(
&deopt_index);
DCHECK(!data.is_null() && deopt_index != Safepoint::kNoDeoptimizationIndex);
TranslationIterator it(data->TranslationByteArray(),
data->TranslationIndex(deopt_index)->value());
Init(frame->isolate(), frame->fp(), &it, data->LiteralArray(),
TranslationIterator it(data.TranslationByteArray(),
data.TranslationIndex(deopt_index).value());
Init(frame->isolate(), frame->fp(), &it, data.LiteralArray(),
nullptr /* registers */, nullptr /* trace file */,
frame->function()->shared()->internal_formal_parameter_count());
frame->function().shared().internal_formal_parameter_count());
}
void TranslatedState::Init(Isolate* isolate, Address input_frame_pointer,
@ -3510,7 +3508,7 @@ void TranslatedState::MaterializeFixedDoubleArray(TranslatedFrame* frame,
int* value_index,
TranslatedValue* slot,
Handle<Map> map) {
int length = Smi::cast(frame->values_[*value_index].GetRawValue())->value();
int length = Smi::cast(frame->values_[*value_index].GetRawValue()).value();
(*value_index)++;
Handle<FixedDoubleArray> array = Handle<FixedDoubleArray>::cast(
isolate()->factory()->NewFixedDoubleArray(length));
@ -3621,13 +3619,13 @@ void TranslatedState::EnsureCapturedObjectAllocatedAt(
case STRING_TABLE_TYPE: {
// Check we have the right size.
int array_length =
Smi::cast(frame->values_[value_index].GetRawValue())->value();
Smi::cast(frame->values_[value_index].GetRawValue()).value();
int instance_size = FixedArray::SizeFor(array_length);
CHECK_EQ(instance_size, slot->GetChildrenCount() * kTaggedSize);
// Canonicalize empty fixed array.
if (*map == ReadOnlyRoots(isolate()).empty_fixed_array()->map() &&
if (*map == ReadOnlyRoots(isolate()).empty_fixed_array().map() &&
array_length == 0) {
slot->set_storage(isolate()->factory()->empty_fixed_array());
} else {
@ -3642,7 +3640,7 @@ void TranslatedState::EnsureCapturedObjectAllocatedAt(
case PROPERTY_ARRAY_TYPE: {
// Check we have the right size.
int length_or_hash =
Smi::cast(frame->values_[value_index].GetRawValue())->value();
Smi::cast(frame->values_[value_index].GetRawValue()).value();
int array_length = PropertyArray::LengthField::decode(length_or_hash);
int instance_size = PropertyArray::SizeFor(array_length);
CHECK_EQ(instance_size, slot->GetChildrenCount() * kTaggedSize);
@ -3808,10 +3806,10 @@ void TranslatedState::InitializeJSObjectAt(
if (marker == kStoreUnboxedDouble) {
double double_field_value;
if (field_value->IsSmi()) {
double_field_value = Smi::cast(*field_value)->value();
double_field_value = Smi::cast(*field_value).value();
} else {
CHECK(field_value->IsHeapNumber());
double_field_value = HeapNumber::cast(*field_value)->value();
double_field_value = HeapNumber::cast(*field_value).value();
}
object_storage->WriteField<double>(offset, double_field_value);
} else if (marker == kStoreMutableHeapNumber) {
@ -4030,7 +4028,7 @@ void TranslatedState::ReadUpdateFeedback(TranslationIterator* iterator,
FixedArray literal_array,
FILE* trace_file) {
CHECK_EQ(Translation::UPDATE_FEEDBACK, iterator->Next());
feedback_vector_ = FeedbackVector::cast(literal_array->get(iterator->Next()));
feedback_vector_ = FeedbackVector::cast(literal_array.get(iterator->Next()));
feedback_slot_ = FeedbackSlot(iterator->Next());
if (trace_file != nullptr) {
PrintF(trace_file, " reading FeedbackVector (slot %d)\n",

View File

@ -221,7 +221,7 @@ static void PrintRelocInfo(StringBuilder* out, Isolate* isolate,
} else if (RelocInfo::IsEmbeddedObjectMode(rmode)) {
HeapStringAllocator allocator;
StringStream accumulator(&allocator);
relocinfo->target_object()->ShortPrint(&accumulator);
relocinfo->target_object().ShortPrint(&accumulator);
std::unique_ptr<char[]> obj_name = accumulator.ToCString();
const bool is_compressed = RelocInfo::IsCompressedEmbeddedObject(rmode);
out->AddFormatted(" ;; %sobject: %s",
@ -236,9 +236,9 @@ static void PrintRelocInfo(StringBuilder* out, Isolate* isolate,
out->AddFormatted(" ;; code:");
Code code = isolate->heap()->GcSafeFindCodeForInnerPointer(
relocinfo->target_address());
Code::Kind kind = code->kind();
if (code->is_builtin()) {
out->AddFormatted(" Builtin::%s", Builtins::name(code->builtin_index()));
Code::Kind kind = code.kind();
if (code.is_builtin()) {
out->AddFormatted(" Builtin::%s", Builtins::name(code.builtin_index()));
} else {
out->AddFormatted(" %s", Code::Kind2String(kind));
}

View File

@ -902,7 +902,7 @@ class CodeDescription {
LineInfo* lineinfo() const { return lineinfo_; }
bool is_function() const {
Code::Kind kind = code_->kind();
Code::Kind kind = code_.kind();
return kind == Code::OPTIMIZED_FUNCTION;
}
@ -910,24 +910,24 @@ class CodeDescription {
ScopeInfo scope_info() const {
DCHECK(has_scope_info());
return shared_info_->scope_info();
return shared_info_.scope_info();
}
uintptr_t CodeStart() const {
return static_cast<uintptr_t>(code_->InstructionStart());
return static_cast<uintptr_t>(code_.InstructionStart());
}
uintptr_t CodeEnd() const {
return static_cast<uintptr_t>(code_->InstructionEnd());
return static_cast<uintptr_t>(code_.InstructionEnd());
}
uintptr_t CodeSize() const { return CodeEnd() - CodeStart(); }
bool has_script() {
return !shared_info_.is_null() && shared_info_->script()->IsScript();
return !shared_info_.is_null() && shared_info_.script().IsScript();
}
Script script() { return Script::cast(shared_info_->script()); }
Script script() { return Script::cast(shared_info_.script()); }
bool IsLineInfoAvailable() { return lineinfo_ != nullptr; }
@ -945,7 +945,7 @@ class CodeDescription {
std::unique_ptr<char[]> GetFilename() {
if (!shared_info_.is_null()) {
return String::cast(script()->name())->ToCString();
return String::cast(script().name()).ToCString();
} else {
std::unique_ptr<char[]> result(new char[1]);
result[0] = 0;
@ -955,7 +955,7 @@ class CodeDescription {
int GetScriptLineNumber(int pos) {
if (!shared_info_.is_null()) {
return script()->GetLineNumber(pos) + 1;
return script().GetLineNumber(pos) + 1;
} else {
return 0;
}
@ -1087,8 +1087,8 @@ class DebugInfoSection : public DebugSection {
#endif
fb_block_size.set(static_cast<uint32_t>(w->position() - fb_block_start));
int params = scope->ParameterCount();
int context_slots = scope->ContextLocalCount();
int params = scope.ParameterCount();
int context_slots = scope.ContextLocalCount();
// The real slot ID is internal_slots + context_slot_id.
int internal_slots = Context::MIN_CONTEXT_SLOTS;
int current_abbreviation = 4;
@ -1254,8 +1254,8 @@ class DebugAbbrevSection : public DebugSection {
if (extra_info) {
ScopeInfo scope = desc_->scope_info();
int params = scope->ParameterCount();
int context_slots = scope->ContextLocalCount();
int params = scope.ParameterCount();
int context_slots = scope.ContextLocalCount();
// The real slot ID is internal_slots + context_slot_id.
int internal_slots = Context::MIN_CONTEXT_SLOTS;
// Total children is params + context_slots + internal_slots + 2
@ -1737,7 +1737,7 @@ JITDescriptor __jit_debug_descriptor = {1, 0, nullptr, nullptr};
#ifdef OBJECT_PRINT
void __gdb_print_v8_object(Object object) {
StdoutStream os;
object->Print(os);
object.Print(os);
os << std::flush;
}
#endif
@ -1969,8 +1969,8 @@ static void AddCode(const char* name, Code code, SharedFunctionInfo shared,
CodeMap* code_map = GetCodeMap();
AddressRange range;
range.start = code->address();
range.end = code->address() + code->CodeSize();
range.start = code.address();
range.end = code.address() + code.CodeSize();
RemoveJITCodeEntries(code_map, range);
CodeDescription code_desc(name, code, shared, lineinfo);
@ -1981,7 +1981,7 @@ static void AddCode(const char* name, Code code, SharedFunctionInfo shared,
}
AddUnwindInfo(&code_desc);
Isolate* isolate = code->GetIsolate();
Isolate* isolate = code.GetIsolate();
JITCodeEntry* entry = CreateELFObject(&code_desc, isolate);
delete lineinfo;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -201,8 +201,8 @@ void PerfJitLogger::LogRecordedBuffer(AbstractCode abstract_code,
SharedFunctionInfo shared,
const char* name, int length) {
if (FLAG_perf_basic_prof_only_functions &&
(abstract_code->kind() != AbstractCode::INTERPRETED_FUNCTION &&
abstract_code->kind() != AbstractCode::OPTIMIZED_FUNCTION)) {
(abstract_code.kind() != AbstractCode::INTERPRETED_FUNCTION &&
abstract_code.kind() != AbstractCode::OPTIMIZED_FUNCTION)) {
return;
}
@ -211,25 +211,25 @@ void PerfJitLogger::LogRecordedBuffer(AbstractCode abstract_code,
if (perf_output_handle_ == nullptr) return;
// We only support non-interpreted functions.
if (!abstract_code->IsCode()) return;
Code code = abstract_code->GetCode();
DCHECK(code->raw_instruction_start() == code->address() + Code::kHeaderSize);
if (!abstract_code.IsCode()) return;
Code code = abstract_code.GetCode();
DCHECK(code.raw_instruction_start() == code.address() + Code::kHeaderSize);
// Debug info has to be emitted first.
if (FLAG_perf_prof && !shared.is_null()) {
// TODO(herhut): This currently breaks for js2wasm/wasm2js functions.
if (code->kind() != Code::JS_TO_WASM_FUNCTION &&
code->kind() != Code::WASM_TO_JS_FUNCTION) {
if (code.kind() != Code::JS_TO_WASM_FUNCTION &&
code.kind() != Code::WASM_TO_JS_FUNCTION) {
LogWriteDebugInfo(code, shared);
}
}
const char* code_name = name;
uint8_t* code_pointer = reinterpret_cast<uint8_t*>(code->InstructionStart());
uint8_t* code_pointer = reinterpret_cast<uint8_t*>(code.InstructionStart());
// Code generated by Turbofan will have the safepoint table directly after
// instructions. There is no need to record the safepoint table itself.
uint32_t code_size = code->ExecutableInstructionSize();
uint32_t code_size = code.ExecutableInstructionSize();
// Unwinding info comes right after debug info.
if (FLAG_perf_prof_unwinding_info) LogWriteUnwindingInfo(code);
@ -281,11 +281,11 @@ constexpr size_t kUnknownScriptNameStringLen =
size_t GetScriptNameLength(const SourcePositionInfo& info) {
if (!info.script.is_null()) {
Object name_or_url = info.script->GetNameOrSourceURL();
if (name_or_url->IsString()) {
if (name_or_url.IsString()) {
String str = String::cast(name_or_url);
if (str->IsOneByteRepresentation()) return str->length();
if (str.IsOneByteRepresentation()) return str.length();
int length;
str->ToCString(DISALLOW_NULLS, FAST_STRING_TRAVERSAL, &length);
str.ToCString(DISALLOW_NULLS, FAST_STRING_TRAVERSAL, &length);
return static_cast<size_t>(length);
}
}
@ -297,15 +297,14 @@ Vector<const char> GetScriptName(const SourcePositionInfo& info,
const DisallowHeapAllocation& no_gc) {
if (!info.script.is_null()) {
Object name_or_url = info.script->GetNameOrSourceURL();
if (name_or_url->IsSeqOneByteString()) {
if (name_or_url.IsSeqOneByteString()) {
SeqOneByteString str = SeqOneByteString::cast(name_or_url);
return {reinterpret_cast<char*>(str->GetChars(no_gc)),
static_cast<size_t>(str->length())};
} else if (name_or_url->IsString()) {
return {reinterpret_cast<char*>(str.GetChars(no_gc)),
static_cast<size_t>(str.length())};
} else if (name_or_url.IsString()) {
int length;
*storage =
String::cast(name_or_url)
->ToCString(DISALLOW_NULLS, FAST_STRING_TRAVERSAL, &length);
*storage = String::cast(name_or_url)
.ToCString(DISALLOW_NULLS, FAST_STRING_TRAVERSAL, &length);
return {storage->get(), static_cast<size_t>(length)};
}
}
@ -328,21 +327,21 @@ SourcePositionInfo GetSourcePositionInfo(Handle<Code> code,
void PerfJitLogger::LogWriteDebugInfo(Code code, SharedFunctionInfo shared) {
// Compute the entry count and get the name of the script.
uint32_t entry_count = 0;
for (SourcePositionTableIterator iterator(code->SourcePositionTable());
for (SourcePositionTableIterator iterator(code.SourcePositionTable());
!iterator.done(); iterator.Advance()) {
entry_count++;
}
if (entry_count == 0) return;
// The WasmToJS wrapper stubs have source position entries.
if (!shared->HasSourceCode()) return;
Isolate* isolate = shared->GetIsolate();
Handle<Script> script(Script::cast(shared->script()), isolate);
if (!shared.HasSourceCode()) return;
Isolate* isolate = shared.GetIsolate();
Handle<Script> script(Script::cast(shared.script()), isolate);
PerfJitCodeDebugInfo debug_info;
debug_info.event_ = PerfJitCodeLoad::kDebugInfo;
debug_info.time_stamp_ = GetTimestamp();
debug_info.address_ = code->InstructionStart();
debug_info.address_ = code.InstructionStart();
debug_info.entry_count_ = entry_count;
uint32_t size = sizeof(debug_info);
@ -352,7 +351,7 @@ void PerfJitLogger::LogWriteDebugInfo(Code code, SharedFunctionInfo shared) {
Handle<Code> code_handle(code, isolate);
Handle<SharedFunctionInfo> function_handle(shared, isolate);
for (SourcePositionTableIterator iterator(code->SourcePositionTable());
for (SourcePositionTableIterator iterator(code.SourcePositionTable());
!iterator.done(); iterator.Advance()) {
SourcePositionInfo info(GetSourcePositionInfo(code_handle, function_handle,
iterator.source_position()));
@ -363,9 +362,9 @@ void PerfJitLogger::LogWriteDebugInfo(Code code, SharedFunctionInfo shared) {
debug_info.size_ = size + padding;
LogWriteBytes(reinterpret_cast<const char*>(&debug_info), sizeof(debug_info));
Address code_start = code->InstructionStart();
Address code_start = code.InstructionStart();
for (SourcePositionTableIterator iterator(code->SourcePositionTable());
for (SourcePositionTableIterator iterator(code.SourcePositionTable());
!iterator.done(); iterator.Advance()) {
SourcePositionInfo info(GetSourcePositionInfo(code_handle, function_handle,
iterator.source_position()));
@ -394,8 +393,8 @@ void PerfJitLogger::LogWriteUnwindingInfo(Code code) {
unwinding_info_header.time_stamp_ = GetTimestamp();
unwinding_info_header.eh_frame_hdr_size_ = EhFrameConstants::kEhFrameHdrSize;
if (code->has_unwinding_info()) {
unwinding_info_header.unwinding_size_ = code->unwinding_info_size();
if (code.has_unwinding_info()) {
unwinding_info_header.unwinding_size_ = code.unwinding_info_size();
unwinding_info_header.mapped_size_ = unwinding_info_header.unwinding_size_;
} else {
unwinding_info_header.unwinding_size_ = EhFrameConstants::kEhFrameHdrSize;
@ -410,9 +409,9 @@ void PerfJitLogger::LogWriteUnwindingInfo(Code code) {
LogWriteBytes(reinterpret_cast<const char*>(&unwinding_info_header),
sizeof(unwinding_info_header));
if (code->has_unwinding_info()) {
LogWriteBytes(reinterpret_cast<const char*>(code->unwinding_info_start()),
code->unwinding_info_size());
if (code.has_unwinding_info()) {
LogWriteBytes(reinterpret_cast<const char*>(code.unwinding_info_start()),
code.unwinding_info_size());
} else {
OFStream perf_output_stream(perf_output_handle_);
EhFrameWriter::WriteEmptyEhFrame(perf_output_stream);
@ -426,7 +425,7 @@ void PerfJitLogger::LogWriteUnwindingInfo(Code code) {
void PerfJitLogger::CodeMoveEvent(AbstractCode from, AbstractCode to) {
// We may receive a CodeMove event if a BytecodeArray object moves. Otherwise
// code relocation is not supported.
CHECK(from->IsBytecodeArray());
CHECK(from.IsBytecodeArray());
}
void PerfJitLogger::LogWriteBytes(const char* bytes, int size) {

View File

@ -22,7 +22,7 @@ int Arguments::smi_at(int index) {
return Smi::ToInt(Object(*address_of_arg_at(index)));
}
double Arguments::number_at(int index) { return (*this)[index]->Number(); }
double Arguments::number_at(int index) { return (*this)[index].Number(); }
} // namespace internal
} // namespace v8

View File

@ -47,7 +47,7 @@ class Arguments {
inline double number_at(int index);
inline void set_at(int index, Object value) {
*address_of_arg_at(index) = value->ptr();
*address_of_arg_at(index) = value.ptr();
}
inline FullObjectSlot slot_at(int index) {
@ -101,7 +101,7 @@ double ClobberDoubleRegisters(double x1, double x2, double x3, double x4);
} \
\
Type Name(int args_length, Address* args_object, Isolate* isolate) { \
DCHECK(isolate->context().is_null() || isolate->context()->IsContext()); \
DCHECK(isolate->context().is_null() || isolate->context().IsContext()); \
CLOBBER_DOUBLE_REGISTERS(); \
if (V8_UNLIKELY(TracingFlags::is_runtime_stats_enabled())) { \
return Stats_##Name(args_length, args_object, isolate); \
@ -112,7 +112,7 @@ double ClobberDoubleRegisters(double x1, double x2, double x3, double x4);
\
static InternalType __RT_impl_##Name(Arguments args, Isolate* isolate)
#define CONVERT_OBJECT(x) (x)->ptr()
#define CONVERT_OBJECT(x) (x).ptr()
#define CONVERT_OBJECTPAIR(x) (x)
#define RUNTIME_FUNCTION(Name) \

View File

@ -195,10 +195,10 @@ V8_WARN_UNUSED_RESULT MaybeHandle<Object> Invoke(Isolate* isolate,
if (params.target->IsJSFunction()) {
Handle<JSFunction> function = Handle<JSFunction>::cast(params.target);
if ((!params.is_construct || function->IsConstructor()) &&
function->shared()->IsApiFunction() &&
!function->shared()->BreakAtEntry()) {
function->shared().IsApiFunction() &&
!function->shared().BreakAtEntry()) {
SaveAndSwitchContext save(isolate, function->context());
DCHECK(function->context()->global_object()->IsJSGlobalObject());
DCHECK(function->context().global_object().IsJSGlobalObject());
Handle<Object> receiver = params.is_construct
? isolate->factory()->the_hole_value()
@ -286,12 +286,12 @@ V8_WARN_UNUSED_RESULT MaybeHandle<Object> Invoke(Isolate* isolate,
#ifdef VERIFY_HEAP
if (FLAG_verify_heap) {
value->ObjectVerify(isolate);
value.ObjectVerify(isolate);
}
#endif
// Update the pending exception flag and return the value.
bool has_exception = value->IsException(isolate);
bool has_exception = value.IsException(isolate);
DCHECK(has_exception == isolate->has_pending_exception());
if (has_exception) {
if (params.message_handling == Execution::MessageHandling::kReport) {

View File

@ -107,7 +107,7 @@ inline Object BuiltinExitFrame::receiver_slot_object() const {
// fp[4]: argc.
// fp[2 + argc - 1]: receiver.
Object argc_slot = argc_slot_object();
DCHECK(argc_slot->IsSmi());
DCHECK(argc_slot.IsSmi());
int argc = Smi::ToInt(argc_slot);
const int receiverOffset = BuiltinExitFrameConstants::kNewTargetOffset +
@ -138,7 +138,7 @@ inline Object StandardFrame::GetExpression(int index) const {
}
inline void StandardFrame::SetExpression(int index, Object value) {
Memory<Address>(GetExpressionAddress(index)) = value->ptr();
Memory<Address>(GetExpressionAddress(index)) = value.ptr();
}
inline Address StandardFrame::caller_fp() const {
@ -187,7 +187,7 @@ Address JavaScriptFrame::GetParameterSlot(int index) const {
}
inline void JavaScriptFrame::set_receiver(Object value) {
Memory<Address>(GetParameterSlot(-1)) = value->ptr();
Memory<Address>(GetParameterSlot(-1)) = value.ptr();
}
inline bool JavaScriptFrame::has_adapted_arguments() const {

View File

@ -160,8 +160,8 @@ void StackTraceFrameIterator::Advance() {
bool StackTraceFrameIterator::IsValidFrame(StackFrame* frame) const {
if (frame->is_java_script()) {
JavaScriptFrame* jsFrame = static_cast<JavaScriptFrame*>(frame);
if (!jsFrame->function()->IsJSFunction()) return false;
return jsFrame->function()->shared()->IsSubjectToDebugging();
if (!jsFrame->function().IsJSFunction()) return false;
return jsFrame->function().shared().IsSubjectToDebugging();
}
// apart from javascript, only wasm is valid
return frame->is_wasm();
@ -180,9 +180,9 @@ bool IsInterpreterFramePc(Isolate* isolate, Address pc,
Code interpreter_bytecode_dispatch =
isolate->builtins()->builtin(Builtins::kInterpreterEnterBytecodeDispatch);
if (interpreter_entry_trampoline->contains(pc) ||
interpreter_bytecode_advance->contains(pc) ||
interpreter_bytecode_dispatch->contains(pc)) {
if (interpreter_entry_trampoline.contains(pc) ||
interpreter_bytecode_advance.contains(pc) ||
interpreter_bytecode_dispatch.contains(pc)) {
return true;
} else if (FLAG_interpreted_frames_native_stack) {
intptr_t marker = Memory<intptr_t>(
@ -194,14 +194,14 @@ bool IsInterpreterFramePc(Isolate* isolate, Address pc,
Memory<Address>(state->fp + StandardFrameConstants::kFunctionOffset));
// There's no need to run a full ContainsSlow if we know the frame can't be
// an InterpretedFrame, so we do these fast checks first
if (StackFrame::IsTypeMarker(marker) || maybe_function->IsSmi()) {
if (StackFrame::IsTypeMarker(marker) || maybe_function.IsSmi()) {
return false;
} else if (!isolate->heap()->InSpaceSlow(pc, CODE_SPACE)) {
return false;
}
interpreter_entry_trampoline =
isolate->heap()->GcSafeFindCodeForInnerPointer(pc);
return interpreter_entry_trampoline->is_interpreter_trampoline_builtin();
return interpreter_entry_trampoline.is_interpreter_trampoline_builtin();
} else {
return false;
}
@ -384,7 +384,7 @@ bool SafeStackFrameIterator::IsValidCaller(StackFrame* frame) {
// that it really an Smi.
Object number_of_args =
reinterpret_cast<ArgumentsAdaptorFrame*>(frame)->GetExpression(0);
if (!number_of_args->IsSmi()) {
if (!number_of_args.IsSmi()) {
return false;
}
}
@ -444,24 +444,24 @@ Code GetContainingCode(Isolate* isolate, Address pc) {
Code StackFrame::LookupCode() const {
Code result = GetContainingCode(isolate(), pc());
DCHECK_GE(pc(), result->InstructionStart());
DCHECK_LT(pc(), result->InstructionEnd());
DCHECK_GE(pc(), result.InstructionStart());
DCHECK_LT(pc(), result.InstructionEnd());
return result;
}
void StackFrame::IteratePc(RootVisitor* v, Address* pc_address,
Address* constant_pool_address, Code holder) {
Address pc = *pc_address;
DCHECK(holder->GetHeap()->GcSafeCodeContains(holder, pc));
unsigned pc_offset = static_cast<unsigned>(pc - holder->InstructionStart());
DCHECK(holder.GetHeap()->GcSafeCodeContains(holder, pc));
unsigned pc_offset = static_cast<unsigned>(pc - holder.InstructionStart());
Object code = holder;
v->VisitRootPointer(Root::kTop, nullptr, FullObjectSlot(&code));
if (code == holder) return;
holder = Code::unchecked_cast(code);
pc = holder->InstructionStart() + pc_offset;
pc = holder.InstructionStart() + pc_offset;
*pc_address = pc;
if (FLAG_enable_embedded_constant_pool && constant_pool_address) {
*constant_pool_address = holder->constant_pool();
*constant_pool_address = holder.constant_pool();
}
}
@ -492,7 +492,7 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
Object maybe_function = Object(
Memory<Address>(state->fp + StandardFrameConstants::kFunctionOffset));
if (!StackFrame::IsTypeMarker(marker)) {
if (maybe_function->IsSmi()) {
if (maybe_function.IsSmi()) {
return NATIVE;
} else if (IsInterpreterFramePc(iterator->isolate(), *(state->pc_address),
state)) {
@ -532,13 +532,13 @@ StackFrame::Type StackFrame::ComputeType(const StackFrameIteratorBase* iterator,
// Look up the code object to figure out the type of the stack frame.
Code code_obj = GetContainingCode(iterator->isolate(), pc);
if (!code_obj.is_null()) {
switch (code_obj->kind()) {
switch (code_obj.kind()) {
case Code::BUILTIN:
if (StackFrame::IsTypeMarker(marker)) break;
if (code_obj->is_interpreter_trampoline_builtin()) {
if (code_obj.is_interpreter_trampoline_builtin()) {
return INTERPRETED;
}
if (code_obj->is_turbofanned()) {
if (code_obj.is_turbofanned()) {
// TODO(bmeurer): We treat frames for BUILTIN Code objects as
// OptimizedFrame for now (all the builtins with JavaScript
// linkage are actually generated with TurboFan currently, so
@ -679,7 +679,7 @@ StackFrame::Type ExitFrame::ComputeFrameType(Address fp) {
const int offset = ExitFrameConstants::kFrameTypeOffset;
Object marker(Memory<Address>(fp + offset));
if (!marker->IsSmi()) {
if (!marker.IsSmi()) {
return EXIT;
}
@ -719,7 +719,7 @@ JSFunction BuiltinExitFrame::function() const {
Object BuiltinExitFrame::receiver() const { return receiver_slot_object(); }
bool BuiltinExitFrame::IsConstructor() const {
return !new_target_slot_object()->IsUndefined(isolate());
return !new_target_slot_object().IsUndefined(isolate());
}
Object BuiltinExitFrame::GetParameter(int i) const {
@ -731,7 +731,7 @@ Object BuiltinExitFrame::GetParameter(int i) const {
int BuiltinExitFrame::ComputeParametersCount() const {
Object argc_slot = argc_slot_object();
DCHECK(argc_slot->IsSmi());
DCHECK(argc_slot.IsSmi());
// Argc also counts the receiver, target, new target, and argc itself as args,
// therefore the real argument count is argc - 4.
int argc = Smi::ToInt(argc_slot) - 4;
@ -816,8 +816,8 @@ Object StandardFrame::context() const {
int StandardFrame::position() const {
AbstractCode code = AbstractCode::cast(LookupCode());
int code_offset = static_cast<int>(pc() - code->InstructionStart());
return code->SourcePosition(code_offset);
int code_offset = static_cast<int>(pc() - code.InstructionStart());
return code.SourcePosition(code_offset);
}
int StandardFrame::ComputeExpressionsCount() const {
@ -879,17 +879,17 @@ void StandardFrame::IterateCompiledFrame(RootVisitor* v) const {
InnerPointerToCodeCache::InnerPointerToCodeCacheEntry* entry =
isolate()->inner_pointer_to_code_cache()->GetCacheEntry(inner_pointer);
if (!entry->safepoint_entry.is_valid()) {
entry->safepoint_entry = entry->code->GetSafepointEntry(inner_pointer);
entry->safepoint_entry = entry->code.GetSafepointEntry(inner_pointer);
DCHECK(entry->safepoint_entry.is_valid());
} else {
DCHECK(entry->safepoint_entry.Equals(
entry->code->GetSafepointEntry(inner_pointer)));
entry->code.GetSafepointEntry(inner_pointer)));
}
code = entry->code;
safepoint_entry = entry->safepoint_entry;
stack_slots = code->stack_slots();
has_tagged_params = code->has_tagged_params();
stack_slots = code.stack_slots();
has_tagged_params = code.has_tagged_params();
}
uint32_t slot_space = stack_slots * kSystemPointerSize;
@ -1044,18 +1044,18 @@ Address StubFrame::GetCallerStackPointer() const {
int StubFrame::LookupExceptionHandlerInTable(int* stack_slots) {
Code code = LookupCode();
DCHECK(code->is_turbofanned());
DCHECK_EQ(code->kind(), Code::BUILTIN);
DCHECK(code.is_turbofanned());
DCHECK_EQ(code.kind(), Code::BUILTIN);
HandlerTable table(code);
int pc_offset = static_cast<int>(pc() - code->InstructionStart());
*stack_slots = code->stack_slots();
int pc_offset = static_cast<int>(pc() - code.InstructionStart());
*stack_slots = code.stack_slots();
return table.LookupReturn(pc_offset);
}
void OptimizedFrame::Iterate(RootVisitor* v) const { IterateCompiledFrame(v); }
void JavaScriptFrame::SetParameterValue(int index, Object value) const {
Memory<Address>(GetParameterSlot(index)) = value->ptr();
Memory<Address>(GetParameterSlot(index)) = value.ptr();
}
bool JavaScriptFrame::IsConstructor() const {
@ -1073,11 +1073,11 @@ bool JavaScriptFrame::HasInlinedFrames() const {
return functions.size() > 1;
}
Code JavaScriptFrame::unchecked_code() const { return function()->code(); }
Code JavaScriptFrame::unchecked_code() const { return function().code(); }
int OptimizedFrame::ComputeParametersCount() const {
Code code = LookupCode();
if (code->kind() == Code::BUILTIN) {
if (code.kind() == Code::BUILTIN) {
return static_cast<int>(
Memory<intptr_t>(fp() + OptimizedBuiltinFrameConstants::kArgCOffset));
} else {
@ -1092,7 +1092,7 @@ Address JavaScriptFrame::GetCallerStackPointer() const {
void JavaScriptFrame::GetFunctions(
std::vector<SharedFunctionInfo>* functions) const {
DCHECK(functions->empty());
functions->push_back(function()->shared());
functions->push_back(function().shared());
}
void JavaScriptFrame::GetFunctions(
@ -1102,14 +1102,14 @@ void JavaScriptFrame::GetFunctions(
GetFunctions(&raw_functions);
for (const auto& raw_function : raw_functions) {
functions->push_back(
Handle<SharedFunctionInfo>(raw_function, function()->GetIsolate()));
Handle<SharedFunctionInfo>(raw_function, function().GetIsolate()));
}
}
void JavaScriptFrame::Summarize(std::vector<FrameSummary>* functions) const {
DCHECK(functions->empty());
Code code = LookupCode();
int offset = static_cast<int>(pc() - code->InstructionStart());
int offset = static_cast<int>(pc() - code.InstructionStart());
AbstractCode abstract_code = AbstractCode::cast(code);
Handle<FixedArray> params = GetParameters();
FrameSummary::JavaScriptFrameSummary summary(
@ -1126,7 +1126,7 @@ Object JavaScriptFrame::unchecked_function() const {
// During deoptimization of an optimized function, we may have yet to
// materialize some closures on the stack. The arguments marker object
// marks this case.
DCHECK(function_slot_object()->IsJSFunction() ||
DCHECK(function_slot_object().IsJSFunction() ||
ReadOnlyRoots(isolate()).arguments_marker() == function_slot_object());
return function_slot_object();
}
@ -1136,18 +1136,18 @@ Object JavaScriptFrame::receiver() const { return GetParameter(-1); }
Object JavaScriptFrame::context() const {
const int offset = StandardFrameConstants::kContextOffset;
Object maybe_result(Memory<Address>(fp() + offset));
DCHECK(!maybe_result->IsSmi());
DCHECK(!maybe_result.IsSmi());
return maybe_result;
}
Script JavaScriptFrame::script() const {
return Script::cast(function()->shared()->script());
return Script::cast(function().shared().script());
}
int JavaScriptFrame::LookupExceptionHandlerInTable(
int* stack_depth, HandlerTable::CatchPrediction* prediction) {
DCHECK(!LookupCode()->has_handler_table());
DCHECK(!LookupCode()->is_optimized_code());
DCHECK(!LookupCode().has_handler_table());
DCHECK(!LookupCode().is_optimized_code());
return -1;
}
@ -1155,21 +1155,21 @@ void JavaScriptFrame::PrintFunctionAndOffset(JSFunction function,
AbstractCode code, int code_offset,
FILE* file,
bool print_line_number) {
PrintF(file, "%s", function->IsOptimized() ? "*" : "~");
function->PrintName(file);
PrintF(file, "%s", function.IsOptimized() ? "*" : "~");
function.PrintName(file);
PrintF(file, "+%d", code_offset);
if (print_line_number) {
SharedFunctionInfo shared = function->shared();
int source_pos = code->SourcePosition(code_offset);
Object maybe_script = shared->script();
if (maybe_script->IsScript()) {
SharedFunctionInfo shared = function.shared();
int source_pos = code.SourcePosition(code_offset);
Object maybe_script = shared.script();
if (maybe_script.IsScript()) {
Script script = Script::cast(maybe_script);
int line = script->GetLineNumber(source_pos) + 1;
Object script_name_raw = script->name();
if (script_name_raw->IsString()) {
String script_name = String::cast(script->name());
int line = script.GetLineNumber(source_pos) + 1;
Object script_name_raw = script.name();
if (script_name_raw.IsString()) {
String script_name = String::cast(script.name());
std::unique_ptr<char[]> c_script_name =
script_name->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
script_name.ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL);
PrintF(file, " at %s:%d", c_script_name.get(), line);
} else {
PrintF(file, " at <unknown>:%d", line);
@ -1196,20 +1196,20 @@ void JavaScriptFrame::PrintTop(Isolate* isolate, FILE* file, bool print_args,
code_offset = iframe->GetBytecodeOffset();
} else {
Code code = frame->unchecked_code();
code_offset = static_cast<int>(frame->pc() - code->InstructionStart());
code_offset = static_cast<int>(frame->pc() - code.InstructionStart());
}
PrintFunctionAndOffset(function, function->abstract_code(), code_offset,
PrintFunctionAndOffset(function, function.abstract_code(), code_offset,
file, print_line_number);
if (print_args) {
// function arguments
// (we are intentionally only printing the actually
// supplied parameters, not all parameters required)
PrintF(file, "(this=");
frame->receiver()->ShortPrint(file);
frame->receiver().ShortPrint(file);
const int length = frame->ComputeParametersCount();
for (int i = 0; i < length; i++) {
PrintF(file, ", ");
frame->GetParameter(i)->ShortPrint(file);
frame->GetParameter(i).ShortPrint(file);
}
PrintF(file, ")");
}
@ -1224,16 +1224,16 @@ void JavaScriptFrame::CollectFunctionAndOffsetForICStats(JSFunction function,
int code_offset) {
auto ic_stats = ICStats::instance();
ICInfo& ic_info = ic_stats->Current();
SharedFunctionInfo shared = function->shared();
SharedFunctionInfo shared = function.shared();
ic_info.function_name = ic_stats->GetOrCacheFunctionName(function);
ic_info.script_offset = code_offset;
int source_pos = code->SourcePosition(code_offset);
Object maybe_script = shared->script();
if (maybe_script->IsScript()) {
int source_pos = code.SourcePosition(code_offset);
Object maybe_script = shared.script();
if (maybe_script.IsScript()) {
Script script = Script::cast(maybe_script);
ic_info.line_num = script->GetLineNumber(source_pos) + 1;
ic_info.line_num = script.GetLineNumber(source_pos) + 1;
ic_info.script_name = ic_stats->GetOrCacheScriptName(script);
}
}
@ -1245,7 +1245,7 @@ Object JavaScriptFrame::GetParameter(int index) const {
int JavaScriptFrame::ComputeParametersCount() const {
DCHECK(can_access_heap_objects() &&
isolate()->heap()->gc_state() == Heap::NOT_IN_GC);
return function()->shared()->internal_formal_parameter_count();
return function().shared().internal_formal_parameter_count();
}
Handle<FixedArray> JavaScriptFrame::GetParameters() const {
@ -1293,7 +1293,7 @@ void JavaScriptBuiltinContinuationWithCatchFrame::SetException(
// Only allow setting exception if previous value was the hole.
CHECK_EQ(ReadOnlyRoots(isolate()).the_hole_value(),
Object(Memory<Address>(exception_argument_slot)));
Memory<Address>(exception_argument_slot) = exception->ptr();
Memory<Address>(exception_argument_slot) = exception.ptr();
}
FrameSummary::JavaScriptFrameSummary::JavaScriptFrameSummary(
@ -1307,8 +1307,8 @@ FrameSummary::JavaScriptFrameSummary::JavaScriptFrameSummary(
code_offset_(code_offset),
is_constructor_(is_constructor),
parameters_(parameters, isolate) {
DCHECK(abstract_code->IsBytecodeArray() ||
Code::cast(abstract_code)->kind() != Code::OPTIMIZED_FUNCTION);
DCHECK(abstract_code.IsBytecodeArray() ||
Code::cast(abstract_code).kind() != Code::OPTIMIZED_FUNCTION);
}
void FrameSummary::EnsureSourcePositionsAvailable() {
@ -1331,11 +1331,11 @@ void FrameSummary::JavaScriptFrameSummary::EnsureSourcePositionsAvailable() {
bool FrameSummary::JavaScriptFrameSummary::AreSourcePositionsAvailable() const {
return !FLAG_enable_lazy_source_positions ||
function()->shared()->GetBytecodeArray()->HasSourcePositionTable();
function()->shared().GetBytecodeArray().HasSourcePositionTable();
}
bool FrameSummary::JavaScriptFrameSummary::is_subject_to_debugging() const {
return function()->shared()->IsSubjectToDebugging();
return function()->shared().IsSubjectToDebugging();
}
int FrameSummary::JavaScriptFrameSummary::SourcePosition() const {
@ -1347,7 +1347,7 @@ int FrameSummary::JavaScriptFrameSummary::SourceStatementPosition() const {
}
Handle<Object> FrameSummary::JavaScriptFrameSummary::script() const {
return handle(function_->shared()->script(), isolate());
return handle(function_->shared().script(), isolate());
}
Handle<String> FrameSummary::JavaScriptFrameSummary::FunctionName() const {
@ -1355,7 +1355,7 @@ Handle<String> FrameSummary::JavaScriptFrameSummary::FunctionName() const {
}
Handle<Context> FrameSummary::JavaScriptFrameSummary::native_context() const {
return handle(function_->context()->native_context(), isolate());
return handle(function_->context().native_context(), isolate());
}
FrameSummary::WasmFrameSummary::WasmFrameSummary(
@ -1392,7 +1392,7 @@ int FrameSummary::WasmFrameSummary::SourcePosition() const {
}
Handle<Script> FrameSummary::WasmFrameSummary::script() const {
return handle(wasm_instance()->module_object()->script(),
return handle(wasm_instance()->module_object().script(),
wasm_instance()->GetIsolate());
}
@ -1516,7 +1516,7 @@ void OptimizedFrame::Summarize(std::vector<FrameSummary>* frames) const {
// Delegate to JS frame in absence of turbofan deoptimization.
// TODO(turbofan): Revisit once we support deoptimization across the board.
Code code = LookupCode();
if (code->kind() == Code::BUILTIN) {
if (code.kind() == Code::BUILTIN) {
return JavaScriptFrame::Summarize(frames);
}
@ -1597,14 +1597,14 @@ int OptimizedFrame::LookupExceptionHandlerInTable(
DCHECK_NULL(prediction);
Code code = LookupCode();
HandlerTable table(code);
int pc_offset = static_cast<int>(pc() - code->InstructionStart());
if (stack_slots) *stack_slots = code->stack_slots();
int pc_offset = static_cast<int>(pc() - code.InstructionStart());
if (stack_slots) *stack_slots = code.stack_slots();
// When the return pc has been replaced by a trampoline there won't be
// a handler for this trampoline. Thus we need to use the return pc that
// _used to be_ on the stack to get the right ExceptionHandler.
if (code->kind() == Code::OPTIMIZED_FUNCTION &&
code->marked_for_deoptimization()) {
if (code.kind() == Code::OPTIMIZED_FUNCTION &&
code.marked_for_deoptimization()) {
SafepointTable safepoints(code);
pc_offset = safepoints.find_return_pc(pc_offset);
}
@ -1616,21 +1616,21 @@ DeoptimizationData OptimizedFrame::GetDeoptimizationData(
DCHECK(is_optimized());
JSFunction opt_function = function();
Code code = opt_function->code();
Code code = opt_function.code();
// The code object may have been replaced by lazy deoptimization. Fall
// back to a slow search in this case to find the original optimized
// code object.
if (!code->contains(pc())) {
if (!code.contains(pc())) {
code = isolate()->heap()->GcSafeFindCodeForInnerPointer(pc());
}
DCHECK(!code.is_null());
DCHECK(code->kind() == Code::OPTIMIZED_FUNCTION);
DCHECK(code.kind() == Code::OPTIMIZED_FUNCTION);
SafepointEntry safepoint_entry = code->GetSafepointEntry(pc());
SafepointEntry safepoint_entry = code.GetSafepointEntry(pc());
if (safepoint_entry.has_deoptimization_index()) {
*deopt_index = safepoint_entry.deoptimization_index();
return DeoptimizationData::cast(code->deoptimization_data());
return DeoptimizationData::cast(code.deoptimization_data());
}
*deopt_index = Safepoint::kNoDeoptimizationIndex;
return DeoptimizationData();
@ -1638,7 +1638,7 @@ DeoptimizationData OptimizedFrame::GetDeoptimizationData(
Object OptimizedFrame::receiver() const {
Code code = LookupCode();
if (code->kind() == Code::BUILTIN) {
if (code.kind() == Code::BUILTIN) {
Address argc_ptr = fp() + OptimizedBuiltinFrameConstants::kArgCOffset;
intptr_t argc = *reinterpret_cast<intptr_t*>(argc_ptr);
intptr_t args_size =
@ -1659,7 +1659,7 @@ void OptimizedFrame::GetFunctions(
// Delegate to JS frame in absence of turbofan deoptimization.
// TODO(turbofan): Revisit once we support deoptimization across the board.
Code code = LookupCode();
if (code->kind() == Code::BUILTIN) {
if (code.kind() == Code::BUILTIN) {
return JavaScriptFrame::GetFunctions(functions);
}
@ -1668,10 +1668,10 @@ void OptimizedFrame::GetFunctions(
DeoptimizationData const data = GetDeoptimizationData(&deopt_index);
DCHECK(!data.is_null());
DCHECK_NE(Safepoint::kNoDeoptimizationIndex, deopt_index);
FixedArray const literal_array = data->LiteralArray();
FixedArray const literal_array = data.LiteralArray();
TranslationIterator it(data->TranslationByteArray(),
data->TranslationIndex(deopt_index)->value());
TranslationIterator it(data.TranslationByteArray(),
data.TranslationIndex(deopt_index).value());
Translation::Opcode opcode = static_cast<Translation::Opcode>(it.Next());
DCHECK_EQ(Translation::BEGIN, opcode);
it.Next(); // Skip frame count.
@ -1690,7 +1690,7 @@ void OptimizedFrame::GetFunctions(
jsframe_count--;
// The second operand of the frame points to the function.
Object shared = literal_array->get(it.Next());
Object shared = literal_array.get(it.Next());
functions->push_back(SharedFunctionInfo::cast(shared));
// Skip over remaining operands to advance to the next opcode.
@ -1714,7 +1714,7 @@ Object OptimizedFrame::StackSlotAt(int index) const {
int InterpretedFrame::position() const {
AbstractCode code = AbstractCode::cast(GetBytecodeArray());
int code_offset = GetBytecodeOffset();
return code->SourcePosition(code_offset);
return code.SourcePosition(code_offset);
}
int InterpretedFrame::LookupExceptionHandlerInTable(
@ -1823,21 +1823,21 @@ void WasmCompiledFrame::Print(StringStream* accumulator, PrintMode mode,
int index) const {
PrintIndex(accumulator, mode, index);
accumulator->Add("WASM [");
accumulator->PrintName(script()->name());
accumulator->PrintName(script().name());
Address instruction_start = isolate()
->wasm_engine()
->code_manager()
->LookupCode(pc())
->instruction_start();
Vector<const uint8_t> raw_func_name =
module_object()->GetRawFunctionName(function_index());
module_object().GetRawFunctionName(function_index());
const int kMaxPrintedFunctionName = 64;
char func_name[kMaxPrintedFunctionName + 1];
int func_name_len = std::min(kMaxPrintedFunctionName, raw_func_name.length());
memcpy(func_name, raw_func_name.begin(), func_name_len);
func_name[func_name_len] = '\0';
int pos = position();
const wasm::WasmModule* module = wasm_instance()->module_object()->module();
const wasm::WasmModule* module = wasm_instance().module_object().module();
int func_index = function_index();
int func_code_offset = module->functions[func_index].code.offset();
accumulator->Add("], function #%u ('%s'), pc=%p (+0x%x), pos=%d (+%d)\n",
@ -1870,14 +1870,14 @@ WasmInstanceObject WasmCompiledFrame::wasm_instance() const {
}
WasmModuleObject WasmCompiledFrame::module_object() const {
return wasm_instance()->module_object();
return wasm_instance().module_object();
}
uint32_t WasmCompiledFrame::function_index() const {
return FrameSummary::GetSingle(this).AsWasmCompiled().function_index();
}
Script WasmCompiledFrame::script() const { return module_object()->script(); }
Script WasmCompiledFrame::script() const { return module_object().script(); }
int WasmCompiledFrame::position() const {
return FrameSummary::GetSingle(this).SourcePosition();
@ -1934,7 +1934,7 @@ void WasmInterpreterEntryFrame::Print(StringStream* accumulator, PrintMode mode,
PrintIndex(accumulator, mode, index);
accumulator->Add("WASM INTERPRETER ENTRY [");
Script script = this->script();
accumulator->PrintName(script->name());
accumulator->PrintName(script.name());
accumulator->Add("]");
if (mode != OVERVIEW) accumulator->Add("\n");
}
@ -1943,7 +1943,7 @@ void WasmInterpreterEntryFrame::Summarize(
std::vector<FrameSummary>* functions) const {
Handle<WasmInstanceObject> instance(wasm_instance(), isolate());
std::vector<std::pair<uint32_t, int>> interpreted_stack =
instance->debug_info()->GetInterpretedStack(fp());
instance->debug_info().GetInterpretedStack(fp());
for (auto& e : interpreted_stack) {
FrameSummary::WasmInterpretedFrameSummary summary(isolate(), instance,
@ -1961,15 +1961,15 @@ WasmInstanceObject WasmInterpreterEntryFrame::wasm_instance() const {
}
WasmDebugInfo WasmInterpreterEntryFrame::debug_info() const {
return wasm_instance()->debug_info();
return wasm_instance().debug_info();
}
WasmModuleObject WasmInterpreterEntryFrame::module_object() const {
return wasm_instance()->module_object();
return wasm_instance().module_object();
}
Script WasmInterpreterEntryFrame::script() const {
return module_object()->script();
return module_object().script();
}
int WasmInterpreterEntryFrame::position() const {
@ -1977,7 +1977,7 @@ int WasmInterpreterEntryFrame::position() const {
}
Object WasmInterpreterEntryFrame::context() const {
return wasm_instance()->native_context();
return wasm_instance().native_context();
}
Address WasmInterpreterEntryFrame::GetCallerStackPointer() const {
@ -2024,7 +2024,7 @@ void PrintFunctionSource(StringStream* accumulator, SharedFunctionInfo shared,
void JavaScriptFrame::Print(StringStream* accumulator, PrintMode mode,
int index) const {
Handle<SharedFunctionInfo> shared = handle(function()->shared(), isolate());
Handle<SharedFunctionInfo> shared = handle(function().shared(), isolate());
SharedFunctionInfo::EnsureSourcePositionsAvailable(isolate(), shared);
DisallowHeapAllocation no_gc;
@ -2045,23 +2045,23 @@ void JavaScriptFrame::Print(StringStream* accumulator, PrintMode mode,
// or context slots.
ScopeInfo scope_info = shared->scope_info();
Object script_obj = shared->script();
if (script_obj->IsScript()) {
if (script_obj.IsScript()) {
Script script = Script::cast(script_obj);
accumulator->Add(" [");
accumulator->PrintName(script->name());
accumulator->PrintName(script.name());
if (is_interpreted()) {
const InterpretedFrame* iframe =
reinterpret_cast<const InterpretedFrame*>(this);
BytecodeArray bytecodes = iframe->GetBytecodeArray();
int offset = iframe->GetBytecodeOffset();
int source_pos = AbstractCode::cast(bytecodes)->SourcePosition(offset);
int line = script->GetLineNumber(source_pos) + 1;
int source_pos = AbstractCode::cast(bytecodes).SourcePosition(offset);
int line = script.GetLineNumber(source_pos) + 1;
accumulator->Add(":%d] [bytecode=%p offset=%d]", line,
reinterpret_cast<void*>(bytecodes.ptr()), offset);
} else {
int function_start_pos = shared->StartPosition();
int line = script->GetLineNumber(function_start_pos) + 1;
int line = script.GetLineNumber(function_start_pos) + 1;
accumulator->Add(":~%d] [pc=%p]", line, reinterpret_cast<void*>(pc()));
}
}
@ -2089,15 +2089,15 @@ void JavaScriptFrame::Print(StringStream* accumulator, PrintMode mode,
accumulator->Add(" {\n");
// Compute the number of locals and expression stack elements.
int heap_locals_count = scope_info->ContextLocalCount();
int heap_locals_count = scope_info.ContextLocalCount();
int expressions_count = ComputeExpressionsCount();
// Try to get hold of the context of this frame.
Context context;
if (this->context()->IsContext()) {
if (this->context().IsContext()) {
context = Context::cast(this->context());
while (context->IsWithContext()) {
context = context->previous();
while (context.IsWithContext()) {
context = context.previous();
DCHECK(!context.is_null());
}
}
@ -2108,12 +2108,12 @@ void JavaScriptFrame::Print(StringStream* accumulator, PrintMode mode,
}
for (int i = 0; i < heap_locals_count; i++) {
accumulator->Add(" var ");
accumulator->PrintName(scope_info->ContextLocalName(i));
accumulator->PrintName(scope_info.ContextLocalName(i));
accumulator->Add(" = ");
if (!context.is_null()) {
int index = Context::MIN_CONTEXT_SLOTS + i;
if (index < context->length()) {
accumulator->Add("%o", context->get(index));
if (index < context.length()) {
accumulator->Add("%o", context.get(index));
} else {
accumulator->Add(
"// warning: missing context slot - inconsistent frame?");
@ -2142,7 +2142,7 @@ void ArgumentsAdaptorFrame::Print(StringStream* accumulator, PrintMode mode,
int actual = ComputeParametersCount();
int expected = -1;
JSFunction function = this->function();
expected = function->shared()->internal_formal_parameter_count();
expected = function.shared().internal_formal_parameter_count();
PrintIndex(accumulator, mode, index);
accumulator->Add("arguments adaptor frame: %d->%d", actual, expected);
@ -2190,7 +2190,7 @@ void InternalFrame::Iterate(RootVisitor* v) const {
// the full stack frame contains only tagged pointers or only raw values.
// This is used for the WasmCompileLazy builtin, where we actually pass
// untagged arguments and also store untagged values on the stack.
if (code->has_tagged_params()) IterateExpressions(v);
if (code.has_tagged_params()) IterateExpressions(v);
}
// -------------------------------------------------------------------------

View File

@ -84,7 +84,7 @@ Object FutexEmulation::WaitJs(Isolate* isolate,
Handle<JSArrayBuffer> array_buffer, size_t addr,
int32_t value, double rel_timeout_ms) {
Object res = Wait32(isolate, array_buffer, addr, value, rel_timeout_ms);
if (res->IsSmi()) {
if (res.IsSmi()) {
int val = Smi::ToInt(res);
switch (val) {
case WaitReturnValue::kOk:
@ -201,7 +201,7 @@ Object FutexEmulation::Wait(Isolate* isolate,
// be false, so we'll loop and then check interrupts.
if (interrupted) {
Object interrupt_object = isolate->stack_guard()->HandleInterrupts();
if (interrupt_object->IsException(isolate)) {
if (interrupt_object.IsException(isolate)) {
result = interrupt_object;
callback_result = AtomicsWaitEvent::kTerminatedExecution;
mutex_.Pointer()->Lock();

View File

@ -21,37 +21,37 @@ IsolateAllocationMode Isolate::isolate_allocation_mode() {
}
void Isolate::set_context(Context context) {
DCHECK(context.is_null() || context->IsContext());
DCHECK(context.is_null() || context.IsContext());
thread_local_top()->context_ = context;
}
Handle<NativeContext> Isolate::native_context() {
return handle(context()->native_context(), this);
return handle(context().native_context(), this);
}
NativeContext Isolate::raw_native_context() {
return context()->native_context();
return context().native_context();
}
Object Isolate::pending_exception() {
DCHECK(has_pending_exception());
DCHECK(!thread_local_top()->pending_exception_->IsException(this));
DCHECK(!thread_local_top()->pending_exception_.IsException(this));
return thread_local_top()->pending_exception_;
}
void Isolate::set_pending_exception(Object exception_obj) {
DCHECK(!exception_obj->IsException(this));
DCHECK(!exception_obj.IsException(this));
thread_local_top()->pending_exception_ = exception_obj;
}
void Isolate::clear_pending_exception() {
DCHECK(!thread_local_top()->pending_exception_->IsException(this));
DCHECK(!thread_local_top()->pending_exception_.IsException(this));
thread_local_top()->pending_exception_ = ReadOnlyRoots(this).the_hole_value();
}
bool Isolate::has_pending_exception() {
DCHECK(!thread_local_top()->pending_exception_->IsException(this));
return !thread_local_top()->pending_exception_->IsTheHole(this);
DCHECK(!thread_local_top()->pending_exception_.IsException(this));
return !thread_local_top()->pending_exception_.IsTheHole(this);
}
void Isolate::clear_pending_message() {
@ -61,18 +61,18 @@ void Isolate::clear_pending_message() {
Object Isolate::scheduled_exception() {
DCHECK(has_scheduled_exception());
DCHECK(!thread_local_top()->scheduled_exception_->IsException(this));
DCHECK(!thread_local_top()->scheduled_exception_.IsException(this));
return thread_local_top()->scheduled_exception_;
}
bool Isolate::has_scheduled_exception() {
DCHECK(!thread_local_top()->scheduled_exception_->IsException(this));
DCHECK(!thread_local_top()->scheduled_exception_.IsException(this));
return thread_local_top()->scheduled_exception_ !=
ReadOnlyRoots(this).the_hole_value();
}
void Isolate::clear_scheduled_exception() {
DCHECK(!thread_local_top()->scheduled_exception_->IsException(this));
DCHECK(!thread_local_top()->scheduled_exception_.IsException(this));
thread_local_top()->scheduled_exception_ =
ReadOnlyRoots(this).the_hole_value();
}
@ -88,11 +88,11 @@ void Isolate::FireBeforeCallEnteredCallback() {
}
Handle<JSGlobalObject> Isolate::global_object() {
return handle(context()->global_object(), this);
return handle(context().global_object(), this);
}
Handle<JSGlobalProxy> Isolate::global_proxy() {
return handle(context()->global_proxy(), this);
return handle(context().global_proxy(), this);
}
Isolate::ExceptionScope::ExceptionScope(Isolate* isolate)
@ -103,12 +103,12 @@ Isolate::ExceptionScope::~ExceptionScope() {
isolate_->set_pending_exception(*pending_exception_);
}
#define NATIVE_CONTEXT_FIELD_ACCESSOR(index, type, name) \
Handle<type> Isolate::name() { \
return Handle<type>(raw_native_context()->name(), this); \
} \
bool Isolate::is_##name(type value) { \
return raw_native_context()->is_##name(value); \
#define NATIVE_CONTEXT_FIELD_ACCESSOR(index, type, name) \
Handle<type> Isolate::name() { \
return Handle<type>(raw_native_context().name(), this); \
} \
bool Isolate::is_##name(type value) { \
return raw_native_context().is_##name(value); \
}
NATIVE_CONTEXT_FIELDS(NATIVE_CONTEXT_FIELD_ACCESSOR)
#undef NATIVE_CONTEXT_FIELD_ACCESSOR
@ -116,7 +116,7 @@ NATIVE_CONTEXT_FIELDS(NATIVE_CONTEXT_FIELD_ACCESSOR)
bool Isolate::IsArrayConstructorIntact() {
Cell array_constructor_cell =
Cell::cast(root(RootIndex::kArrayConstructorProtector));
return array_constructor_cell->value() == Smi::FromInt(kProtectorValid);
return array_constructor_cell.value() == Smi::FromInt(kProtectorValid);
}
bool Isolate::IsArraySpeciesLookupChainIntact() {
@ -134,64 +134,64 @@ bool Isolate::IsArraySpeciesLookupChainIntact() {
PropertyCell species_cell =
PropertyCell::cast(root(RootIndex::kArraySpeciesProtector));
return species_cell->value()->IsSmi() &&
Smi::ToInt(species_cell->value()) == kProtectorValid;
return species_cell.value().IsSmi() &&
Smi::ToInt(species_cell.value()) == kProtectorValid;
}
bool Isolate::IsTypedArraySpeciesLookupChainIntact() {
PropertyCell species_cell =
PropertyCell::cast(root(RootIndex::kTypedArraySpeciesProtector));
return species_cell->value()->IsSmi() &&
Smi::ToInt(species_cell->value()) == kProtectorValid;
return species_cell.value().IsSmi() &&
Smi::ToInt(species_cell.value()) == kProtectorValid;
}
bool Isolate::IsRegExpSpeciesLookupChainIntact() {
PropertyCell species_cell =
PropertyCell::cast(root(RootIndex::kRegExpSpeciesProtector));
return species_cell->value()->IsSmi() &&
Smi::ToInt(species_cell->value()) == kProtectorValid;
return species_cell.value().IsSmi() &&
Smi::ToInt(species_cell.value()) == kProtectorValid;
}
bool Isolate::IsPromiseSpeciesLookupChainIntact() {
PropertyCell species_cell =
PropertyCell::cast(root(RootIndex::kPromiseSpeciesProtector));
return species_cell->value()->IsSmi() &&
Smi::ToInt(species_cell->value()) == kProtectorValid;
return species_cell.value().IsSmi() &&
Smi::ToInt(species_cell.value()) == kProtectorValid;
}
bool Isolate::IsStringLengthOverflowIntact() {
Cell string_length_cell = Cell::cast(root(RootIndex::kStringLengthProtector));
return string_length_cell->value() == Smi::FromInt(kProtectorValid);
return string_length_cell.value() == Smi::FromInt(kProtectorValid);
}
bool Isolate::IsArrayBufferDetachingIntact() {
PropertyCell buffer_detaching =
PropertyCell::cast(root(RootIndex::kArrayBufferDetachingProtector));
return buffer_detaching->value() == Smi::FromInt(kProtectorValid);
return buffer_detaching.value() == Smi::FromInt(kProtectorValid);
}
bool Isolate::IsArrayIteratorLookupChainIntact() {
PropertyCell array_iterator_cell =
PropertyCell::cast(root(RootIndex::kArrayIteratorProtector));
return array_iterator_cell->value() == Smi::FromInt(kProtectorValid);
return array_iterator_cell.value() == Smi::FromInt(kProtectorValid);
}
bool Isolate::IsMapIteratorLookupChainIntact() {
PropertyCell map_iterator_cell =
PropertyCell::cast(root(RootIndex::kMapIteratorProtector));
return map_iterator_cell->value() == Smi::FromInt(kProtectorValid);
return map_iterator_cell.value() == Smi::FromInt(kProtectorValid);
}
bool Isolate::IsSetIteratorLookupChainIntact() {
PropertyCell set_iterator_cell =
PropertyCell::cast(root(RootIndex::kSetIteratorProtector));
return set_iterator_cell->value() == Smi::FromInt(kProtectorValid);
return set_iterator_cell.value() == Smi::FromInt(kProtectorValid);
}
bool Isolate::IsStringIteratorLookupChainIntact() {
PropertyCell string_iterator_cell =
PropertyCell::cast(root(RootIndex::kStringIteratorProtector));
return string_iterator_cell->value() == Smi::FromInt(kProtectorValid);
return string_iterator_cell.value() == Smi::FromInt(kProtectorValid);
}
} // namespace internal

View File

@ -295,7 +295,7 @@ size_t Isolate::HashIsolateForEmbeddedBlob() {
// The builtins constants table is also tightly tied to embedded builtins.
hash = base::hash_combine(
hash, static_cast<size_t>(heap_.builtins_constants_table()->length()));
hash, static_cast<size_t>(heap_.builtins_constants_table().length()));
return hash;
}
@ -602,7 +602,7 @@ class FrameArrayBuilder {
Handle<Object> receiver(generator_object->receiver(), isolate_);
Handle<AbstractCode> code(
AbstractCode::cast(function->shared()->GetBytecodeArray()), isolate_);
AbstractCode::cast(function->shared().GetBytecodeArray()), isolate_);
int offset = Smi::ToInt(generator_object->input_or_debug_pos());
// The stored bytecode offset is relative to a different base than what
// is used in the source position table, hence the subtraction.
@ -610,11 +610,10 @@ class FrameArrayBuilder {
Handle<FixedArray> parameters = isolate_->factory()->empty_fixed_array();
if (V8_UNLIKELY(FLAG_detailed_error_stack_trace)) {
int param_count = function->shared()->internal_formal_parameter_count();
int param_count = function->shared().internal_formal_parameter_count();
parameters = isolate_->factory()->NewFixedArray(param_count);
for (int i = 0; i < param_count; i++) {
parameters->set(i,
generator_object->parameters_and_registers()->get(i));
parameters->set(i, generator_object->parameters_and_registers().get(i));
}
}
@ -669,7 +668,7 @@ class FrameArrayBuilder {
if (summary.code()->kind() != wasm::WasmCode::kFunction) return;
Handle<WasmInstanceObject> instance = summary.wasm_instance();
int flags = 0;
if (instance->module_object()->is_asm_js()) {
if (instance->module_object().is_asm_js()) {
flags |= FrameArray::kIsAsmJsWasmFrame;
if (summary.at_to_number_conversion()) {
flags |= FrameArray::kAsmJsAtNumberConversion;
@ -687,7 +686,7 @@ class FrameArrayBuilder {
FrameSummary::WasmInterpretedFrameSummary const& summary) {
Handle<WasmInstanceObject> instance = summary.wasm_instance();
int flags = FrameArray::kIsWasmInterpretedFrame;
DCHECK(!instance->module_object()->is_asm_js());
DCHECK(!instance->module_object().is_asm_js());
elements_ = FrameArray::AppendWasmFrame(elements_, instance,
summary.function_index(), {},
summary.byte_offset(), flags);
@ -702,7 +701,7 @@ class FrameArrayBuilder {
// TODO(szuend): Remove this check once the flag is enabled
// by default.
if (!FLAG_experimental_stack_trace_frames &&
function->shared()->IsApiFunction()) {
function->shared().IsApiFunction()) {
return;
}
@ -778,7 +777,7 @@ class FrameArrayBuilder {
bool IsStrictFrame(Handle<JSFunction> function) {
if (!encountered_strict_function_) {
encountered_strict_function_ =
is_strict(function->shared()->language_mode());
is_strict(function->shared().language_mode());
}
return encountered_strict_function_;
}
@ -818,16 +817,15 @@ class FrameArrayBuilder {
// The --builtins-in-stack-traces command line flag allows including
// internal call sites in the stack trace for debugging purposes.
if (!FLAG_builtins_in_stack_traces &&
!function->shared()->IsUserJavaScript()) {
return function->shared()->native() ||
function->shared()->IsApiFunction();
!function->shared().IsUserJavaScript()) {
return function->shared().native() || function->shared().IsApiFunction();
}
return true;
}
bool IsInSameSecurityContext(Handle<JSFunction> function) {
if (!check_security_context_) return true;
return isolate_->context()->HasSameSecurityTokenAs(function->context());
return isolate_->context().HasSameSecurityTokenAs(function->context());
}
// TODO(jgruber): Fix all cases in which frames give us a hole value (e.g. the
@ -869,9 +867,9 @@ bool NoExtension(const v8::FunctionCallbackInfo<v8::Value>&) { return false; }
bool IsBuiltinFunction(Isolate* isolate, HeapObject object,
Builtins::Name builtin_index) {
if (!object->IsJSFunction()) return false;
if (!object.IsJSFunction()) return false;
JSFunction const function = JSFunction::cast(object);
return function->code() == isolate->builtins()->builtin(builtin_index);
return function.code() == isolate->builtins()->builtin(builtin_index);
}
void CaptureAsyncStackTrace(Isolate* isolate, Handle<JSPromise> promise,
@ -881,10 +879,10 @@ void CaptureAsyncStackTrace(Isolate* isolate, Handle<JSPromise> promise,
if (promise->status() != Promise::kPending) return;
// Check that we have exactly one PromiseReaction on the {promise}.
if (!promise->reactions()->IsPromiseReaction()) return;
if (!promise->reactions().IsPromiseReaction()) return;
Handle<PromiseReaction> reaction(
PromiseReaction::cast(promise->reactions()), isolate);
if (!reaction->next()->IsSmi()) return;
if (!reaction->next().IsSmi()) return;
// Check if the {reaction} has one of the known async function or
// async generator continuations as its fulfill handler.
@ -897,7 +895,7 @@ void CaptureAsyncStackTrace(Isolate* isolate, Handle<JSPromise> promise,
// Now peak into the handlers' AwaitContext to get to
// the JSGeneratorObject for the async function.
Handle<Context> context(
JSFunction::cast(reaction->fulfill_handler())->context(), isolate);
JSFunction::cast(reaction->fulfill_handler()).context(), isolate);
Handle<JSGeneratorObject> generator_object(
JSGeneratorObject::cast(context->extension()), isolate);
CHECK(generator_object->is_suspended());
@ -913,7 +911,7 @@ void CaptureAsyncStackTrace(Isolate* isolate, Handle<JSPromise> promise,
} else {
Handle<JSAsyncGeneratorObject> async_generator_object =
Handle<JSAsyncGeneratorObject>::cast(generator_object);
if (async_generator_object->queue()->IsUndefined(isolate)) return;
if (async_generator_object->queue().IsUndefined(isolate)) return;
Handle<AsyncGeneratorRequest> async_generator_request(
AsyncGeneratorRequest::cast(async_generator_object->queue()),
isolate);
@ -938,7 +936,7 @@ void CaptureAsyncStackTrace(Isolate* isolate, Handle<JSPromise> promise,
PromiseBuiltins::kPromiseAllResolveElementCapabilitySlot;
Handle<PromiseCapability> capability(
PromiseCapability::cast(context->get(index)), isolate);
if (!capability->promise()->IsJSPromise()) return;
if (!capability->promise().IsJSPromise()) return;
promise = handle(JSPromise::cast(capability->promise()), isolate);
} else {
// We have some generic promise chain here, so try to
@ -951,7 +949,7 @@ void CaptureAsyncStackTrace(Isolate* isolate, Handle<JSPromise> promise,
} else if (promise_or_capability->IsPromiseCapability()) {
Handle<PromiseCapability> capability =
Handle<PromiseCapability>::cast(promise_or_capability);
if (!capability->promise()->IsJSPromise()) return;
if (!capability->promise().IsJSPromise()) return;
promise = handle(JSPromise::cast(capability->promise()), isolate);
} else {
// Otherwise the {promise_or_capability} must be undefined here.
@ -1068,7 +1066,7 @@ Handle<Object> CaptureStackTrace(Isolate* isolate, Handle<Object> caller,
// Now peak into the handlers' AwaitContext to get to
// the JSGeneratorObject for the async function.
Handle<Context> context(
JSFunction::cast(promise_reaction_job_task->handler())->context(),
JSFunction::cast(promise_reaction_job_task->handler()).context(),
isolate);
Handle<JSGeneratorObject> generator_object(
JSGeneratorObject::cast(context->extension()), isolate);
@ -1186,12 +1184,12 @@ Address Isolate::GetAbstractPC(int* line, int* column) {
JavaScriptFrame* frame = it.frame();
DCHECK(!frame->is_builtin());
Handle<SharedFunctionInfo> shared = handle(frame->function()->shared(), this);
Handle<SharedFunctionInfo> shared = handle(frame->function().shared(), this);
SharedFunctionInfo::EnsureSourcePositionsAvailable(this, shared);
int position = frame->position();
Object maybe_script = frame->function()->shared()->script();
if (maybe_script->IsScript()) {
Object maybe_script = frame->function().shared().script();
if (maybe_script.IsScript()) {
Handle<Script> script(Script::cast(maybe_script), this);
Script::PositionInfo info;
Script::GetPositionInfo(script, position, &info, Script::WITH_OFFSET);
@ -1205,7 +1203,7 @@ Address Isolate::GetAbstractPC(int* line, int* column) {
if (frame->is_interpreted()) {
InterpretedFrame* iframe = static_cast<InterpretedFrame*>(frame);
Address bytecode_start =
iframe->GetBytecodeArray()->GetFirstBytecodeAddress();
iframe->GetBytecodeArray().GetFirstBytecodeAddress();
return bytecode_start + iframe->GetBytecodeOffset();
}
@ -1305,7 +1303,7 @@ void Isolate::ReportFailedAccessCheck(Handle<JSObject> receiver) {
return ScheduleThrow(
*factory()->NewTypeError(MessageTemplate::kNoAccess));
}
data = handle(access_check_info->data(), this);
data = handle(access_check_info.data(), this);
}
// Leaving JavaScript.
@ -1327,18 +1325,17 @@ bool Isolate::MayAccess(Handle<Context> accessing_context,
DisallowHeapAllocation no_gc;
if (receiver->IsJSGlobalProxy()) {
Object receiver_context =
JSGlobalProxy::cast(*receiver)->native_context();
if (!receiver_context->IsContext()) return false;
Object receiver_context = JSGlobalProxy::cast(*receiver).native_context();
if (!receiver_context.IsContext()) return false;
// Get the native context of current top context.
// avoid using Isolate::native_context() because it uses Handle.
Context native_context =
accessing_context->global_object()->native_context();
accessing_context->global_object().native_context();
if (receiver_context == native_context) return true;
if (Context::cast(receiver_context)->security_token() ==
native_context->security_token())
if (Context::cast(receiver_context).security_token() ==
native_context.security_token())
return true;
}
}
@ -1350,9 +1347,9 @@ bool Isolate::MayAccess(Handle<Context> accessing_context,
DisallowHeapAllocation no_gc;
AccessCheckInfo access_check_info = AccessCheckInfo::Get(this, receiver);
if (access_check_info.is_null()) return false;
Object fun_obj = access_check_info->callback();
Object fun_obj = access_check_info.callback();
callback = v8::ToCData<v8::AccessCheckCallback>(fun_obj);
data = handle(access_check_info->data(), this);
data = handle(access_check_info.data(), this);
}
LOG(this, ApiSecurityCheck());
@ -1449,27 +1446,27 @@ void ReportBootstrappingException(Handle<Object> exception,
// to the console for easier debugging.
int line_number =
location->script()->GetLineNumber(location->start_pos()) + 1;
if (exception->IsString() && location->script()->name()->IsString()) {
if (exception->IsString() && location->script()->name().IsString()) {
base::OS::PrintError(
"Extension or internal compilation error: %s in %s at line %d.\n",
String::cast(*exception)->ToCString().get(),
String::cast(location->script()->name())->ToCString().get(),
String::cast(*exception).ToCString().get(),
String::cast(location->script()->name()).ToCString().get(),
line_number);
} else if (location->script()->name()->IsString()) {
} else if (location->script()->name().IsString()) {
base::OS::PrintError(
"Extension or internal compilation error in %s at line %d.\n",
String::cast(location->script()->name())->ToCString().get(),
String::cast(location->script()->name()).ToCString().get(),
line_number);
} else if (exception->IsString()) {
base::OS::PrintError("Extension or internal compilation error: %s.\n",
String::cast(*exception)->ToCString().get());
String::cast(*exception).ToCString().get());
} else {
base::OS::PrintError("Extension or internal compilation error.\n");
}
#ifdef OBJECT_PRINT
// Since comments and empty lines have been stripped from the source of
// builtins, print the actual source here so that line numbers match.
if (location->script()->source()->IsString()) {
if (location->script()->source().IsString()) {
Handle<String> src(String::cast(location->script()->source()),
location->script()->GetIsolate());
PrintF("Failing script:");
@ -1506,8 +1503,8 @@ Object Isolate::Throw(Object raw_exception, MessageLocation* location) {
Handle<Script> script = location->script();
Handle<Object> name(script->GetNameOrSourceURL(), this);
printf("at ");
if (name->IsString() && String::cast(*name)->length() > 0)
String::cast(*name)->PrintOn(stdout);
if (name->IsString() && String::cast(*name).length() > 0)
String::cast(*name).PrintOn(stdout);
else
printf("<anonymous>");
// Script::GetLineNumber and Script::GetColumnNumber can allocate on the heap to
@ -1528,7 +1525,7 @@ Object Isolate::Throw(Object raw_exception, MessageLocation* location) {
printf(", line %d\n", script->GetLineNumber(location->start_pos()) + 1);
}
}
raw_exception->Print();
raw_exception.Print();
printf("Stack Trace:\n");
PrintStack(stdout);
printf("=========================================================\n");
@ -1653,8 +1650,8 @@ Object Isolate::UnwindAndFindHandler() {
// Gather information from the handler.
Code code = frame->LookupCode();
HandlerTable table(code);
return FoundHandler(Context(), code->InstructionStart(),
table.LookupReturn(0), code->constant_pool(),
return FoundHandler(Context(), code.InstructionStart(),
table.LookupReturn(0), code.constant_pool(),
handler->address() + StackHandlerConstants::kSize,
0);
}
@ -1720,17 +1717,17 @@ Object Isolate::UnwindAndFindHandler() {
// TODO(bmeurer): Turbofanned BUILTIN frames appear as OPTIMIZED,
// but do not have a code kind of OPTIMIZED_FUNCTION.
if (code->kind() == Code::OPTIMIZED_FUNCTION &&
code->marked_for_deoptimization()) {
if (code.kind() == Code::OPTIMIZED_FUNCTION &&
code.marked_for_deoptimization()) {
// If the target code is lazy deoptimized, we jump to the original
// return address, but we make a note that we are throwing, so
// that the deoptimizer can do the right thing.
offset = static_cast<int>(frame->pc() - code->entry());
offset = static_cast<int>(frame->pc() - code.entry());
set_deoptimizer_lazy_throw(true);
}
return FoundHandler(Context(), code->InstructionStart(), offset,
code->constant_pool(), return_sp, frame->fp());
return FoundHandler(Context(), code.InstructionStart(), offset,
code.constant_pool(), return_sp, frame->fp());
}
case StackFrame::STUB: {
@ -1748,8 +1745,8 @@ Object Isolate::UnwindAndFindHandler() {
break;
}
Code code = stub_frame->LookupCode();
if (!code->IsCode() || code->kind() != Code::BUILTIN ||
!code->has_handler_table() || !code->is_turbofanned()) {
if (!code.IsCode() || code.kind() != Code::BUILTIN ||
!code.has_handler_table() || !code.is_turbofanned()) {
break;
}
@ -1763,8 +1760,8 @@ Object Isolate::UnwindAndFindHandler() {
StandardFrameConstants::kFixedFrameSizeAboveFp -
stack_slots * kSystemPointerSize;
return FoundHandler(Context(), code->InstructionStart(), offset,
code->constant_pool(), return_sp, frame->fp());
return FoundHandler(Context(), code.InstructionStart(), offset,
code.constant_pool(), return_sp, frame->fp());
}
case StackFrame::INTERPRETED: {
@ -1772,7 +1769,7 @@ Object Isolate::UnwindAndFindHandler() {
if (!catchable_by_js) break;
InterpretedFrame* js_frame = static_cast<InterpretedFrame*>(frame);
int register_slots = InterpreterFrameConstants::RegisterStackSlotCount(
js_frame->GetBytecodeArray()->register_count());
js_frame->GetBytecodeArray().register_count());
int context_reg = 0; // Will contain register index holding context.
int offset =
js_frame->LookupExceptionHandlerInTable(&context_reg, nullptr);
@ -1796,8 +1793,8 @@ Object Isolate::UnwindAndFindHandler() {
Code code =
builtins()->builtin(Builtins::kInterpreterEnterBytecodeDispatch);
return FoundHandler(context, code->InstructionStart(), 0,
code->constant_pool(), return_sp, frame->fp());
return FoundHandler(context, code.InstructionStart(), 0,
code.constant_pool(), return_sp, frame->fp());
}
case StackFrame::BUILTIN:
@ -1825,8 +1822,8 @@ Object Isolate::UnwindAndFindHandler() {
// Reconstruct the stack pointer from the frame pointer.
Address return_sp = js_frame->fp() - js_frame->GetSPToFPDelta();
Code code = js_frame->LookupCode();
return FoundHandler(Context(), code->InstructionStart(), 0,
code->constant_pool(), return_sp, frame->fp());
return FoundHandler(Context(), code.InstructionStart(), 0,
code.constant_pool(), return_sp, frame->fp());
} break;
default:
@ -1840,7 +1837,7 @@ Object Isolate::UnwindAndFindHandler() {
USE(removed);
// If there were any materialized objects, the code should be
// marked for deopt.
DCHECK_IMPLIES(removed, frame->LookupCode()->marked_for_deoptimization());
DCHECK_IMPLIES(removed, frame->LookupCode().marked_for_deoptimization());
}
}
@ -1861,7 +1858,7 @@ HandlerTable::CatchPrediction PredictException(JavaScriptFrame* frame) {
const FrameSummary& summary = summaries[i - 1];
Handle<AbstractCode> code = summary.AsJavaScript().abstract_code();
if (code->IsCode() && code->kind() == AbstractCode::BUILTIN) {
prediction = code->GetCode()->GetBuiltinCatchPrediction();
prediction = code->GetCode().GetBuiltinCatchPrediction();
if (prediction == HandlerTable::UNCAUGHT) continue;
return prediction;
}
@ -1983,7 +1980,7 @@ void Isolate::RestorePendingMessageFromTryCatch(v8::TryCatch* handler) {
DCHECK(handler->rethrow_);
DCHECK(handler->capture_message_);
Object message(reinterpret_cast<Address>(handler->message_obj_));
DCHECK(message->IsJSMessageObject() || message->IsTheHole(this));
DCHECK(message.IsJSMessageObject() || message.IsTheHole(this));
thread_local_top()->pending_message_obj_ = message;
}
@ -2064,7 +2061,7 @@ bool Isolate::ComputeLocation(MessageLocation* target) {
Handle<SharedFunctionInfo> shared;
Handle<Object> script = summary.script();
if (!script->IsScript() ||
(Script::cast(*script)->source()->IsUndefined(this))) {
(Script::cast(*script).source().IsUndefined(this))) {
return false;
}
@ -2123,15 +2120,15 @@ bool Isolate::ComputeLocationFromStackTrace(MessageLocation* target,
if (elements->IsWasmFrame(i) || elements->IsAsmJsWasmFrame(i)) {
Handle<WasmInstanceObject> instance(elements->WasmInstance(i), this);
uint32_t func_index =
static_cast<uint32_t>(elements->WasmFunctionIndex(i)->value());
int code_offset = elements->Offset(i)->value();
static_cast<uint32_t>(elements->WasmFunctionIndex(i).value());
int code_offset = elements->Offset(i).value();
bool is_at_number_conversion =
elements->IsAsmJsWasmFrame(i) &&
elements->Flags(i)->value() & FrameArray::kAsmJsAtNumberConversion;
elements->Flags(i).value() & FrameArray::kAsmJsAtNumberConversion;
// WasmCode* held alive by the {GlobalWasmCodeRef}.
wasm::WasmCode* code =
Managed<wasm::GlobalWasmCodeRef>::cast(elements->WasmCodeObject(i))
->get()
.get()
->code();
int byte_offset =
FrameSummary::WasmCompiledFrameSummary::GetWasmSourcePosition(
@ -2139,26 +2136,26 @@ bool Isolate::ComputeLocationFromStackTrace(MessageLocation* target,
int pos = WasmModuleObject::GetSourcePosition(
handle(instance->module_object(), this), func_index, byte_offset,
is_at_number_conversion);
Handle<Script> script(instance->module_object()->script(), this);
Handle<Script> script(instance->module_object().script(), this);
*target = MessageLocation(script, pos, pos + 1);
return true;
}
Handle<JSFunction> fun = handle(elements->Function(i), this);
if (!fun->shared()->IsSubjectToDebugging()) continue;
if (!fun->shared().IsSubjectToDebugging()) continue;
Object script = fun->shared()->script();
if (script->IsScript() &&
!(Script::cast(script)->source()->IsUndefined(this))) {
Object script = fun->shared().script();
if (script.IsScript() &&
!(Script::cast(script).source().IsUndefined(this))) {
Handle<SharedFunctionInfo> shared = handle(fun->shared(), this);
AbstractCode abstract_code = elements->Code(i);
const int code_offset = elements->Offset(i)->value();
const int code_offset = elements->Offset(i).value();
Handle<Script> casted_script(Script::cast(script), this);
if (shared->HasBytecodeArray() &&
shared->GetBytecodeArray()->HasSourcePositionTable()) {
int pos = abstract_code->SourcePosition(code_offset);
shared->GetBytecodeArray().HasSourcePositionTable()) {
int pos = abstract_code.SourcePosition(code_offset);
*target = MessageLocation(casted_script, pos, pos + 1, shared);
} else {
*target = MessageLocation(casted_script, shared, code_offset);
@ -2274,7 +2271,7 @@ void Isolate::ReportPendingMessagesImpl(bool report_externally) {
}
// Actually report the pending message to all message handlers.
if (!message_obj->IsTheHole(this) && should_report_exception) {
if (!message_obj.IsTheHole(this) && should_report_exception) {
HandleScope scope(this);
Handle<JSMessageObject> message(JSMessageObject::cast(message_obj), this);
Handle<Script> script(message->script(), this);
@ -2350,13 +2347,13 @@ void Isolate::ReportPendingMessagesFromJavaScript() {
thread_local_top()->external_caught_exception_ = true;
v8::TryCatch* handler = try_catch_handler();
DCHECK(thread_local_top()->pending_message_obj_->IsJSMessageObject() ||
thread_local_top()->pending_message_obj_->IsTheHole(this));
DCHECK(thread_local_top()->pending_message_obj_.IsJSMessageObject() ||
thread_local_top()->pending_message_obj_.IsTheHole(this));
handler->can_continue_ = true;
handler->has_terminated_ = false;
handler->exception_ = reinterpret_cast<void*>(pending_exception().ptr());
// Propagate to the external try-catch only if we got an actual message.
if (thread_local_top()->pending_message_obj_->IsTheHole(this)) return true;
if (thread_local_top()->pending_message_obj_.IsTheHole(this)) return true;
handler->message_obj_ =
reinterpret_cast<void*>(thread_local_top()->pending_message_obj_.ptr());
@ -2484,7 +2481,7 @@ bool InternalPromiseHasUserDefinedRejectHandler(Isolate* isolate,
: handle(Handle<PromiseCapability>::cast(promise_or_capability)
->promise(),
isolate));
if (reaction->reject_handler()->IsUndefined(isolate)) {
if (reaction->reject_handler().IsUndefined(isolate)) {
if (InternalPromiseHasUserDefinedRejectHandler(isolate, promise)) {
return true;
}
@ -2529,11 +2526,11 @@ Handle<Object> Isolate::GetPromiseOnStackOnThrow() {
catch_prediction = PredictException(JavaScriptFrame::cast(frame));
} else if (frame->type() == StackFrame::STUB) {
Code code = frame->LookupCode();
if (!code->IsCode() || code->kind() != Code::BUILTIN ||
!code->has_handler_table() || !code->is_turbofanned()) {
if (!code.IsCode() || code.kind() != Code::BUILTIN ||
!code.has_handler_table() || !code.is_turbofanned()) {
continue;
}
catch_prediction = code->GetBuiltinCatchPrediction();
catch_prediction = code.GetBuiltinCatchPrediction();
} else {
continue;
}
@ -2611,7 +2608,7 @@ Handle<Context> Isolate::GetIncumbentContext() {
if (!it.done() &&
(!top_backup_incumbent || it.frame()->sp() < top_backup_incumbent)) {
Context context = Context::cast(it.frame()->context());
return Handle<Context>(context->native_context(), this);
return Handle<Context>(context.native_context(), this);
}
// 2nd candidate: the last Context::Scope's incumbent context if any.
@ -2647,7 +2644,7 @@ char* Isolate::RestoreThread(char* from) {
#ifdef USE_SIMULATOR
thread_local_top()->simulator_ = Simulator::current(this);
#endif
DCHECK(context().is_null() || context()->IsContext());
DCHECK(context().is_null() || context().IsContext());
return from + sizeof(ThreadLocalTop);
}
@ -3144,13 +3141,13 @@ bool Isolate::PropagatePendingExceptionToExternalTryCatch() {
SetTerminationOnExternalTryCatch();
} else {
v8::TryCatch* handler = try_catch_handler();
DCHECK(thread_local_top()->pending_message_obj_->IsJSMessageObject() ||
thread_local_top()->pending_message_obj_->IsTheHole(this));
DCHECK(thread_local_top()->pending_message_obj_.IsJSMessageObject() ||
thread_local_top()->pending_message_obj_.IsTheHole(this));
handler->can_continue_ = true;
handler->has_terminated_ = false;
handler->exception_ = reinterpret_cast<void*>(pending_exception().ptr());
// Propagate to the external try-catch only if we got an actual message.
if (thread_local_top()->pending_message_obj_->IsTheHole(this)) return true;
if (thread_local_top()->pending_message_obj_.IsTheHole(this)) return true;
handler->message_obj_ =
reinterpret_cast<void*>(thread_local_top()->pending_message_obj_.ptr());
@ -3478,7 +3475,7 @@ bool Isolate::Init(ReadOnlyDeserializer* read_only_deserializer,
#ifndef V8_TARGET_ARCH_ARM
// The IET for profiling should always be a full on-heap Code object.
DCHECK(!Code::cast(heap_.interpreter_entry_trampoline_for_profiling())
->is_off_heap_trampoline());
.is_off_heap_trampoline());
#endif // V8_TARGET_ARCH_ARM
if (FLAG_print_builtin_code) builtins()->PrintBuiltinCode();
@ -3686,14 +3683,14 @@ bool Isolate::NeedsSourcePositionsForProfiling() const {
}
void Isolate::SetFeedbackVectorsForProfilingTools(Object value) {
DCHECK(value->IsUndefined(this) || value->IsArrayList());
DCHECK(value.IsUndefined(this) || value.IsArrayList());
heap()->set_feedback_vectors_for_profiling_tools(value);
}
void Isolate::MaybeInitializeVectorListFromHeap() {
if (!heap()->feedback_vectors_for_profiling_tools()->IsUndefined(this)) {
if (!heap()->feedback_vectors_for_profiling_tools().IsUndefined(this)) {
// Already initialized, return early.
DCHECK(heap()->feedback_vectors_for_profiling_tools()->IsArrayList());
DCHECK(heap()->feedback_vectors_for_profiling_tools().IsArrayList());
return;
}
@ -3704,13 +3701,13 @@ void Isolate::MaybeInitializeVectorListFromHeap() {
HeapIterator heap_iterator(heap());
for (HeapObject current_obj = heap_iterator.next(); !current_obj.is_null();
current_obj = heap_iterator.next()) {
if (!current_obj->IsFeedbackVector()) continue;
if (!current_obj.IsFeedbackVector()) continue;
FeedbackVector vector = FeedbackVector::cast(current_obj);
SharedFunctionInfo shared = vector->shared_function_info();
SharedFunctionInfo shared = vector.shared_function_info();
// No need to preserve the feedback vector for non-user-visible functions.
if (!shared->IsSubjectToDebugging()) continue;
if (!shared.IsSubjectToDebugging()) continue;
vectors.emplace_back(vector, this);
}
@ -3732,14 +3729,14 @@ void Isolate::set_date_cache(DateCache* date_cache) {
bool Isolate::IsArrayOrObjectOrStringPrototype(Object object) {
Object context = heap()->native_contexts_list();
while (!context->IsUndefined(this)) {
while (!context.IsUndefined(this)) {
Context current_context = Context::cast(context);
if (current_context->initial_object_prototype() == object ||
current_context->initial_array_prototype() == object ||
current_context->initial_string_prototype() == object) {
if (current_context.initial_object_prototype() == object ||
current_context.initial_array_prototype() == object ||
current_context.initial_string_prototype() == object) {
return true;
}
context = current_context->next_context_link();
context = current_context.next_context_link();
}
return false;
}
@ -3747,12 +3744,12 @@ bool Isolate::IsArrayOrObjectOrStringPrototype(Object object) {
bool Isolate::IsInAnyContext(Object object, uint32_t index) {
DisallowHeapAllocation no_gc;
Object context = heap()->native_contexts_list();
while (!context->IsUndefined(this)) {
while (!context.IsUndefined(this)) {
Context current_context = Context::cast(context);
if (current_context->get(index) == object) {
if (current_context.get(index) == object) {
return true;
}
context = current_context->next_context_link();
context = current_context.next_context_link();
}
return false;
}
@ -3760,20 +3757,20 @@ bool Isolate::IsInAnyContext(Object object, uint32_t index) {
bool Isolate::IsNoElementsProtectorIntact(Context context) {
PropertyCell no_elements_cell = heap()->no_elements_protector();
bool cell_reports_intact =
no_elements_cell->value()->IsSmi() &&
Smi::ToInt(no_elements_cell->value()) == kProtectorValid;
no_elements_cell.value().IsSmi() &&
Smi::ToInt(no_elements_cell.value()) == kProtectorValid;
#ifdef DEBUG
Context native_context = context->native_context();
Context native_context = context.native_context();
Map root_array_map =
native_context->GetInitialJSArrayMap(GetInitialFastElementsKind());
native_context.GetInitialJSArrayMap(GetInitialFastElementsKind());
JSObject initial_array_proto = JSObject::cast(
native_context->get(Context::INITIAL_ARRAY_PROTOTYPE_INDEX));
native_context.get(Context::INITIAL_ARRAY_PROTOTYPE_INDEX));
JSObject initial_object_proto = JSObject::cast(
native_context->get(Context::INITIAL_OBJECT_PROTOTYPE_INDEX));
native_context.get(Context::INITIAL_OBJECT_PROTOTYPE_INDEX));
JSObject initial_string_proto = JSObject::cast(
native_context->get(Context::INITIAL_STRING_PROTOTYPE_INDEX));
native_context.get(Context::INITIAL_STRING_PROTOTYPE_INDEX));
if (root_array_map.is_null() || initial_array_proto == initial_object_proto) {
// We are in the bootstrapping process, and the entire check sequence
@ -3782,12 +3779,12 @@ bool Isolate::IsNoElementsProtectorIntact(Context context) {
}
// Check that the array prototype hasn't been altered WRT empty elements.
if (root_array_map->prototype() != initial_array_proto) {
if (root_array_map.prototype() != initial_array_proto) {
DCHECK_EQ(false, cell_reports_intact);
return cell_reports_intact;
}
FixedArrayBase elements = initial_array_proto->elements();
FixedArrayBase elements = initial_array_proto.elements();
ReadOnlyRoots roots(heap());
if (elements != roots.empty_fixed_array() &&
elements != roots.empty_slow_element_dictionary()) {
@ -3796,7 +3793,7 @@ bool Isolate::IsNoElementsProtectorIntact(Context context) {
}
// Check that the Object.prototype hasn't been altered WRT empty elements.
elements = initial_object_proto->elements();
elements = initial_object_proto.elements();
if (elements != roots.empty_fixed_array() &&
elements != roots.empty_slow_element_dictionary()) {
DCHECK_EQ(false, cell_reports_intact);
@ -3820,7 +3817,7 @@ bool Isolate::IsNoElementsProtectorIntact(Context context) {
DCHECK(!has_pending_exception());
// Check that the String.prototype hasn't been altered WRT empty elements.
elements = initial_string_proto->elements();
elements = initial_string_proto.elements();
if (elements != roots.empty_fixed_array() &&
elements != roots.empty_slow_element_dictionary()) {
DCHECK_EQ(false, cell_reports_intact);
@ -3829,7 +3826,7 @@ bool Isolate::IsNoElementsProtectorIntact(Context context) {
// Check that the String.prototype has the Object.prototype
// as its [[Prototype]] still.
if (initial_string_proto->map()->prototype() != initial_object_proto) {
if (initial_string_proto.map().prototype() != initial_object_proto) {
DCHECK_EQ(false, cell_reports_intact);
return cell_reports_intact;
}
@ -3845,10 +3842,10 @@ bool Isolate::IsNoElementsProtectorIntact() {
bool Isolate::IsIsConcatSpreadableLookupChainIntact() {
Cell is_concat_spreadable_cell = heap()->is_concat_spreadable_protector();
bool is_is_concat_spreadable_set =
Smi::ToInt(is_concat_spreadable_cell->value()) == kProtectorInvalid;
Smi::ToInt(is_concat_spreadable_cell.value()) == kProtectorInvalid;
#ifdef DEBUG
Map root_array_map =
raw_native_context()->GetInitialJSArrayMap(GetInitialFastElementsKind());
raw_native_context().GetInitialJSArrayMap(GetInitialFastElementsKind());
if (root_array_map.is_null()) {
// Ignore the value of is_concat_spreadable during bootstrap.
return !is_is_concat_spreadable_set;
@ -3871,13 +3868,13 @@ bool Isolate::IsIsConcatSpreadableLookupChainIntact() {
bool Isolate::IsIsConcatSpreadableLookupChainIntact(JSReceiver receiver) {
if (!IsIsConcatSpreadableLookupChainIntact()) return false;
return !receiver->HasProxyInPrototype(this);
return !receiver.HasProxyInPrototype(this);
}
bool Isolate::IsPromiseHookProtectorIntact() {
PropertyCell promise_hook_cell = heap()->promise_hook_protector();
bool is_promise_hook_protector_intact =
Smi::ToInt(promise_hook_cell->value()) == kProtectorValid;
Smi::ToInt(promise_hook_cell.value()) == kProtectorValid;
DCHECK_IMPLIES(is_promise_hook_protector_intact,
!promise_hook_or_async_event_delegate_);
DCHECK_IMPLIES(is_promise_hook_protector_intact,
@ -3888,21 +3885,21 @@ bool Isolate::IsPromiseHookProtectorIntact() {
bool Isolate::IsPromiseResolveLookupChainIntact() {
Cell promise_resolve_cell = heap()->promise_resolve_protector();
bool is_promise_resolve_protector_intact =
Smi::ToInt(promise_resolve_cell->value()) == kProtectorValid;
Smi::ToInt(promise_resolve_cell.value()) == kProtectorValid;
return is_promise_resolve_protector_intact;
}
bool Isolate::IsPromiseThenLookupChainIntact() {
PropertyCell promise_then_cell = heap()->promise_then_protector();
bool is_promise_then_protector_intact =
Smi::ToInt(promise_then_cell->value()) == kProtectorValid;
Smi::ToInt(promise_then_cell.value()) == kProtectorValid;
return is_promise_then_protector_intact;
}
bool Isolate::IsPromiseThenLookupChainIntact(Handle<JSReceiver> receiver) {
DisallowHeapAllocation no_gc;
if (!receiver->IsJSPromise()) return false;
if (!IsInAnyContext(receiver->map()->prototype(),
if (!IsInAnyContext(receiver->map().prototype(),
Context::PROMISE_PROTOTYPE_INDEX)) {
return false;
}
@ -3911,7 +3908,7 @@ bool Isolate::IsPromiseThenLookupChainIntact(Handle<JSReceiver> receiver) {
void Isolate::UpdateNoElementsProtectorOnSetElement(Handle<JSObject> object) {
DisallowHeapAllocation no_gc;
if (!object->map()->is_prototype_map()) return;
if (!object->map().is_prototype_map()) return;
if (!IsNoElementsProtectorIntact()) return;
if (!IsArrayOrObjectOrStringPrototype(*object)) return;
PropertyCell::SetValueWithInvalidation(
@ -3920,7 +3917,7 @@ void Isolate::UpdateNoElementsProtectorOnSetElement(Handle<JSObject> object) {
}
void Isolate::InvalidateIsConcatSpreadableProtector() {
DCHECK(factory()->is_concat_spreadable_protector()->value()->IsSmi());
DCHECK(factory()->is_concat_spreadable_protector()->value().IsSmi());
DCHECK(IsIsConcatSpreadableLookupChainIntact());
factory()->is_concat_spreadable_protector()->set_value(
Smi::FromInt(kProtectorInvalid));
@ -3928,7 +3925,7 @@ void Isolate::InvalidateIsConcatSpreadableProtector() {
}
void Isolate::InvalidateArrayConstructorProtector() {
DCHECK(factory()->array_constructor_protector()->value()->IsSmi());
DCHECK(factory()->array_constructor_protector()->value().IsSmi());
DCHECK(IsArrayConstructorIntact());
factory()->array_constructor_protector()->set_value(
Smi::FromInt(kProtectorInvalid));
@ -3936,7 +3933,7 @@ void Isolate::InvalidateArrayConstructorProtector() {
}
void Isolate::InvalidateArraySpeciesProtector() {
DCHECK(factory()->array_species_protector()->value()->IsSmi());
DCHECK(factory()->array_species_protector()->value().IsSmi());
DCHECK(IsArraySpeciesLookupChainIntact());
PropertyCell::SetValueWithInvalidation(
this, factory()->array_species_protector(),
@ -3945,7 +3942,7 @@ void Isolate::InvalidateArraySpeciesProtector() {
}
void Isolate::InvalidateTypedArraySpeciesProtector() {
DCHECK(factory()->typed_array_species_protector()->value()->IsSmi());
DCHECK(factory()->typed_array_species_protector()->value().IsSmi());
DCHECK(IsTypedArraySpeciesLookupChainIntact());
PropertyCell::SetValueWithInvalidation(
this, factory()->typed_array_species_protector(),
@ -3954,7 +3951,7 @@ void Isolate::InvalidateTypedArraySpeciesProtector() {
}
void Isolate::InvalidateRegExpSpeciesProtector() {
DCHECK(factory()->regexp_species_protector()->value()->IsSmi());
DCHECK(factory()->regexp_species_protector()->value().IsSmi());
DCHECK(IsRegExpSpeciesLookupChainIntact());
PropertyCell::SetValueWithInvalidation(
this, factory()->regexp_species_protector(),
@ -3963,7 +3960,7 @@ void Isolate::InvalidateRegExpSpeciesProtector() {
}
void Isolate::InvalidatePromiseSpeciesProtector() {
DCHECK(factory()->promise_species_protector()->value()->IsSmi());
DCHECK(factory()->promise_species_protector()->value().IsSmi());
DCHECK(IsPromiseSpeciesLookupChainIntact());
PropertyCell::SetValueWithInvalidation(
this, factory()->promise_species_protector(),
@ -3972,7 +3969,7 @@ void Isolate::InvalidatePromiseSpeciesProtector() {
}
void Isolate::InvalidateStringLengthOverflowProtector() {
DCHECK(factory()->string_length_protector()->value()->IsSmi());
DCHECK(factory()->string_length_protector()->value().IsSmi());
DCHECK(IsStringLengthOverflowIntact());
factory()->string_length_protector()->set_value(
Smi::FromInt(kProtectorInvalid));
@ -3980,7 +3977,7 @@ void Isolate::InvalidateStringLengthOverflowProtector() {
}
void Isolate::InvalidateArrayIteratorProtector() {
DCHECK(factory()->array_iterator_protector()->value()->IsSmi());
DCHECK(factory()->array_iterator_protector()->value().IsSmi());
DCHECK(IsArrayIteratorLookupChainIntact());
PropertyCell::SetValueWithInvalidation(
this, factory()->array_iterator_protector(),
@ -3989,7 +3986,7 @@ void Isolate::InvalidateArrayIteratorProtector() {
}
void Isolate::InvalidateMapIteratorProtector() {
DCHECK(factory()->map_iterator_protector()->value()->IsSmi());
DCHECK(factory()->map_iterator_protector()->value().IsSmi());
DCHECK(IsMapIteratorLookupChainIntact());
PropertyCell::SetValueWithInvalidation(
this, factory()->map_iterator_protector(),
@ -3998,7 +3995,7 @@ void Isolate::InvalidateMapIteratorProtector() {
}
void Isolate::InvalidateSetIteratorProtector() {
DCHECK(factory()->set_iterator_protector()->value()->IsSmi());
DCHECK(factory()->set_iterator_protector()->value().IsSmi());
DCHECK(IsSetIteratorLookupChainIntact());
PropertyCell::SetValueWithInvalidation(
this, factory()->set_iterator_protector(),
@ -4007,7 +4004,7 @@ void Isolate::InvalidateSetIteratorProtector() {
}
void Isolate::InvalidateStringIteratorProtector() {
DCHECK(factory()->string_iterator_protector()->value()->IsSmi());
DCHECK(factory()->string_iterator_protector()->value().IsSmi());
DCHECK(IsStringIteratorLookupChainIntact());
PropertyCell::SetValueWithInvalidation(
this, factory()->string_iterator_protector(),
@ -4016,7 +4013,7 @@ void Isolate::InvalidateStringIteratorProtector() {
}
void Isolate::InvalidateArrayBufferDetachingProtector() {
DCHECK(factory()->array_buffer_detaching_protector()->value()->IsSmi());
DCHECK(factory()->array_buffer_detaching_protector()->value().IsSmi());
DCHECK(IsArrayBufferDetachingIntact());
PropertyCell::SetValueWithInvalidation(
this, factory()->array_buffer_detaching_protector(),
@ -4025,7 +4022,7 @@ void Isolate::InvalidateArrayBufferDetachingProtector() {
}
void Isolate::InvalidatePromiseHookProtector() {
DCHECK(factory()->promise_hook_protector()->value()->IsSmi());
DCHECK(factory()->promise_hook_protector()->value().IsSmi());
DCHECK(IsPromiseHookProtectorIntact());
PropertyCell::SetValueWithInvalidation(
this, factory()->promise_hook_protector(),
@ -4034,7 +4031,7 @@ void Isolate::InvalidatePromiseHookProtector() {
}
void Isolate::InvalidatePromiseResolveProtector() {
DCHECK(factory()->promise_resolve_protector()->value()->IsSmi());
DCHECK(factory()->promise_resolve_protector()->value().IsSmi());
DCHECK(IsPromiseResolveLookupChainIntact());
factory()->promise_resolve_protector()->set_value(
Smi::FromInt(kProtectorInvalid));
@ -4042,7 +4039,7 @@ void Isolate::InvalidatePromiseResolveProtector() {
}
void Isolate::InvalidatePromiseThenProtector() {
DCHECK(factory()->promise_then_protector()->value()->IsSmi());
DCHECK(factory()->promise_then_protector()->value().IsSmi());
DCHECK(IsPromiseThenLookupChainIntact());
PropertyCell::SetValueWithInvalidation(
this, factory()->promise_then_protector(),

View File

@ -118,7 +118,7 @@ void MessageHandler::ReportMessage(Isolate* isolate, const MessageLocation* loc,
isolate->set_external_caught_exception(false);
// Turn the exception on the message into a string if it is an object.
if (message->argument()->IsJSObject()) {
if (message->argument().IsJSObject()) {
HandleScope scope(isolate);
Handle<Object> argument(message->argument(), isolate);
@ -169,17 +169,17 @@ void MessageHandler::ReportMessageNoExceptions(
} else {
for (int i = 0; i < global_length; i++) {
HandleScope scope(isolate);
if (global_listeners->get(i)->IsUndefined(isolate)) continue;
if (global_listeners->get(i).IsUndefined(isolate)) continue;
FixedArray listener = FixedArray::cast(global_listeners->get(i));
Foreign callback_obj = Foreign::cast(listener->get(0));
Foreign callback_obj = Foreign::cast(listener.get(0));
int32_t message_levels =
static_cast<int32_t>(Smi::ToInt(listener->get(2)));
static_cast<int32_t>(Smi::ToInt(listener.get(2)));
if (!(message_levels & error_level)) {
continue;
}
v8::MessageCallback callback =
FUNCTION_CAST<v8::MessageCallback>(callback_obj->foreign_address());
Handle<Object> callback_data(listener->get(1), isolate);
FUNCTION_CAST<v8::MessageCallback>(callback_obj.foreign_address());
Handle<Object> callback_data(listener.get(1), isolate);
{
RuntimeCallTimerScope timer(
isolate, RuntimeCallCounterId::kMessageListenerCallback);
@ -218,7 +218,7 @@ Object EvalFromFunctionName(Isolate* isolate, Handle<Script> script) {
Handle<SharedFunctionInfo> shared(script->eval_from_shared(), isolate);
// Find the name of the function calling eval.
if (shared->Name()->BooleanValue(isolate)) {
if (shared->Name().BooleanValue(isolate)) {
return shared->Name();
}
@ -250,7 +250,7 @@ MaybeHandle<String> FormatEvalOrigin(Isolate* isolate, Handle<Script> script) {
if (script->has_eval_from_shared()) {
Handle<SharedFunctionInfo> eval_from_shared(script->eval_from_shared(),
isolate);
if (eval_from_shared->script()->IsScript()) {
if (eval_from_shared->script().IsScript()) {
Handle<Script> eval_from_script =
handle(Script::cast(eval_from_shared->script()), isolate);
builder.AppendCString(" (");
@ -266,7 +266,7 @@ MaybeHandle<String> FormatEvalOrigin(Isolate* isolate, Handle<Script> script) {
Script::COMPILATION_TYPE_EVAL);
// eval script originated from "real" source.
Handle<Object> name_obj = handle(eval_from_script->name(), isolate);
if (eval_from_script->name()->IsString()) {
if (eval_from_script->name().IsString()) {
builder.AppendString(Handle<String>::cast(name_obj));
Script::PositionInfo info;
@ -287,7 +287,7 @@ MaybeHandle<String> FormatEvalOrigin(Isolate* isolate, Handle<Script> script) {
builder.AppendString(str);
}
} else {
DCHECK(!eval_from_script->name()->IsString());
DCHECK(!eval_from_script->name().IsString());
builder.AppendCString("unknown source");
}
}
@ -330,9 +330,9 @@ void JSStackFrame::FromFrameArray(Isolate* isolate, Handle<FrameArray> array,
receiver_ = handle(array->Receiver(frame_ix), isolate);
function_ = handle(array->Function(frame_ix), isolate);
code_ = handle(array->Code(frame_ix), isolate);
offset_ = array->Offset(frame_ix)->value();
offset_ = array->Offset(frame_ix).value();
const int flags = array->Flags(frame_ix)->value();
const int flags = array->Flags(frame_ix).value();
is_constructor_ = (flags & FrameArray::kIsConstructor) != 0;
is_strict_ = (flags & FrameArray::kIsStrict) != 0;
is_async_ = (flags & FrameArray::kIsAsync) != 0;
@ -392,7 +392,7 @@ bool CheckMethodName(Isolate* isolate, Handle<JSReceiver> receiver,
Handle<Object> ScriptNameOrSourceUrl(Handle<Script> script, Isolate* isolate) {
Object name_or_url = script->source_url();
if (!name_or_url->IsString()) name_or_url = script->name();
if (!name_or_url.IsString()) name_or_url = script->name();
return handle(name_or_url, isolate);
}
@ -416,7 +416,7 @@ Handle<Object> JSStackFrame::GetMethodName() {
return isolate_->factory()->null_value();
}
Handle<String> name(function_->shared()->Name(), isolate_);
Handle<String> name(function_->shared().Name(), isolate_);
name = String::Flatten(isolate_, name);
// The static initializer function is not a method, so don't add a
@ -448,7 +448,7 @@ Handle<Object> JSStackFrame::GetMethodName() {
KeyAccumulator::GetOwnEnumPropertyKeys(isolate_, current_obj);
for (int i = 0; i < keys->length(); i++) {
HandleScope inner_scope(isolate_);
if (!keys->get(i)->IsName()) continue;
if (!keys->get(i).IsName()) continue;
Handle<Name> name_key(Name::cast(keys->get(i)), isolate_);
if (!CheckMethodName(isolate_, current_obj, name_key, function_,
LookupIterator::OWN_SKIP_INTERCEPTOR))
@ -513,7 +513,7 @@ bool JSStackFrame::IsToplevel() {
namespace {
bool IsNonEmptyString(Handle<Object> object) {
return (object->IsString() && String::cast(*object)->length() > 0);
return (object->IsString() && String::cast(*object).length() > 0);
}
void AppendFileLocation(Isolate* isolate, StackFrameBase* call_site,
@ -688,11 +688,11 @@ int JSStackFrame::GetPosition() const {
}
bool JSStackFrame::HasScript() const {
return function_->shared()->script()->IsScript();
return function_->shared().script().IsScript();
}
Handle<Script> JSStackFrame::GetScript() const {
return handle(Script::cast(function_->shared()->script()), isolate_);
return handle(Script::cast(function_->shared().script()), isolate_);
}
void WasmStackFrame::FromFrameArray(Isolate* isolate, Handle<FrameArray> array,
@ -704,16 +704,16 @@ void WasmStackFrame::FromFrameArray(Isolate* isolate, Handle<FrameArray> array,
array->IsAsmJsWasmFrame(frame_ix));
isolate_ = isolate;
wasm_instance_ = handle(array->WasmInstance(frame_ix), isolate);
wasm_func_index_ = array->WasmFunctionIndex(frame_ix)->value();
wasm_func_index_ = array->WasmFunctionIndex(frame_ix).value();
if (array->IsWasmInterpretedFrame(frame_ix)) {
code_ = nullptr;
} else {
// The {WasmCode*} is held alive by the {GlobalWasmCodeRef}.
auto global_wasm_code_ref =
Managed<wasm::GlobalWasmCodeRef>::cast(array->WasmCodeObject(frame_ix));
code_ = global_wasm_code_ref->get()->code();
code_ = global_wasm_code_ref.get()->code();
}
offset_ = array->Offset(frame_ix)->value();
offset_ = array->Offset(frame_ix).value();
}
Handle<Object> WasmStackFrame::GetReceiver() const { return wasm_instance_; }
@ -783,7 +783,7 @@ Handle<Object> WasmStackFrame::Null() const {
bool WasmStackFrame::HasScript() const { return true; }
Handle<Script> WasmStackFrame::GetScript() const {
return handle(wasm_instance_->module_object()->script(), isolate_);
return handle(wasm_instance_->module_object().script(), isolate_);
}
void AsmJsWasmStackFrame::FromFrameArray(Isolate* isolate,
@ -792,7 +792,7 @@ void AsmJsWasmStackFrame::FromFrameArray(Isolate* isolate,
DCHECK(array->IsAsmJsWasmFrame(frame_ix));
WasmStackFrame::FromFrameArray(isolate, array, frame_ix);
is_at_number_conversion_ =
array->Flags(frame_ix)->value() & FrameArray::kAsmJsAtNumberConversion;
array->Flags(frame_ix).value() & FrameArray::kAsmJsAtNumberConversion;
}
Handle<Object> AsmJsWasmStackFrame::GetReceiver() const {
@ -805,13 +805,13 @@ Handle<Object> AsmJsWasmStackFrame::GetFunction() const {
}
Handle<Object> AsmJsWasmStackFrame::GetFileName() {
Handle<Script> script(wasm_instance_->module_object()->script(), isolate_);
Handle<Script> script(wasm_instance_->module_object().script(), isolate_);
DCHECK(script->IsUserJavaScript());
return handle(script->name(), isolate_);
}
Handle<Object> AsmJsWasmStackFrame::GetScriptNameOrSourceUrl() {
Handle<Script> script(wasm_instance_->module_object()->script(), isolate_);
Handle<Script> script(wasm_instance_->module_object().script(), isolate_);
DCHECK_EQ(Script::TYPE_NORMAL, script->type());
return ScriptNameOrSourceUrl(script, isolate_);
}
@ -831,14 +831,14 @@ int AsmJsWasmStackFrame::GetPosition() const {
int AsmJsWasmStackFrame::GetLineNumber() {
DCHECK_LE(0, GetPosition());
Handle<Script> script(wasm_instance_->module_object()->script(), isolate_);
Handle<Script> script(wasm_instance_->module_object().script(), isolate_);
DCHECK(script->IsUserJavaScript());
return Script::GetLineNumber(script, GetPosition()) + 1;
}
int AsmJsWasmStackFrame::GetColumnNumber() {
DCHECK_LE(0, GetPosition());
Handle<Script> script(wasm_instance_->module_object()->script(), isolate_);
Handle<Script> script(wasm_instance_->module_object().script(), isolate_);
DCHECK(script->IsUserJavaScript());
return Script::GetColumnNumber(script, GetPosition()) + 1;
}
@ -873,7 +873,7 @@ void FrameArrayIterator::Advance() { frame_ix_++; }
StackFrameBase* FrameArrayIterator::Frame() {
DCHECK(HasFrame());
const int flags = array_->Flags(frame_ix_)->value();
const int flags = array_->Flags(frame_ix_).value();
int flag_mask = FrameArray::kIsWasmFrame |
FrameArray::kIsWasmInterpretedFrame |
FrameArray::kIsAsmJsWasmFrame;

View File

@ -71,7 +71,7 @@ static void TraceRecompile(JSFunction function, const char* reason,
const char* type) {
if (FLAG_trace_opt) {
PrintF("[marking ");
function->ShortPrint();
function.ShortPrint();
PrintF(" for %s recompilation, reason: %s", type, reason);
PrintF("]\n");
}
@ -80,41 +80,41 @@ static void TraceRecompile(JSFunction function, const char* reason,
void RuntimeProfiler::Optimize(JSFunction function, OptimizationReason reason) {
DCHECK_NE(reason, OptimizationReason::kDoNotOptimize);
TraceRecompile(function, OptimizationReasonToString(reason), "optimized");
function->MarkForOptimization(ConcurrencyMode::kConcurrent);
function.MarkForOptimization(ConcurrencyMode::kConcurrent);
}
void RuntimeProfiler::AttemptOnStackReplacement(InterpretedFrame* frame,
int loop_nesting_levels) {
JSFunction function = frame->function();
SharedFunctionInfo shared = function->shared();
if (!FLAG_use_osr || !shared->IsUserJavaScript()) {
SharedFunctionInfo shared = function.shared();
if (!FLAG_use_osr || !shared.IsUserJavaScript()) {
return;
}
// If the code is not optimizable, don't try OSR.
if (shared->optimization_disabled()) return;
if (shared.optimization_disabled()) return;
// We're using on-stack replacement: Store new loop nesting level in
// BytecodeArray header so that certain back edges in any interpreter frame
// for this bytecode will trigger on-stack replacement for that frame.
if (FLAG_trace_osr) {
PrintF("[OSR - arming back edges in ");
function->PrintName();
function.PrintName();
PrintF("]\n");
}
DCHECK_EQ(StackFrame::INTERPRETED, frame->type());
int level = frame->GetBytecodeArray()->osr_loop_nesting_level();
frame->GetBytecodeArray()->set_osr_loop_nesting_level(
int level = frame->GetBytecodeArray().osr_loop_nesting_level();
frame->GetBytecodeArray().set_osr_loop_nesting_level(
Min(level + loop_nesting_levels, AbstractCode::kMaxLoopNestingMarker));
}
void RuntimeProfiler::MaybeOptimize(JSFunction function,
InterpretedFrame* frame) {
if (function->IsInOptimizationQueue()) {
if (function.IsInOptimizationQueue()) {
if (FLAG_trace_opt_verbose) {
PrintF("[function ");
function->PrintName();
function.PrintName();
PrintF(" is already in optimization queue]\n");
}
return;
@ -127,10 +127,10 @@ void RuntimeProfiler::MaybeOptimize(JSFunction function,
return;
}
if (function->shared()->optimization_disabled()) return;
if (function.shared().optimization_disabled()) return;
OptimizationReason reason =
ShouldOptimize(function, function->shared()->GetBytecodeArray());
ShouldOptimize(function, function.shared().GetBytecodeArray());
if (reason != OptimizationReason::kDoNotOptimize) {
Optimize(function, reason);
@ -138,19 +138,19 @@ void RuntimeProfiler::MaybeOptimize(JSFunction function,
}
bool RuntimeProfiler::MaybeOSR(JSFunction function, InterpretedFrame* frame) {
int ticks = function->feedback_vector()->profiler_ticks();
int ticks = function.feedback_vector().profiler_ticks();
// TODO(rmcilroy): Also ensure we only OSR top-level code if it is smaller
// than kMaxToplevelSourceSize.
if (function->IsMarkedForOptimization() ||
function->IsMarkedForConcurrentOptimization() ||
function->HasOptimizedCode()) {
if (function.IsMarkedForOptimization() ||
function.IsMarkedForConcurrentOptimization() ||
function.HasOptimizedCode()) {
// Attempt OSR if we are still running interpreted code even though the
// the function has long been marked or even already been optimized.
int64_t allowance =
kOSRBytecodeSizeAllowanceBase +
static_cast<int64_t>(ticks) * kOSRBytecodeSizeAllowancePerTick;
if (function->shared()->GetBytecodeArray()->length() <= allowance) {
if (function.shared().GetBytecodeArray().length() <= allowance) {
AttemptOnStackReplacement(frame);
}
return true;
@ -160,27 +160,27 @@ bool RuntimeProfiler::MaybeOSR(JSFunction function, InterpretedFrame* frame) {
OptimizationReason RuntimeProfiler::ShouldOptimize(JSFunction function,
BytecodeArray bytecode) {
int ticks = function->feedback_vector()->profiler_ticks();
int ticks = function.feedback_vector().profiler_ticks();
int ticks_for_optimization =
kProfilerTicksBeforeOptimization +
(bytecode->length() / kBytecodeSizeAllowancePerTick);
(bytecode.length() / kBytecodeSizeAllowancePerTick);
if (ticks >= ticks_for_optimization) {
return OptimizationReason::kHotAndStable;
} else if (!any_ic_changed_ &&
bytecode->length() < kMaxBytecodeSizeForEarlyOpt) {
bytecode.length() < kMaxBytecodeSizeForEarlyOpt) {
// If no IC was patched since the last tick and this function is very
// small, optimistically optimize it now.
return OptimizationReason::kSmallFunction;
} else if (FLAG_trace_opt_verbose) {
PrintF("[not yet optimizing ");
function->PrintName();
function.PrintName();
PrintF(", not enough ticks: %d/%d and ", ticks,
kProfilerTicksBeforeOptimization);
if (any_ic_changed_) {
PrintF("ICs changed]\n");
} else {
PrintF(" too large for small function optimization: %d/%d]\n",
bytecode->length(), kMaxBytecodeSizeForEarlyOpt);
bytecode.length(), kMaxBytecodeSizeForEarlyOpt);
}
}
return OptimizationReason::kDoNotOptimize;
@ -206,18 +206,18 @@ void RuntimeProfiler::MarkCandidatesForOptimization() {
if (!frame->is_interpreted()) continue;
JSFunction function = frame->function();
DCHECK(function->shared()->is_compiled());
if (!function->shared()->IsInterpreted()) continue;
DCHECK(function.shared().is_compiled());
if (!function.shared().IsInterpreted()) continue;
if (!function->has_feedback_vector()) continue;
if (!function.has_feedback_vector()) continue;
MaybeOptimize(function, InterpretedFrame::cast(frame));
// TODO(leszeks): Move this increment to before the maybe optimize checks,
// and update the tests to assume the increment has already happened.
int ticks = function->feedback_vector()->profiler_ticks();
int ticks = function.feedback_vector().profiler_ticks();
if (ticks < Smi::kMaxValue) {
function->feedback_vector()->set_profiler_ticks(ticks + 1);
function.feedback_vector().set_profiler_ticks(ticks + 1);
}
}
any_ic_changed_ = false;

View File

@ -109,7 +109,7 @@ class GeneratedCode {
}
static GeneratedCode FromCode(Code code) {
return FromAddress(code->GetIsolate(), code->entry());
return FromAddress(code.GetIsolate(), code.entry());
}
#ifdef USE_SIMULATOR

View File

@ -129,16 +129,16 @@ void StatisticsExtension::GetCounters(
int source_position_table_total = 0;
for (HeapObject obj = iterator.next(); !obj.is_null();
obj = iterator.next()) {
if (obj->IsCode()) {
if (obj.IsCode()) {
Code code = Code::cast(obj);
reloc_info_total += code->relocation_info()->Size();
ByteArray source_position_table = code->SourcePositionTable();
if (source_position_table->length() > 0) {
source_position_table_total += code->SourcePositionTable()->Size();
reloc_info_total += code.relocation_info().Size();
ByteArray source_position_table = code.SourcePositionTable();
if (source_position_table.length() > 0) {
source_position_table_total += code.SourcePositionTable().Size();
}
} else if (obj->IsBytecodeArray()) {
} else if (obj.IsBytecodeArray()) {
source_position_table_total +=
BytecodeArray::cast(obj)->SourcePositionTable()->Size();
BytecodeArray::cast(obj).SourcePositionTable().Size();
}
}

View File

@ -639,7 +639,7 @@ FUNCTION_REFERENCE(orderedhashmap_gethash_raw, OrderedHashMap::GetHash)
Address GetOrCreateHash(Isolate* isolate, Address raw_key) {
DisallowHeapAllocation no_gc;
return Object(raw_key)->GetOrCreateHash(isolate).ptr();
return Object(raw_key).GetOrCreateHash(isolate).ptr();
}
FUNCTION_REFERENCE(get_or_create_hash_raw, GetOrCreateHash)

Some files were not shown because too many files have changed in this diff Show More