OLD | NEW |
---|---|
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/objects.h" | 5 #include "src/objects.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <iomanip> | 8 #include <iomanip> |
9 #include <memory> | 9 #include <memory> |
10 #include <sstream> | 10 #include <sstream> |
(...skipping 18869 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
18880 set_cache_stamp(date_cache->stamp()); | 18880 set_cache_stamp(date_cache->stamp()); |
18881 set_year(Smi::FromInt(year), SKIP_WRITE_BARRIER); | 18881 set_year(Smi::FromInt(year), SKIP_WRITE_BARRIER); |
18882 set_month(Smi::FromInt(month), SKIP_WRITE_BARRIER); | 18882 set_month(Smi::FromInt(month), SKIP_WRITE_BARRIER); |
18883 set_day(Smi::FromInt(day), SKIP_WRITE_BARRIER); | 18883 set_day(Smi::FromInt(day), SKIP_WRITE_BARRIER); |
18884 set_weekday(Smi::FromInt(weekday), SKIP_WRITE_BARRIER); | 18884 set_weekday(Smi::FromInt(weekday), SKIP_WRITE_BARRIER); |
18885 set_hour(Smi::FromInt(hour), SKIP_WRITE_BARRIER); | 18885 set_hour(Smi::FromInt(hour), SKIP_WRITE_BARRIER); |
18886 set_min(Smi::FromInt(min), SKIP_WRITE_BARRIER); | 18886 set_min(Smi::FromInt(min), SKIP_WRITE_BARRIER); |
18887 set_sec(Smi::FromInt(sec), SKIP_WRITE_BARRIER); | 18887 set_sec(Smi::FromInt(sec), SKIP_WRITE_BARRIER); |
18888 } | 18888 } |
18889 | 18889 |
18890 namespace { | |
18891 | |
18892 Script* ScriptFromJSValue(Object* in) { | |
18893 DCHECK(in->IsJSValue()); | |
18894 JSValue* jsvalue = JSValue::cast(in); | |
18895 DCHECK(jsvalue->value()->IsScript()); | |
18896 return Script::cast(jsvalue->value()); | |
18897 } | |
18898 | |
18899 } // namespace | |
18900 | |
18901 int JSMessageObject::GetLineNumber() const { | |
18902 if (start_position() == -1) return Message::kNoLineNumberInfo; | |
18903 | |
18904 Handle<Script> the_script = handle(ScriptFromJSValue(script())); | |
18905 | |
18906 Script::PositionInfo info; | |
18907 const Script::OffsetFlag offset_flag = Script::WITH_OFFSET; | |
18908 if (!the_script->GetPositionInfo(start_position(), &info, offset_flag)) { | |
18909 return Message::kNoLineNumberInfo; | |
18910 } | |
18911 | |
18912 return info.line + 1; | |
18913 } | |
18914 | |
18915 int JSMessageObject::GetColumnNumber() const { | |
18916 if (start_position() == -1) return -1; | |
18917 | |
18918 Handle<Script> the_script = handle(ScriptFromJSValue(script())); | |
18919 | |
18920 Script::PositionInfo info; | |
18921 const Script::OffsetFlag offset_flag = Script::WITH_OFFSET; | |
18922 if (!the_script->GetPositionInfo(start_position(), &info, offset_flag)) { | |
18923 return -1; | |
18924 } | |
18925 | |
18926 return info.column; // Note: No + 1. | |
Yang
2016/08/10 09:03:18
please rephrase the comment as "No '+1'". Otherwis
jgruber
2016/08/10 09:25:10
Done.
| |
18927 } | |
18928 | |
18929 Handle<String> JSMessageObject::GetSourceLine() const { | |
18930 Handle<Script> the_script = handle(ScriptFromJSValue(script())); | |
18931 | |
18932 Isolate* isolate = the_script->GetIsolate(); | |
18933 if (the_script->type() == Script::TYPE_WASM) { | |
18934 return isolate->factory()->empty_string(); | |
18935 } | |
18936 | |
18937 Script::PositionInfo info; | |
18938 const Script::OffsetFlag offset_flag = Script::WITH_OFFSET; | |
18939 if (!the_script->GetPositionInfo(start_position(), &info, offset_flag)) { | |
18940 return isolate->factory()->empty_string(); | |
18941 } | |
18942 | |
18943 Handle<String> src = handle(String::cast(the_script->source()), isolate); | |
18944 return isolate->factory()->NewSubString(src, info.line_start, info.line_end); | |
18945 } | |
18890 | 18946 |
18891 void JSArrayBuffer::Neuter() { | 18947 void JSArrayBuffer::Neuter() { |
18892 CHECK(is_neuterable()); | 18948 CHECK(is_neuterable()); |
18893 CHECK(is_external()); | 18949 CHECK(is_external()); |
18894 set_backing_store(NULL); | 18950 set_backing_store(NULL); |
18895 set_byte_length(Smi::FromInt(0)); | 18951 set_byte_length(Smi::FromInt(0)); |
18896 set_was_neutered(true); | 18952 set_was_neutered(true); |
18897 } | 18953 } |
18898 | 18954 |
18899 | 18955 |
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
19184 for (PrototypeIterator iter(isolate, this, kStartAtReceiver, | 19240 for (PrototypeIterator iter(isolate, this, kStartAtReceiver, |
19185 PrototypeIterator::END_AT_NULL); | 19241 PrototypeIterator::END_AT_NULL); |
19186 !iter.IsAtEnd(); iter.AdvanceIgnoringProxies()) { | 19242 !iter.IsAtEnd(); iter.AdvanceIgnoringProxies()) { |
19187 if (iter.GetCurrent<Object>()->IsJSProxy()) return true; | 19243 if (iter.GetCurrent<Object>()->IsJSProxy()) return true; |
19188 } | 19244 } |
19189 return false; | 19245 return false; |
19190 } | 19246 } |
19191 | 19247 |
19192 } // namespace internal | 19248 } // namespace internal |
19193 } // namespace v8 | 19249 } // namespace v8 |
OLD | NEW |