⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 api.cc.svn-base

📁 Google浏览器V8内核代码
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
  return static_cast<int>(result->Number());}int Message::GetStartPosition() {  if (IsDeadCheck("v8::Message::GetStartPosition()")) return 0;  HandleScope scope;  i::Handle<i::JSObject> data_obj = Utils::OpenHandle(this);  return static_cast<int>(GetProperty(data_obj, "startPos")->Number());}int Message::GetEndPosition() {  if (IsDeadCheck("v8::Message::GetEndPosition()")) return 0;  HandleScope scope;  i::Handle<i::JSObject> data_obj = Utils::OpenHandle(this);  return static_cast<int>(GetProperty(data_obj, "endPos")->Number());}int Message::GetStartColumn() {  if (IsDeadCheck("v8::Message::GetStartColumn()")) return 0;  HandleScope scope;  i::Handle<i::JSObject> data_obj = Utils::OpenHandle(this);  EXCEPTION_PREAMBLE();  i::Handle<i::Object> start_col_obj = CallV8HeapFunction(      "GetPositionInLine",      data_obj,      &has_pending_exception);  EXCEPTION_BAILOUT_CHECK(0);  return static_cast<int>(start_col_obj->Number());}int Message::GetEndColumn() {  if (IsDeadCheck("v8::Message::GetEndColumn()")) return 0;  HandleScope scope;  i::Handle<i::JSObject> data_obj = Utils::OpenHandle(this);  EXCEPTION_PREAMBLE();  i::Handle<i::Object> start_col_obj = CallV8HeapFunction(      "GetPositionInLine",      data_obj,      &has_pending_exception);  EXCEPTION_BAILOUT_CHECK(0);  int start = static_cast<int>(GetProperty(data_obj, "startPos")->Number());  int end = static_cast<int>(GetProperty(data_obj, "endPos")->Number());  return static_cast<int>(start_col_obj->Number()) + (end - start);}Local<String> Message::GetSourceLine() {  ON_BAILOUT("v8::Message::GetSourceLine()", return Local<String>());  HandleScope scope;  EXCEPTION_PREAMBLE();  i::Handle<i::Object> result = CallV8HeapFunction("GetSourceLine",                                                   Utils::OpenHandle(this),                                                   &has_pending_exception);  EXCEPTION_BAILOUT_CHECK(Local<v8::String>());  if (result->IsString()) {    return scope.Close(Utils::ToLocal(i::Handle<i::String>::cast(result)));  } else {    return Local<String>();  }}char* Message::GetUnderline(char* source_line, char underline_char) {  if (IsDeadCheck("v8::Message::GetUnderline()")) return 0;  HandleScope scope;  i::Handle<i::JSObject> data_obj = Utils::OpenHandle(this);  int start_pos = static_cast<int>(GetProperty(data_obj, "startPos")->Number());  int end_pos = static_cast<int>(GetProperty(data_obj, "endPos")->Number());  EXCEPTION_PREAMBLE();  i::Handle<i::Object> start_col_obj = CallV8HeapFunction(      "GetPositionInLine",      data_obj,      &has_pending_exception);  EXCEPTION_BAILOUT_CHECK(0);  int start_col = static_cast<int>(start_col_obj->Number());  int end_col = start_col + (end_pos - start_pos);  // Any tabs before or between the selected columns have to be  // expanded into spaces.  We assume that a tab character advances  // the cursor up until the next 8-character boundary and at least  // one character.  int real_start_col = 0;  for (int i = 0; i < start_col; i++) {    real_start_col++;    if (source_line[i] == '\t') {      real_start_col++;      while (real_start_col % 8 != 0)        real_start_col++;    }  }  int real_end_col = real_start_col;  for (int i = start_col; i < end_col; i++) {    real_end_col++;    if (source_line[i] == '\t') {      while (real_end_col % 8 != 0)        real_end_col++;    }  }  char* result = i::NewArray<char>(real_end_col + 1);  for (int i = 0; i < real_start_col; i++)    result[i] = ' ';  for (int i = real_start_col; i < real_end_col; i++)    result[i] = underline_char;  result[real_end_col] = '\0';  return result;}void Message::PrintCurrentStackTrace(FILE* out) {  if (IsDeadCheck("v8::Message::PrintCurrentStackTrace()")) return;  i::Top::PrintCurrentStackTrace(out);}// --- D a t a ---bool Value::IsUndefined() {  if (IsDeadCheck("v8::Value::IsUndefined()")) return false;  return Utils::OpenHandle(this)->IsUndefined();}bool Value::IsNull() {  if (IsDeadCheck("v8::Value::IsNull()")) return false;  return Utils::OpenHandle(this)->IsNull();}bool Value::IsTrue() {  if (IsDeadCheck("v8::Value::IsTrue()")) return false;  return Utils::OpenHandle(this)->IsTrue();}bool Value::IsFalse() {  if (IsDeadCheck("v8::Value::IsFalse()")) return false;  return Utils::OpenHandle(this)->IsFalse();}bool Value::IsFunction() {  if (IsDeadCheck("v8::Value::IsFunction()")) return false;  return Utils::OpenHandle(this)->IsJSFunction();}bool Value::IsString() {  if (IsDeadCheck("v8::Value::IsString()")) return false;  return Utils::OpenHandle(this)->IsString();}bool Value::IsArray() {  if (IsDeadCheck("v8::Value::IsArray()")) return false;  return Utils::OpenHandle(this)->IsJSArray();}bool Value::IsObject() {  if (IsDeadCheck("v8::Value::IsObject()")) return false;  return Utils::OpenHandle(this)->IsJSObject();}bool Value::IsNumber() {  if (IsDeadCheck("v8::Value::IsNumber()")) return false;  return Utils::OpenHandle(this)->IsNumber();}bool Value::IsBoolean() {  if (IsDeadCheck("v8::Value::IsBoolean()")) return false;  return Utils::OpenHandle(this)->IsBoolean();}bool Value::IsExternal() {  if (IsDeadCheck("v8::Value::IsExternal()")) return false;  return Utils::OpenHandle(this)->IsProxy();}bool Value::IsInt32() {  if (IsDeadCheck("v8::Value::IsInt32()")) return false;  i::Handle<i::Object> obj = Utils::OpenHandle(this);  if (obj->IsSmi()) return true;  if (obj->IsNumber()) {    double value = obj->Number();    return i::FastI2D(i::FastD2I(value)) == value;  }  return false;}Local<String> Value::ToString() {  if (IsDeadCheck("v8::Value::ToString()")) return Local<String>();  LOG_API("ToString");  i::Handle<i::Object> obj = Utils::OpenHandle(this);  i::Handle<i::Object> str;  if (obj->IsString()) {    str = obj;  } else {    EXCEPTION_PREAMBLE();    str = i::Execution::ToString(obj, &has_pending_exception);    EXCEPTION_BAILOUT_CHECK(Local<String>());  }  return Local<String>(ToApi<String>(str));}Local<String> Value::ToDetailString() {  if (IsDeadCheck("v8::Value::ToDetailString()")) return Local<String>();  LOG_API("ToDetailString");  i::Handle<i::Object> obj = Utils::OpenHandle(this);  i::Handle<i::Object> str;  if (obj->IsString()) {    str = obj;  } else {    EXCEPTION_PREAMBLE();    str = i::Execution::ToDetailString(obj, &has_pending_exception);    EXCEPTION_BAILOUT_CHECK(Local<String>());  }  return Local<String>(ToApi<String>(str));}Local<v8::Object> Value::ToObject() {  if (IsDeadCheck("v8::Value::ToObject()")) return Local<v8::Object>();  LOG_API("ToObject");  i::Handle<i::Object> obj = Utils::OpenHandle(this);  i::Handle<i::Object> val;  if (obj->IsJSObject()) {    val = obj;  } else {    EXCEPTION_PREAMBLE();    val = i::Execution::ToObject(obj, &has_pending_exception);    EXCEPTION_BAILOUT_CHECK(Local<v8::Object>());  }  return Local<v8::Object>(ToApi<Object>(val));}Local<Boolean> Value::ToBoolean() {  if (IsDeadCheck("v8::Value::ToBoolean()")) return Local<Boolean>();  LOG_API("ToBoolean");  i::Handle<i::Object> obj = Utils::OpenHandle(this);  i::Handle<i::Object> val =      obj->IsBoolean() ? obj : i::Execution::ToBoolean(obj);  return Local<Boolean>(ToApi<Boolean>(val));}Local<Number> Value::ToNumber() {  if (IsDeadCheck("v8::Value::ToNumber()")) return Local<Number>();  LOG_API("ToNumber");  i::Handle<i::Object> obj = Utils::OpenHandle(this);  i::Handle<i::Object> num;  if (obj->IsNumber()) {    num = obj;  } else {    EXCEPTION_PREAMBLE();    num = i::Execution::ToNumber(obj, &has_pending_exception);    EXCEPTION_BAILOUT_CHECK(Local<Number>());  }  return Local<Number>(ToApi<Number>(num));}Local<Integer> Value::ToInteger() {  if (IsDeadCheck("v8::Value::ToInteger()")) return Local<Integer>();  LOG_API("ToInteger");  i::Handle<i::Object> obj = Utils::OpenHandle(this);  i::Handle<i::Object> num;  if (obj->IsSmi()) {    num = obj;  } else {    EXCEPTION_PREAMBLE();    num = i::Execution::ToInteger(obj, &has_pending_exception);    EXCEPTION_BAILOUT_CHECK(Local<Integer>());  }  return Local<Integer>(ToApi<Integer>(num));}External* External::Cast(v8::Value* that) {  if (IsDeadCheck("v8::External::Cast()")) return 0;  i::Handle<i::Object> obj = Utils::OpenHandle(that);  ApiCheck(obj->IsProxy(),           "v8::External::Cast()",           "Could not convert to external");  return static_cast<External*>(that);}v8::Object* v8::Object::Cast(Value* that) {  if (IsDeadCheck("v8::Object::Cast()")) return 0;  i::Handle<i::Object> obj = Utils::OpenHandle(that);  ApiCheck(obj->IsJSObject(),           "v8::Object::Cast()",           "Could not convert to object");  return static_cast<v8::Object*>(that);}v8::Function* v8::Function::Cast(Value* that) {  if (IsDeadCheck("v8::Function::Cast()")) return 0;  i::Handle<i::Object> obj = Utils::OpenHandle(that);  ApiCheck(obj->IsJSFunction(),           "v8::Function::Cast()",           "Could not convert to function");  return static_cast<v8::Function*>(that);}v8::String* v8::String::Cast(v8::Value* that) {  if (IsDeadCheck("v8::String::Cast()")) return 0;  i::Handle<i::Object> obj = Utils::OpenHandle(that);  ApiCheck(obj->IsString(),           "v8::String::Cast()",           "Could not convert to string");  return static_cast<v8::String*>(that);}v8::Number* v8::Number::Cast(v8::Value* that) {  if (IsDeadCheck("v8::Number::Cast()")) return 0;  i::Handle<i::Object> obj = Utils::OpenHandle(that);  ApiCheck(obj->IsNumber(),           "v8::Number::Cast()",           "Could not convert to number");  return static_cast<v8::Number*>(that);}v8::Integer* v8::Integer::Cast(v8::Value* that) {  if (IsDeadCheck("v8::Integer::Cast()")) return 0;  i::Handle<i::Object> obj = Utils::OpenHandle(that);  ApiCheck(obj->IsNumber(),           "v8::Integer::Cast()",           "Could not convert to number");  return static_cast<v8::Integer*>(that);}v8::Array* v8::Array::Cast(Value* that) {  if (IsDeadCheck("v8::Array::Cast()")) return 0;  i::Handle<i::Object> obj = Utils::OpenHandle(that);  ApiCheck(obj->IsJSArray(),           "v8::Array::Cast()",           "Could not convert to array");  return static_cast<v8::Array*>(that);}bool Value::BooleanValue() {  if (IsDeadCheck("v8::Value::BooleanValue()")) return false;  LOG_API("BooleanValue");  i::Handle<i::Object> obj = Utils::OpenHandle(this);  i::Handle<i::Object> value =      obj->IsBoolean() ? obj : i::Execution::ToBoolean(obj);  return value->IsTrue();}double Value::NumberValue() {  if (IsDeadCheck("v8::Value::NumberValue()")) return i::OS::nan_value();  LOG_API("NumberValue");  i::Handle<i::Object> obj = Utils::OpenHandle(this);  i::Handle<i::Object> num;  if (obj->IsNumber()) {    num = obj;  } else {    EXCEPTION_PREAMBLE();    num = i::Execution::ToNumber(obj, &has_pending_exception);    EXCEPTION_BAILOUT_CHECK(i::OS::nan_value());  }  return num->Number();}int64_t Value::IntegerValue() {  if (IsDeadCheck("v8::Value::IntegerValue()")) return 0;  LOG_API("IntegerValue");  i::Handle<i::Object> obj = Utils::OpenHandle(this);  i::Handle<i::Object> num;  if (obj->IsNumber()) {    num = obj;  } else {    EXCEPTION_PREAMBLE();    num = i::Execution::ToInteger(obj, &has_pending_exception);    EXCEPTION_BAILOUT_CHECK(0);  }  if (num->IsSmi()) {    return i::Smi::cast(*num)->value();  } else {    return static_cast<int64_t>(num->Number());  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -