Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Unified Diff: src/accessors.cc

Issue 147763006: Support loads from primitive values. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/accessors.h ('k') | src/hydrogen.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/accessors.cc
diff --git a/src/accessors.cc b/src/accessors.cc
index cd4156468b0e754c76b5143e234a976d9c5863c3..25ee3059abe33118daf39b24768b0f25582e21d5 100644
--- a/src/accessors.cc
+++ b/src/accessors.cc
@@ -91,10 +91,19 @@ static V8_INLINE bool CheckForName(Handle<String> name,
}
-bool Accessors::IsJSObjectFieldAccessor(
- Handle<Map> map, Handle<String> name,
- int* object_offset) {
- Isolate* isolate = map->GetIsolate();
+bool Accessors::IsJSObjectFieldAccessor(Handle<HeapType> type,
+ Handle<String> name,
+ int* object_offset) {
+ Isolate* isolate = name->GetIsolate();
+
+ if (type->Is(HeapType::String())) {
+ return CheckForName(name, isolate->heap()->length_string(),
+ String::kLengthOffset, object_offset);
+ }
+
+ if (!type->IsClass()) return false;
+ Handle<Map> map = type->AsClass();
+
switch (map->instance_type()) {
case JS_ARRAY_TYPE:
return
@@ -122,14 +131,8 @@ bool Accessors::IsJSObjectFieldAccessor(
JSDataView::kByteOffsetOffset, object_offset) ||
CheckForName(name, isolate->heap()->buffer_string(),
JSDataView::kBufferOffset, object_offset);
- default: {
- if (map->instance_type() < FIRST_NONSTRING_TYPE) {
- return
- CheckForName(name, isolate->heap()->length_string(),
- String::kLengthOffset, object_offset);
- }
+ default:
return false;
- }
}
}
« no previous file with comments | « src/accessors.h ('k') | src/hydrogen.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698