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

Unified Diff: runtime/bin/socket.cc

Issue 10962012: Use native wrapper fields to store socket ids. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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
Index: runtime/bin/socket.cc
diff --git a/runtime/bin/socket.cc b/runtime/bin/socket.cc
index 1dab4f7be0375b164a5facbd4b36a1bde1e69e94..0f1c99a0ada7ddd77e4b274568a54e9d483ca420 100644
--- a/runtime/bin/socket.cc
+++ b/runtime/bin/socket.cc
@@ -13,6 +13,8 @@
#include "include/dart_api.h"
+static const int kSocketIdNativeField = 0;
+
dart::Mutex Socket::mutex_;
int Socket::service_ports_size_ = 0;
Dart_Port* Socket::service_ports_ = NULL;
@@ -26,7 +28,7 @@ void FUNCTION_NAME(Socket_CreateConnect)(Dart_NativeArguments args) {
if (DartUtils::GetInt64Value(Dart_GetNativeArgument(args, 2), &port)) {
intptr_t socket = Socket::CreateConnect(host, port);
if (socket >= 0) {
- DartUtils::SetIntegerField(socket_obj, DartUtils::kIdFieldName, socket);
+ Socket::SetSocketIdNativeField(socket_obj, socket);
Dart_SetReturnValue(args, Dart_True());
} else {
Dart_SetReturnValue(args, DartUtils::NewDartOSError());
@@ -43,8 +45,9 @@ void FUNCTION_NAME(Socket_CreateConnect)(Dart_NativeArguments args) {
void FUNCTION_NAME(Socket_Available)(Dart_NativeArguments args) {
Dart_EnterScope();
- int64_t socket = DartUtils::GetIntegerField(Dart_GetNativeArgument(args, 0),
- DartUtils::kIdFieldName);
+ Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
+ intptr_t socket = 0;
Søren Gjesse 2012/09/21 06:47:06 Why do you initialize to 0?
Mads Ager (google) 2012/09/21 08:18:25 Just to make sure that we have some initialization
+ Socket::GetSocketIdNativeField(socket_obj, &socket);
intptr_t available = Socket::Available(socket);
if (available >= 0) {
Dart_SetReturnValue(args, Dart_NewInteger(available));
@@ -57,9 +60,9 @@ void FUNCTION_NAME(Socket_Available)(Dart_NativeArguments args) {
void FUNCTION_NAME(Socket_ReadList)(Dart_NativeArguments args) {
Dart_EnterScope();
- intptr_t socket =
- DartUtils::GetIntegerField(Dart_GetNativeArgument(args, 0),
- DartUtils::kIdFieldName);
+ Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
+ intptr_t socket = 0;
+ Socket::GetSocketIdNativeField(socket_obj, &socket);
Dart_Handle buffer_obj = Dart_GetNativeArgument(args, 1);
int64_t offset = 0;
int64_t length = 0;
@@ -106,9 +109,9 @@ void FUNCTION_NAME(Socket_ReadList)(Dart_NativeArguments args) {
void FUNCTION_NAME(Socket_WriteList)(Dart_NativeArguments args) {
Dart_EnterScope();
- intptr_t socket =
- DartUtils::GetIntegerField(Dart_GetNativeArgument(args, 0),
- DartUtils::kIdFieldName);
+ Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
+ intptr_t socket = 0;
+ Socket::GetSocketIdNativeField(socket_obj, &socket);
Dart_Handle buffer_obj = Dart_GetNativeArgument(args, 1);
ASSERT(Dart_IsList(buffer_obj));
intptr_t offset =
@@ -159,9 +162,9 @@ void FUNCTION_NAME(Socket_WriteList)(Dart_NativeArguments args) {
void FUNCTION_NAME(Socket_GetPort)(Dart_NativeArguments args) {
Dart_EnterScope();
- intptr_t socket =
- DartUtils::GetIntegerField(Dart_GetNativeArgument(args, 0),
- DartUtils::kIdFieldName);
+ Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
+ intptr_t socket = 0;
+ Socket::GetSocketIdNativeField(socket_obj, &socket);
OSError os_error;
intptr_t port = Socket::GetPort(socket);
if (port > 0) {
@@ -175,9 +178,9 @@ void FUNCTION_NAME(Socket_GetPort)(Dart_NativeArguments args) {
void FUNCTION_NAME(Socket_GetRemotePeer)(Dart_NativeArguments args) {
Dart_EnterScope();
- intptr_t socket =
- DartUtils::GetIntegerField(Dart_GetNativeArgument(args, 0),
- DartUtils::kIdFieldName);
+ Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
+ intptr_t socket = 0;
+ Socket::GetSocketIdNativeField(socket_obj, &socket);
OSError os_error;
intptr_t port = 0;
char host[INET_ADDRSTRLEN];
@@ -195,9 +198,9 @@ void FUNCTION_NAME(Socket_GetRemotePeer)(Dart_NativeArguments args) {
void FUNCTION_NAME(Socket_GetError)(Dart_NativeArguments args) {
Dart_EnterScope();
- intptr_t socket =
- DartUtils::GetIntegerField(Dart_GetNativeArgument(args, 0),
- DartUtils::kIdFieldName);
+ Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
+ intptr_t socket = 0;
+ Socket::GetSocketIdNativeField(socket_obj, &socket);
OSError os_error;
Socket::GetError(socket, &os_error);
Dart_SetReturnValue(args, DartUtils::NewDartOSError(&os_error));
@@ -212,8 +215,7 @@ void FUNCTION_NAME(Socket_GetStdioHandle)(Dart_NativeArguments args) {
DartUtils::GetIntegerValue(Dart_GetNativeArgument(args, 1));
ASSERT(num == 0 || num == 1 || num == 2);
intptr_t socket = Socket::GetStdioHandle(num);
- DartUtils::SetIntegerField(
- socket_obj, DartUtils::kIdFieldName, socket);
+ Socket::SetSocketIdNativeField(socket_obj, socket);
Dart_SetReturnValue(args, Dart_NewBoolean(socket >= 0));
Dart_ExitScope();
}
@@ -234,8 +236,7 @@ void FUNCTION_NAME(ServerSocket_CreateBindListen)(Dart_NativeArguments args) {
intptr_t socket =
ServerSocket::CreateBindListen(bind_address, port, backlog);
if (socket >= 0) {
- DartUtils::SetIntegerField(
- socket_obj, DartUtils::kIdFieldName, socket);
+ Socket::SetSocketIdNativeField(socket_obj, socket);
Dart_SetReturnValue(args, Dart_True());
} else {
if (socket == -5) {
@@ -257,14 +258,13 @@ void FUNCTION_NAME(ServerSocket_CreateBindListen)(Dart_NativeArguments args) {
void FUNCTION_NAME(ServerSocket_Accept)(Dart_NativeArguments args) {
Dart_EnterScope();
- intptr_t socket =
- DartUtils::GetIntegerField(Dart_GetNativeArgument(args, 0),
- DartUtils::kIdFieldName);
- Dart_Handle socket_obj = Dart_GetNativeArgument(args, 1);
+ Dart_Handle socket_obj = Dart_GetNativeArgument(args, 0);
+ intptr_t socket = 0;
+ Socket::GetSocketIdNativeField(socket_obj, &socket);
+ Dart_Handle result_socket_obj = Dart_GetNativeArgument(args, 1);
intptr_t new_socket = ServerSocket::Accept(socket);
if (new_socket >= 0) {
- DartUtils::SetIntegerField(
- socket_obj, DartUtils::kIdFieldName, new_socket);
+ Socket::SetSocketIdNativeField(result_socket_obj, new_socket);
Dart_SetReturnValue(args, Dart_True());
} else if (new_socket == ServerSocket::kTemporaryFailure) {
Dart_SetReturnValue(args, Dart_False());
@@ -353,3 +353,13 @@ void FUNCTION_NAME(Socket_NewServicePort)(Dart_NativeArguments args) {
}
Dart_ExitScope();
}
+
+
+Dart_Handle Socket::SetSocketIdNativeField(Dart_Handle socket, intptr_t id) {
+ return Dart_SetNativeInstanceField(socket, kSocketIdNativeField, id);
+}
+
+
+Dart_Handle Socket::GetSocketIdNativeField(Dart_Handle socket, intptr_t* id) {
+ return Dart_GetNativeInstanceField(socket, kSocketIdNativeField, id);
+}
« no previous file with comments | « runtime/bin/socket.h ('k') | runtime/bin/socket_impl.dart » ('j') | runtime/bin/socket_impl.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698