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

Unified Diff: base/android/jni_generator/jni_generator.py

Issue 267893002: Catch intptr_t to int conversion on 64-bit platforms. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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: base/android/jni_generator/jni_generator.py
diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py
index 9984c2a2866901f16fcfee565c18a625b94dfea2..d90c3c2a9f1ad3093abf03ea01ef5548cce9829e 100755
--- a/base/android/jni_generator/jni_generator.py
+++ b/base/android/jni_generator/jni_generator.py
@@ -124,6 +124,14 @@ def JavaDataTypeToC(java_type):
return 'jobject'
+def JavaDataTypeToCForCalledByNativeParam(java_type):
+ """Returns a C datatype to be when calling from native."""
+ if java_type == 'int':
+ return 'jni_int_wrapper'
+ else:
+ return JavaDataTypeToC(java_type)
+
+
def JavaReturnValueToC(java_type):
"""Returns a valid C return value for the given java type."""
java_pod_type_map = {
@@ -655,7 +663,7 @@ class InlHeaderFileGenerator(object):
def GetContent(self):
"""Returns the content of the JNI binding file."""
template = Template("""\
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Copyright (c) 2014 The Chromium Authors. All rights reserved.
bulach 2014/05/02 16:55:56 probably better to leave this as is?
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -672,6 +680,8 @@ class InlHeaderFileGenerator(object):
${INCLUDES}
+#include "base/android/jni_int_wrapper.h"
+
// Step 1: forward declarations.
namespace {
$CLASS_PATH_DEFINITIONS
@@ -932,9 +942,10 @@ Java_${FULLY_QUALIFIED_CLASS}_${INIT_NATIVE_NAME}(JNIEnv* env, jclass clazz) {
for param in native.params])
def GetCalledByNativeParamsInDeclaration(self, called_by_native):
- return ',\n '.join([JavaDataTypeToC(param.datatype) + ' ' +
- param.name
- for param in called_by_native.params])
+ return ',\n '.join([
+ JavaDataTypeToCForCalledByNativeParam(param.datatype) + ' ' +
+ param.name
+ for param in called_by_native.params])
def GetForwardDeclaration(self, native):
template = Template("""
@@ -978,6 +989,13 @@ static ${RETURN} ${NAME}(JNIEnv* env, ${PARAMS_IN_DECLARATION}) {
}
return template.substitute(values)
+ def GetArgument(self, param):
+ return param.name + ".asJint()" if param.datatype == 'int' else param.name
bulach 2014/05/02 16:55:56 how about we make the jni_generator take a debug o
+
+ def GetArgumentsInCall(self, params):
+ """Return a string of arguments to call from native into Java"""
+ return [self.GetArgument(p) for p in params]
+
def GetCalledByNativeValues(self, called_by_native):
"""Fills in necessary values for the CalledByNative methods."""
if called_by_native.static or called_by_native.is_constructor:
@@ -992,7 +1010,7 @@ static ${RETURN} ${NAME}(JNIEnv* env, ${PARAMS_IN_DECLARATION}) {
called_by_native)
if params_in_declaration:
params_in_declaration = ', ' + params_in_declaration
- params_in_call = ', '.join(param.name for param in called_by_native.params)
+ params_in_call = ', '.join(self.GetArgumentsInCall(called_by_native.params))
if params_in_call:
params_in_call = ', ' + params_in_call
pre_call = ''

Powered by Google App Engine
This is Rietveld 408576698